WHCSRL 技术网

c语言 EOF用法

1.求a+b
在这里插入图片描述
2.求t个a+b
在这里插入图片描述
3.求未知个a+b,(涉及EOF)
在这里插入图片描述
EOF的用法
EOF适用范围:
针对多组输入输出且数据没有固定数据量问题:采用while(scanf("%%d",&n) != EOF)
结束EOF介绍
EOF全称是End Of File(C语言标准函数库中表示文件结束符),通常在文本的最后表示资料结束。C语言中数据都是以字符的ASCII代码值来存放的。ASCII代码值得范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志,我们可以把EOF作为‘-1’理解
这里就需要了解一下scanf():
scanf的语法定义: scanf("<格式化字符串>",<地址表>);
scanf()函数 返回成功:返回赋值的数据项数,出错:返回EOF。注意scanf()函数返回int型
例如
scanf("%%d %%d",&a,&b),如果a、b均赋值成功返回值为2,只是a赋值成功返回1,a、b都不成功返回0,出错的时候返回EOF。(EOF不是一个字符,它被定义为是int类型的一个负数-1。)
如果我们输入了一个值那么返回就为1,
即 1 != -1 ,
即 1 != EOF ,
即 scanf("%%d",&n) != EOF
即 while(scanf("%%d",&n) != EOF) 中while(A)语句中的事件A是正确即1,while(1){ },进行下一循环。
即只要输入不出错,while为死循环,但可以手动结束

接下来讲怎么结束输入
:没有说固定的数据量,只给出以某一特定标识符作为结束标志,结束输入数据。常见是以输入0作为结束标志。
:没有说固定的数据量,结束没有固定标识符,以手动结束输入循环。

分析一:以某一特定结束符作为终止循环的条件,通常是将0作为终止标志。
解决方法:while( scanf("%%d",&n) != EOF, n ){ }
(我们来看括号中的n代表的是若我们在前一句输入的是0,即此时n = 0即表达式需要结束循环,即实现了结束多次输入数据。)
若是-1作为终止标志,可以这样写while( scanf("%%d",&n) != EOF, n != -1) { }
(输入-1时,n此时==-1,则表达式n != -1为 -1,结束循环。)
“,”号运算符作用:while后的括号为循环体的执行条件,其值取逗号运算后的值。
分析二:无固定结束标识符,手动结束多组输入。
解决方法:在终端(黑框)中手动输入时,系统并不知道什么时候到达了所谓的“文件末尾”,因此需要用*<Ctrl + z>组合键然后按 Enter 键*的方式来告诉系统已经到了EOF,这样系统才会结束while.
如上面第3题

4.求未知个a+b(a,b都不为0)
在这里插入图片描述
在这里插入图片描述
!

推荐阅读