用for循环连续读入值的时候发现**scanf("%d",&n)与scanf("%d\n",&n)**有区别。
例如:
# include <stdio.h>
# include <iostream>
using namespace std;
int main()
{ int n,a;
scanf("%d",&n);
for(int i=0;i<n;++i){
scanf("%d",&a);
}
printf("end");
return 0;
}
在这个程序中输入n=5,然后从键盘依次读入1 2 3 4 5时可以正常进行并打印end。
如
而如果在scanf的“ ”中加入\n时输入异常{scanf("%d\n",&a)}。
例如程序
# include <stdio.h>
# include <iostream>
using namespace std;
int main()
{ int n,a;
scanf("%d",&n);
for(int i=0;i<n;++i){
scanf("%d\n",&a);
}
printf("end");
return 0;
}
在此更改后的程序中依旧输入n=5,从键盘读入1 2 3 4 5后发现并不能按照修改前的程序输出end,而应该再次从键盘读入一个数字后正常进行。
如上图所示,printf函数无反应。
而当键入6并回车后
如上图所示程序继续执行,printf函数正常打印end字符。
因此请问
scanf("%d\n",&a)与scanf("%d",&a)之间的区别。