|
发表于 2018-7-5 11:53:10
|
显示全部楼层
这是我的理解:
在scanf("%d\n",&a[n])中用\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个数才结束输入 |
|