这里主要谈一下多组数据输入的问题
关于杭电OJ上的题目大多都是要求多组数据输入
多组数据输入的方式很灵活
1.while(scanf(“%d”,&a)!=EOF)
EOF是end of file的缩写,读入数据存在文件中,然后一组组的读出,直到读到文件末尾
EOF除了表示文件结尾,EOF还可以表示标准输入的结尾。
!=EOF” 表示文件还没有结束“=EOF” 表示到文件末尾了
这些我刚开始也没看懂
我的理解是EOF为一个常量其中!=EOF等价于!=-1 (EOF在定义在stdio.h中EOF为常量其值为-1)
scanf读取正确的数值,返回整数,比如scanf(“%d%d”,&x, &y),scanf返回2;scanf(“%d”,&x)返回1
也就是说,只要有数据输入,其值为正数,便满足!=-1,所以while中的逻辑值为真,执行大括号中的文件。
2.while(~scanf(“%d”,&a))
这也可以表示多组数据,其实~我也讲过的,有取反的意思,也可以表示析构函数。
它的效果与while(scanf(“%d”,&a)!=EOF)一样