c语言新手求教
在学习冒泡法的时候我发现我明明定义了一个十个元素的数组,但在执行程序输入数组元素时却需要输入11个元素,该怎么解释呢?scanf的引号中的 '\n' 去掉,不要进行格式控制 BngThea 发表于 2018-7-2 09:09
scanf的引号中的 '\n' 去掉,不要进行格式控制
正解,能详细解释一下吗{:9_241:} 这是我的理解:
在scanf("%d\n",&a)中用\n(空白符)结尾时,在输入第一个值得时候,已经将值放到了变量的地址中,但scanf会跳过\n去读下一个字符。scanf会再读一个数,所以要再输入一个数。此时回车,表示输入结束,scanf执行完。
第二次输入的数可以用第二个scanf来接收:
如:
#include "stdio.h"
main()
{
int a,b;
printf("input the data\n");
scanf("%d\n",&a);
scanf("%d",&b); //注意,这里没有\n
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
输入:
1
2
输出:
1
2
第二次输入的数值被第二个scanf接收到了,由于第二个scanf中没有\n,所以不用在输入第三个数值,直接回车就可以将输入的两个数值打印出来
如果上面的程序中第二个scanf中有\n(类似你程序中的for循环,每次执行的scanf都是带有\n的)
如:
#include "stdio.h"
main()
{
int a,b;
printf("input the data\n");
scanf("%d\n",&a);
scanf("%d\n",&b);
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
输入:
1
2
3
输出:
1
2
第二次输入的数值也给了变量b,但是scanf("%d\n",&b);语句中有\n,所以还要在输入一个数值,才表示输入结束
正好对应你for循环中明明输入10个数,却要输入第11个数才结束输入
页:
[1]