这个原因是由于输入数字之后的回车符号引起的;可以在scanf ("%c", &option)之前,或者scanf ("%d", &sum)之后加一句fflush(stdin)来刷新缓冲区进行解决,也可以用getchar()获得一个字符来解决该问题。
scanf("%d",&n)函数返回值 为实际成功输入变量的个数。 这里只有一个变量n,输入成功则为1 出错时,比如遇到EOF 会返回-1 所以用 scanf("%d",&n)==1 可以判断输入是否结束。至于你的,并没有看到输入函数,应该一次输入也不行的。n是随机值 ...
include <stdio.h>int main(){int n,i,a,b;int d[100];scanf("%d",&n);for(i=0;i<n;i++){scanf("%d %d",&a,&b);d[i]=(a*b);} for(i=0;i<n;i++){printf("%d\n",d[i]);}return 0;}
..,a[4][1],...a[0][4],a[1][4],...,a[4][4].--- 如果是:for (i=0;i<5;i++) for(j=0;j<5;j++) scanf("%d",&a[j][i] );输入 次序 是 按列 --- 如果是 for (i=0;i<5;i++)for(j=0;j<5;j++) scanf("%d",&a[i][j]);输入次序是 按行。
scanf("%s",a[i]); 用%s 的话遇到空格或回车就会停止读取的了- - 连读都读不进去,怎么统计,话说那个空格还在缓存里面,所以后续的scanf根本都没有读取- - gets的话是遇见回车才停止读取。。。另外呢 "1234567890"上面那个字符串的长度是10,但是字符数组的长度是11,因为上面的字符串实际...
由于scanf("%d",&n);只能识别“2回车”中的2,而回车被送入gets中,所以gets是读入了两次,一次是回车,一次是你输入的。而如果你输入的是如2 asd回车则输出一次asd,再打入如sddh回车则在输出一次sddh 这就是两次了 再看看别人怎么说的。
缓冲区就是你输入的时候把输入的放到缓冲区里面,虽然已经赋值过了,但是缓存区里面的东西可能会影响你下次的输入,比如 include<stdio.h> main(){ int i;char b[10];for(i=0;i<5;i++){ printf("input again:");scanf("%c",&b[i]);fflush(stdin);} for(i=0;i<5;i++)printf("%...
这个主要是看&&的应用 &&的2边都为真 结果为真 所以最少执行1次 scanf("%d",&y);的时候输入123 最多执行3次 当x的值分别为 0,1,2的时候执行 当x=3的时候x<3的结果为假了
循环语句如果是有多条,这多条就要放到一个大括号里面去!如果循环语句只有一条,则不需要加!for (i=0;i<=2;i++)for (j=0;j<=2;j++) 这个循环和他的循环语句构成的是一条语句!故不加 scanf("%d",&a[i][j]);
当i和j都成功读入值时循环 补充资料:scanf返回值 以问题中为例子:若i,j都成功读入值,返回2 若i没得到正确值(如输入非数值),直接退出读取,返回0 若i得到正确值,而j没得到正确值,返回1 参考资料:c语言scanf()的返回值