scanf("%d%d",&a,&n)的返回值是2,这返回值是看你输入的数据有几个;while(scanf("%d%d",&a,&n)!=EOF)表示当输入不为空时执行循环;while(scanf("%d%d",&a,&n)==2)表示输入有两个数据时就循环否则结束,改为while(scanf("%d%d",&a,&n))后你的while就没有结束标志,相当于死循环啦,当然会超时啦;
scanf("%d%d",&a,&n)
默认是返回2的,返回其他要不是用户中断就是程序异常中断,当然不会超时啦。
你应该用while(scanf("%d%d",&a,&n)!=EOF)或者按题目意思可能有:
while(scanf("%d%d",&a,&n)&&a&&n)等等~~
嗯。。就是这样的。。都写成while(scanf ("%d%d",&n,&m) != EOF)..都写“!= EOF”就可以了。。而且若没有“&”,编译会通过。但是交上oj上就是runtime error。。
因为就算结束了,scanf("%d%d",&a,&n)也是返回EOF,即-1,而不是0,所以应该这样写:
while(scanf("%d%d",&a,&n)!=EOF){...}
scanf("%d%d",&a,&n)返值2返值看输入数据几;while(scanf("%d%d",&a,&n)!=EOF)表示输入空执行循环;while(scanf("%d%d",&a,&n)==2)表示输入两数据循环否则结束改while(scanf("%d%d",&a,&n))while没结束标志相于死循环啦超啦;