EOF和0区别

题目描述

KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的X形图案。

输入描述:

多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。

输出描述:

针对每行输入,输出用“*”组成的X形图案。

示例1

输入:

5

复制输出:

*   ** * *  * * 
*   *

我作答的代码如下:

#include<stdio.h>
int main()
{int a;while (scanf("%d\n", &a)!=0){for (int n = 0; n < a; n++){for (int m = 0; m < a; m++){if (n == m){printf("*");}else if (m == a - n - 1){printf("*");}else{printf(" ");}}printf("\n");}}return 0;
}

实际运行结果如下:

这里就涉及EOF和0的区别:

C语言中,scanf函数用于从标准输入(通常是键盘)读取格式化的输入。scanf的返回值是成功读取并赋值的输入项的数量,或者当遇到输入结束(EOF)或输入失败时返回EOF。

  1. while (scanf("%d", &n) != EOF)

这个循环会一直执行,直到scanf遇到文件结束符(EOF)为止。每次循环,它会尝试从标准输入读取一个整数,并将其存储在变量n中。如果成功读取一个整数,scanf返回1(因为读取了一个输入项),循环继续。如果遇到文件结束符或输入失败,scanf返回EOF,循环终止。

这个循环通常用于从用户那里读取多个整数,直到用户决定结束输入(例如,通过按下Ctrl+D(在Unix/Linux系统中)或Ctrl+Z(在Windows系统中))。

  1. while (scanf("%d\n", &n) != 0)

这个循环也会一直执行,直到scanf返回0为止。但是,这里有一个细微的差别。在格式字符串"%d\n"中,\n表示一个换行符。这意味着scanf不仅会尝试读取一个整数,还会尝试读取一个换行符。如果用户输入了一个整数但没有紧接着输入一个换行符,scanf会阻塞,等待用户输入换行符。只有当用户输入了一个整数并按下回车键(产生换行符)时,scanf才会返回1,表示成功读取了一个整数。如果用户直接输入了EOF(例如,通过按下Ctrl+D或Ctrl+Z),则scanf会返回EOF,循环会终止。

使用"%d\n"作为格式字符串可能会导致用户感到困惑,因为他们需要在每个整数之后输入一个换行符。此外,如果在程序中其他地方也使用标准输入,并且期望能够读取不带换行符的输入,这可能会导致问题。

总的来说,推荐使用while (scanf("%d", &n) != EOF),因为它更加直观,并且不需要用户在每个输入之后都输入一个换行符。

所以源代码修改以下就是:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/669313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你的歌声婉转入云霄

可爱的一朵玫瑰花 - 吕继宏 可爱的一朵玫瑰花塞地玛丽亚 可爱的一朵玫瑰花塞地玛丽亚 那天我在山上打猎骑着马&#xff08;人善被人欺马善被人骑&#xff09; 正当你在山下歌唱婉转入云霄 歌声使我迷了路 我从山坡滚下 哎呀呀 你的歌声婉转入云霄 强壮的青年哈萨克伊万杜达尔 …

【八大排序】选择排序 | 堆排序 + 图文详解!!

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C语言进阶之路 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 一、选择排序1.1 基本思想1.2 算法步骤 动图演示1.3 代码实现1.4 选择排序特性总结 二…

C/C++内存管理的底层调用逻辑

✨Blog&#xff1a;&#x1f970;不会敲代码的小张:)&#x1f970; &#x1f251;推荐专栏&#xff1a;C语言&#x1f92a;、Cpp&#x1f636;‍&#x1f32b;️、数据结构初阶&#x1f480; &#x1f4bd;座右铭&#xff1a;“記住&#xff0c;每一天都是一個新的開始&#x1…

【TCP/IP】用户访问一个购物网站时TCP/IP五层参考模型中每一层的功能

当用户访问一个购物网站时&#xff0c;网络上的每一层都会涉及不同的协议&#xff0c;具体网络模型如下图所示。 以下是每个网络层及其相关的协议示例&#xff1a; 物理层&#xff1a;负责将比特流传输到物理媒介上&#xff0c;例如电缆或无线信号。所以在物理层&#xff0c;可…

vue3项目实现预览图片、旋转图片功能

一、需求&#xff1a; 在点击图片时&#xff0c;能预览大图&#xff0c;弹出一个包含旋转图片功能按钮的弹窗。用户可通过点击按钮实现对图片的旋转操作 二、思路&#xff1a; 点击图片预览&#xff1a; 用户通过点击图片触发预览功能。接收图片的 URL&#xff0c;弹出一个模…

【GameFramework框架】四、GameFramework框架内置模块

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

问题:下列关于海关统计项目的表述,正确的有:A.进出境货物的统计重量和数量应以报关单位申报的重量和数 #笔记#职场发展#媒体

问题&#xff1a;下列关于海关统计项目的表述&#xff0c;正确的有&#xff1a;A&#xff0e;进出境货物的统计重量和数量应以报关单位申报的重量和数 下列关于海关统计项目的表述&#xff0c;正确的有&#xff1a; A&#xff0e;进出境货物的统计重量和数量应以报关单位申报的…

头歌C++语言之数学运算练习题(四)

目录 第1关:计算自行车踏板圆杆的最小半径 任务描述 编程要求 第2关:两条直线的夹角 任务描述 相关知识 setprecision(n) 编程要求 任务描述 相关知识

echarts使用之地图(五)

1 基本使用 百度地图 API : 使用百度地图的 api , 它能够在线联网展示地图 , 百度地图需要申请 ak 矢量地图 : 可以离线展示地图 , 需要开发者准备矢量地图数据。本文使用该方式。 json格式的数据如下&#xff1a; 格式参照&#xff1a;GeoJSON <!DOCTYPE html&…

element-plus 更换主题色

由于跟着官方文档可能出现报错[plugin:vite:css] [sass] Module loop: this module is already&#xff0c;于是写一份避坑指南。 1. 安装sass 基于vite的项目默认不支持css预处理器&#xff0c;需要开发者单独安装 npm i sass -D2. 准备定制化的样式文件 /* 只需要重写你需要…

Java实现数据可视化的智慧河南大屏 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 A4.2 数据模块 B4.3 数据模块 C4.4 数据模块 D4.5 数据模块 E 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的数据可视化的智慧河南大屏&#xff0c;包含了GDP、…

spring boot bean的生命周期

spring boot bean的生命周期 Bean创建和销毁过程中调用的顺序Bean创建过程方法调用顺序Bean销毁过程方法调用顺序BeanPostProcessorBeanPostProcessor内部执行顺序BeanPostProcessor子类及其调用顺序相关因素 bean的扩展点ApplicationContextAwareApplicationContextInitialize…

泰克示波器(TBS2000系列)保存功能使用

目录 1.1 Save/Recall按钮1.2 保存动作1.3 文件格式1.4 保存 在使用示波器时&#xff0c;测量后的结果我们常常需要记录下来&#xff0c;大部分情况我们是拍照记录&#xff0c;单图像往往不清晰&#xff0c;这时使用示波器专用的保存功能&#xff0c;插入U盘即可保存&#xff0…

STM32--SPI通信协议(3)SPI通信外设

前言 硬件SPI&#xff1a;通过硬件电路实现&#xff0c;所以硬件SPI速度更快&#xff0c;有专门的寄存器和 库函数 &#xff0c;使用起来更方便。 软件SPI&#xff1a;也称模拟SPI&#xff0c;通过程序控制IO口电平模拟SPI时序实现&#xff0c;需要程序不断控制IO电平翻转&am…

【无标题】summarizations onMysql

how to clear the screen of mysql 1.1 !clear 1.2 ctrl l

二级C语言笔试1

(总分96,考试时间90分钟) 一、选择题 下列各题A)、B)、C)、D)4个选项中&#xff0c;只有1个选项是正确的。 1. 有以下程序&#xff1a; void sum(int a[]) a[0]a[-1]a[1]; main() int a[10]1,2,3,4,5,6,7,8,9,10; sum(&a[2]); printf(…

JAVA字节流的两个重要子类FileOutputStream、FileInputStream

字节流&#xff0c;字符集&#xff0c;字符流 因为它们都是抽象类&#xff0c;所以要学习它们的子类 字节流的结构: FileOutputStream 操作本地文件的字节输出流&#xff0c;可以把程序中的数据写入本地文件。 书写步骤&#xff1a; 创建字节输出流对象写数据释放资源 演示:…

C语言开发单片机为什么大多数都采用全局变量的形式?

C语言开发单片机为什么大多数都采用全局变量的形式&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&…

STM32F4学习

F4系统架构 8个主控总线7个被控总线 主控总线 Cortex-M4内核 I总线Cortex-M4内核 D总线Cortex-M4内核 S总线DMA1存储器总线DMA2存储器总线DMA2外设总线以太网DMA总线USB OTG HS DMA总线 被控总线 内部FLASH ICode总线内部FLASH DCode总线主要内部SRAM1&#xff08;112KB&a…

【PostgreSQL内核学习(二十六) —— (共享数据缓冲区)】

共享数据缓冲区 概述共享数据缓冲区管理共享缓冲区管理的核心功能包括:共享数据缓冲区的组织结构初始化共享缓冲池BufferDesc 结构体InitBufferPool 函数如何确定请求的数据页面是否在缓冲区中?BufferTag 结构体RelFileNode 结构体ForkNumber 结构体ReadBuffer_common 函数怎…