C语言编程问题

#include<stdio.h>
int main(){
int a,b;
while(scanf("%d%d",&a,&b) != EOF){
printf("%d\n", a+b);
}
return 0;
}
对于上述程序,有几个问题不懂:
1 main 函数前可否改成void类型
2 EOF是文件结束的意思,但和a,b有何关系?这里为啥要用它,不能直接舒服a,b的值吗?是不是和题目又关,题目是这样的:The input consists of N lines, each of which contains two integers A and B, separated by a space.

For each pair of A and B, you should first calculate the sum of A and B and then print the result to the stdout on a single line.
那能不能去掉EOF,而直接写scanf呢?还有那两句英语是什么意思呢,有没有特定要求呢

1、mian()是函数,是从操作系统调用的。既然是函数也可以有返回值。

int main(){.......}表示main执行完成后返回一整型数。故return 0;就是main()执行完后返回一个0.

2、如果把int main{...}改为 void mian{...}就表示不返回数据,如果这样就必须去掉语句return 0;否则出错

3、while循环是要求用户输入两个整数,然后打印它们的和。不断的执行,直到用户按 ctrl+Z 才退出。所以这里EOF不是文件结束的意思,表示用户必须按Ctrl+Z 才能退出循环

下图是该程序的执行...

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-11
main是一个程序的入口和出口。它返回的值没有函数可以用到。因为遇到return这个函数就结束,主函数的结束意味着程序的结束。所以可以改成void,不过要把return 0;删掉。而文件结束是EOF表面意思,实际在程序里会翻译成-1,当a,b赋值不成功也会返回-1,scanf("%d%d",&a,&b) != EOF就是ab赋值成功就可执行下面语句。你也可以把EOF改成-1试试,也可以的
第2个回答  2009-04-11
1.main前面可以写成void,表示没有返回值,即没有return语句。
2.EOF是 end of file 的意思,当你输入数据的时候不想输入了,
你可以 ctrl+d或者 ctrl+z ,表示输入结束
其实是一种高度抽象的概念,把键盘的输入抽象到文件的层次,这样
你用文件的操作 来对待stdin流

其实是可以去掉eof的,在这里eof就是表示结束条件的,你当然可以
找个别的条件结束,比如当a和b都是0的时候结束,或者,做够了一定数量的
a+b结束都是可以的,或者你没有结束条件,当你点那个叉号的时候结束