杭电acm1089题 求高手用C讲解 http://acm.hdu.edu.cn/showproblem.php?pid=1089
答案:4 悬赏:10
解决时间 2021-03-12 14:15
- 提问者网友:焚苦与心
- 2021-03-11 14:17
杭电acm1089题 求高手用C讲解 http://acm.hdu.edu.cn/showproblem.php?pid=1089
最佳答案
- 二级知识专家网友:未来江山和你
- 2021-03-11 14:32
#include
int main()
{
int a,b;
while( scanf("%d%d",&a,&b)==2)//scanf()函数的返回值是它读取到的数据数目,其它情况返回-1
printf("%d\n",a+b);
return 0;
}追答
追问:意思是那个数除了-1都是可以的 像322100
我刚试了一下 直接写 while( scanf("%d%d",&a,&b))也是对的啊就不用要==2
追答:while循环是这样判断是否继否执行循环体的,只要表达式的值非零,它都会一直执行,不管你是-1 ,2, 3,-11661 ………………只要不是0它就继续下去,所以,如果按楼主所说,那些数确实是可以继续循环的, 像前面几位回答的,EOF是一个标志,是判断是否读取到文件尾的一个标志,我们可以认为EOF =-1 ,如果scanf()函数返回一个-1,说明读取到了文件尾,此时要结束循环,那么-1!= EOF这个条件为假,所以自然就跳出了循环。
追问:哦 明白了很多再弱弱的问下 什么情况下scanf可以返回-1呢
int main()
{
int a,b;
while( scanf("%d%d",&a,&b)==2)//scanf()函数的返回值是它读取到的数据数目,其它情况返回-1
printf("%d\n",a+b);
return 0;
}追答
追问:意思是那个数除了-1都是可以的 像322100
我刚试了一下 直接写 while( scanf("%d%d",&a,&b))也是对的啊就不用要==2
追答:while循环是这样判断是否继否执行循环体的,只要表达式的值非零,它都会一直执行,不管你是-1 ,2, 3,-11661 ………………只要不是0它就继续下去,所以,如果按楼主所说,那些数确实是可以继续循环的, 像前面几位回答的,EOF是一个标志,是判断是否读取到文件尾的一个标志,我们可以认为EOF =-1 ,如果scanf()函数返回一个-1,说明读取到了文件尾,此时要结束循环,那么-1!= EOF这个条件为假,所以自然就跳出了循环。
追问:哦 明白了很多再弱弱的问下 什么情况下scanf可以返回-1呢
全部回答
- 1楼网友:污到你湿
- 2021-03-11 18:08
#include <stdio.h>
int main ()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
printf("%d\n",a+b);
}
return 0;
}追答
追问:终于等到了 这个我在网上也见到了 就是不明白那个EOF是啥东西 我也没学呢
看看还有没有别的方法了
追答:EOF指的是end of file
追问:我刚试了一下 直接写 while( scanf("%d%d",&a,&b))也是对的啊 不理解不理解
追答:C++里可以不用eof
int main ()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
printf("%d\n",a+b);
}
return 0;
}追答
追问:终于等到了 这个我在网上也见到了 就是不明白那个EOF是啥东西 我也没学呢
看看还有没有别的方法了
追答:EOF指的是end of file
追问:我刚试了一下 直接写 while( scanf("%d%d",&a,&b))也是对的啊 不理解不理解
追答:C++里可以不用eof
- 2楼网友:逐風
- 2021-03-11 16:30
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
printf("%d\n",a+b);
}
return 0;
}
追问:我刚试了一下 直接写 while( scanf("%d%d",&a,&b))也是对的啊 不理解不理解
追答:嗯,是,那是因为还没到end of file,而while( scanf("%d%d",&a,&b))就是scanf("%d%d",&a,&b)一直成立啊。
#include <stdlib.h>
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
printf("%d\n",a+b);
}
return 0;
}
追问:我刚试了一下 直接写 while( scanf("%d%d",&a,&b))也是对的啊 不理解不理解
追答:嗯,是,那是因为还没到end of file,而while( scanf("%d%d",&a,&b))就是scanf("%d%d",&a,&b)一直成立啊。
- 3楼网友:山有枢
- 2021-03-11 14:54
上面的都答的很好
我来补充一个你的追问吧
scanf() 返回的成功读取的数据的个数
所以 while( scanf("%d%d",&a,&b)==2) 就是判断是不是成功读取了2个数字
当scanf()遇到End-of-File的时候会特殊的返回-1,也就是EOF
所以 while(scanf("%d%d",&a,&b)!=EOF) 就是判断是不是还没有读到EOF
在这个题目里面,两种判断都是成立的
至于你提出的 while(scanf("%d%d",&a,&b)) 则是判断成功读取的个数是不是非0,
在本题里面并不是那么适合,因为只有读取整数失败而没有遇见EOF的时候才返回0
追问:你这么讲 是不是 当我输入的数太多的时候 他们沾满了所有的文件 文件包含不了了 就强制终止
追答:不对而是当遇到输入流包含了非数字信息的时候就会终止
我来补充一个你的追问吧
scanf() 返回的成功读取的数据的个数
所以 while( scanf("%d%d",&a,&b)==2) 就是判断是不是成功读取了2个数字
当scanf()遇到End-of-File的时候会特殊的返回-1,也就是EOF
所以 while(scanf("%d%d",&a,&b)!=EOF) 就是判断是不是还没有读到EOF
在这个题目里面,两种判断都是成立的
至于你提出的 while(scanf("%d%d",&a,&b)) 则是判断成功读取的个数是不是非0,
在本题里面并不是那么适合,因为只有读取整数失败而没有遇见EOF的时候才返回0
追问:你这么讲 是不是 当我输入的数太多的时候 他们沾满了所有的文件 文件包含不了了 就强制终止
追答:不对而是当遇到输入流包含了非数字信息的时候就会终止
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |