首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

故意输入1,2,哪位高手能解释为什么不停地输出1 45

2012-09-03 
故意输入1,2,谁能解释为什么不停地输出1 45?#include cstdio#include cstring#include cmath#includ

故意输入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;} 

热点排行