| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 18809 人关注过本帖
标题:关于while(scanf("%d %d",&a,&b)!=EOF)
只看楼主 加入收藏
mey
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:137
专家分:134
注 册:2009-11-19
结帖率:100%
收藏
 问题点数:0 回复次数:12 
关于while(scanf("%d %d",&a,&b)!=EOF)
程序代码:
#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;
    system("pause");
}

这里为什么while(scanf("%d %d",&a,&b)!=EOF)跟while(scanf("%d %d",&a,&b)==2)作用是一样?都是ctrl+z后结束.. EOF应该是-1吧 为什么后着也能跟前者一样正常运行?
搜索更多相关主题的帖子: 效果图 
2012-05-08 07:35
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:0 
EOF是文件结束流  这个一般在ACM比赛中要求输入数据有多组时这么做

编程之路定要走完……
2012-05-08 07:40
mey
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:137
专家分:134
注 册:2009-11-19
收藏
得分:0 
这个知道的...我不明白是为什么while(scanf("%d %d",&a,&b)==2)跟while(scanf("%d %d",&a,&b)!=EOF)都是ctrl+z结束
2012-05-08 07:48
巴克
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:199
注 册:2012-2-8
收藏
得分:0 
因为scanf函数有返回值
程序代码:
#include<stdio.h>
int main()
{
    int i,j;
    printf("%d\n",scanf("%d%d",&i,&j));
    return 0;
}   
/*
scanf函数返回的是输入的数据的个数,什么都不输入代表-1
在scanf("%d %d",&a,&b)==2 中如果输入两个数字那么scanf函数会返回一个2
如果ctrl+Z 那么scanf函数返回-1
因为-1 != 2 所以循环终止
至于while(scanf("%d %d",&a,&b)!=EOF)为什么也有这个效果,原因是一样的
EOF = -1
输入两个数字 scanf返回结果2 输入ctrl+z 返回 -1
-1 == -1 循环终止
楼主将代码运行一下看看.
*/
2012-05-08 08:10
巴克
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:199
注 册:2012-2-8
收藏
得分:0 
个人认为还是while(scanf("%d%d",&i,&j)!=EOF)好一点,如果输入三个数据甚至更多的数据那不就......
2012-05-08 08:13
mey
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:137
专家分:134
注 册:2009-11-19
收藏
得分:0 
回复 4楼 巴克
懂了。谢谢。
2012-05-08 08:13
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
收藏
得分:0 
返回值为参数的个数-1
2012-05-08 08:24
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
收藏
得分:0 
一般ACM比赛都是这样用的
for(;~scanf("%d %d",&a,&b);)
2012-05-08 08:27
巴克
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:199
注 册:2012-2-8
收藏
得分:0 
回复 7楼 love24114
ctrl+Z代表的是输入结束,这个时候scanf函数返回-1
2012-05-08 08:27
我是菜鸟……
Rank: 1
来 自:湖北工业大学
等 级:新手上路
帖 子:17
专家分:0
注 册:2013-3-22
收藏
得分:0 
2013-03-31 12:27
快速回复:关于while(scanf("%d %d",&a,&b)!=EOF)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.079432 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved