故意输入1,2,谁能解释为什么不停地输出1 45?
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std;
const int N = 500005;
int main()
{
int a, b;
while(scanf ("%d%d", &a, &b)!=EOF)
printf ("%d %d\n", a, b);
return 0;
}
故意输入1,2,谁能解释为什么不停地输出1 45?
[解决办法]
1被正确读入,所以输出1,b没有读入,应该是个随机值,因为你没有用flushall()清空输入流,所以不停地输出。
[解决办法]
此后循环继续,scanf()试图从缓冲读取内容,此时IO缓冲指针指向',',所以再也没有符合scanf()要求的数字,所以此后a,b的值一直不变才对.
[解决办法]
修改了一下程序,比较方便看清楚一些
- C/C++ code
#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <iostream>using namespace std;const int N = 500005;int main(){ int a, b; int i; printf ("%d %d\n", a, b); while((i=scanf("%d%d", &a, &b))!=EOF) { printf("i=%d\n", i); printf ("%d %d\n", a, b); } return 0;}