c程序提交ACM运行超时问题。

2025-01-04 00:44:44
推荐回答(5个)
回答1:

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就没有结束标志,相当于死循环啦,当然会超时啦;

回答2:

scanf("%d%d",&a,&n)
默认是返回2的,返回其他要不是用户中断就是程序异常中断,当然不会超时啦。
你应该用while(scanf("%d%d",&a,&n)!=EOF)或者按题目意思可能有:
while(scanf("%d%d",&a,&n)&&a&&n)等等~~

回答3:

嗯。。就是这样的。。都写成while(scanf ("%d%d",&n,&m) != EOF)..都写“!= EOF”就可以了。。而且若没有“&”,编译会通过。但是交上oj上就是runtime error。。

回答4:

因为就算结束了,scanf("%d%d",&a,&n)也是返回EOF,即-1,而不是0,所以应该这样写:
while(scanf("%d%d",&a,&n)!=EOF){...}

回答5:

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没结束标志相于死循环啦超啦;