逐层分析while((scanf("%d",&a))!=EOF)
用这种循环的写法,可以解决一些需要循环到文件结束(也即文件不结束就循环)的问题。
我们先来看下这个句子,while((scanf("%d",&a))!=EOF)
逐层分析:
最外层:
是我们熟悉的while循环的一部分,
while循环:while(表达式){循环体}中的while(表达式)
内层(从左到右):
Ⅰ.scanf()函数语句
附:scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件(stdio.h)里,因此在使用scanf函数时要加上#include <stdio.h>。它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。(参考:百度百科)
Ⅱ."!=“C语言中的运算符号,意为"不等于”。
Ⅲ.EOF,是一个计算机术语,全称为"End Of File",也就是文件结束符
附:在C语言在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以[字符]的[ASCII]代码值的形式存放。我们知道,[ASCII代码值]的范围是0~127,不可能出现-1,因此可以用EOF作为文件结束标志。(参考:百度百科)
在逐层分析之后,来看一下一个习题,加深一下对while((scanf("%d",&a))!=EOF)的认识:
题目难度适中,建议先尝试写一下,
题目:计算a+b
输入要求:输入包括两个正整数a,b(1<= a, b<= 10^9),输入数据包括多组。
输出要求:输出a+b的结果。
C语言:
#include<stdio.h> int main() { int a,b,sum; while(scanf("%d%d",&a,&b) != EOF) { sum = a + b; printf("%d\n",sum); } return 0; } }
运行测试:
2 3 5 10 20 30 ^Z -------------------------------- Process exited after 6.876 seconds with return value 0 请按任意键继续. . .
让此类循环结束,需要我们手动键入ctrl+z 再加enter结束(尝试了几款编程软件,dev-c++是适用的,其它编程软件可自行尝试)。
作者:Code_流苏
如有错误,还望指正!
最后,希望大家多多点赞支持!