逐层分析while((scanf("%d",&a))!=EOF)

举报
Code_流苏 发表于 2022/04/17 12:20:50 2022/04/17
【摘要】 逐层分析while((scanf("%d",&a))!=EOF)

逐层分析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_流苏
如有错误,还望指正!
最后,希望大家多多点赞支持!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。