C语言多组输入问题

news2024/11/24 8:25:51

目录

前言

scanf返回值介绍:

EOF又是什么?

一、scanf的返回值等于输入参数的个数

二、scanf的返回值不等于EOF

三、对scanf的返回值按位取反(~)

如何结束?


前言

如果您经常刷题就一定碰到过多组输入的问题,小编这里会三种多组输入的方式,下面小编为您介绍三种方式以及其背后的原理!

在介绍这个之前必须得先介绍一下scanf这个函数的返回值!

scanf返回值介绍:

scanf的返回值说道,如果读取成功则返回参数的个数,否则如果读取失败则返回EOF。

EOF又是什么?

EOF是 end of file(文件接结尾) 的缩写! 它的值实际上就是 -1 !我们下面来看看:

首先写一个EOF然后鼠标右键,点开转到定义或速览定义都OK。

 

果然就是-1

一、scanf的返回值等于输入参数的个数

根据上面介绍,当scanf读取成功时,其返回值是输入参数的个数!!!当返回值 == 输入参数的个数即为真也就是1while循环不会结束,会继续读取这就实现了多组输入!

代码演示:

int main()
{
	int x = 0;
	int y = 0;
	while (scanf("%d %d", &x, &y) == 2)
	{
		printf("x = %d y = %d\n", x, y);
	}
	return 0;
}

看结果:

这里我们的参数是两个x 和 y所以等于2就好了,如果您的参数是三个那就写成3就OK了!

二、scanf的返回值不等于EOF

上面我们介绍到当scanf读取失败时,会返回EOF,那么我们可以让他读取成功时继续读取,读取失败时不要再读取了。

代码演示:

int main()
{
	int x = 0;
	int y = 0;
	while (scanf("%d %d", &x, &y) != EOF )
	{
		printf("x = %d y = %d\n", x, y);
	}
	return 0;
}

看结果:

三、对scanf的返回值按位取反(~)

通过上面我们知道,EOF实际上是-1,而上期我们说过~是操作二进制的补码,我们知道-1的补码是32个1,按位取反后就是32 个0,然后转换成原码就是0。当时0 的时候也就是假,while循环就会停止,相反就会继续读取!

代码演示:

int main()
{
	int x = 0;
	int y = 0;
	while (~scanf("%d %d", &x, &y))
	{
		printf("x = %d y = %d\n", x, y);
	}
	return 0;
}

看结果:

如何结束?

我们可能有些情况下要停止,如何结束呢?答案是:ctrl + z 就可以结束了;但小编的VS2019可能Bug 要按三次才能停下来!!!

 OK,这就是本期分享。好兄弟,我们下期再见!

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

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

相关文章

threejs纹理

个人博客地址: https://cxx001.gitee.io 前面我们介绍了各种可以用来覆盖对象的材质,也介绍了如何修改材质的颜色、关泽和不透明度,但是我们还没有详细介绍如何在材质中使用外部图片(也叫纹理). 将纹理应用于材质 1. 加载纹理并应用到网格 纹理最基础…

微信小程序,考试小程序,答题小程序,刷题小程序,知识竞赛小程序,活动答题小程序

简介 微信小程序,考试小程序,答题小程序,刷题小程序,知识竞赛小程序,活动答题小程序。题库小程序。毕业设计小程序,有前后端完整源码和数据库,易于二次开发。 还可用于考试预约,企…

创客匠人标杆客户——毛丫绘本蒋凌

蒋凌(毛丫)老师专注绘本阅读职业培训领域,举办过数百场绘本故事会、家长讲座、职业培训,培训总人数超过10万人,携手创客匠人搭建【毛丫讲绘本】线上平台。两三年时间,线上营业额突破千万,成功联…

【Vue】axios发请求下载excel--20230630

1.关键点: blob乱码传参 2.参考资料:处理blob文件流和乱码问题 https://blog.csdn.net/qq_41512902/article/details/125680531 https://blog.csdn.net/qq_38804584/article/details/109238794 3.我的代码:axios发请求下载excel js代…

【C++学习】类和对象 | 运算符重载 | 赋值运算符重载

写在前面: 上一篇文章我们学了拷贝构造,还探索了操作符重载的使用, 如果有兴趣可以去看看:http://t.csdn.cn/dkD1g 今天我们接着学习类和对象相关的知识。 目录 写在前面: 1. 运算符重载 2. 赋值运算符重载 写在…

Nginx常用模块

Nginx常用模块 文章目录 Nginx常用模块1.Nginx常用模块1.1.Nginx目录索引/下载模块1.1.1.配置autoindex语法1.1.2.autoindex配置实例1.1.3上传资源1.1.4.autoindex_exact_size配置语法1.1.5.修改配置文件1.1.6.再次访问1.1.7.修改日期1.1.8.autoindex_localtime语法格式1.1.9.修…

【C51】基于51单片机的出租车计价器设计

摘 要 随着我国经济的快速发展,出行选择乘坐出租车的人越来越多。与此同时电子信息技术的发展更新,更加准确、便捷、稳定的出租车计价收费系统随之出现。基于单片机的出租车计价系统的设计,不仅可以更加准确、稳定的反映计价情况,…

FreeRTOS—任务基础知识

文章目录 一、FreeRTOS任务特性二、FreeRTOS任务状态三、FreeRTOS任务优先级四、FreeRTOS任务实现五、任务控制块六、任务堆栈 一、FreeRTOS任务特性 简单没有使用限制(任务数量没有显示,一个优先级下可以有多个任务)支持抢占(高…

前端谷歌浏览器调试

【浏览器调试工具精讲】Chrome Dev Tools精讲,前端必看! 文章目录 命令菜单主题切换截屏窗口停放位置 常用Tabelement查找ID修改样式、样式文件定位 样式的来源如继承、自定义等让某个状态常驻如鼠标悬停全局、部分样式的的选择与取消复制样式某个样式属…

Java开发 - Canal的基本用法

前言 今天给大家带来的是Canal的基本用法,Canal在Java中常被我们用来做数据的同步,当然不是MySQL与MySQL,Redis与Redis之间了,如果是他们,那就好办了,我们可以直接通过配置来完成他们之间的主从、主主&…

【AUTOSAR】BMS开发实际项目讲解(三十)----电池管理系统电池SOH和SOE估算

电池SOH估算 关联的系统需求 Sys_Req_4004、Sys_Req_4005; 功能实现描述 SOH主要包括以下内容: SOH模块输入信息 序号 参数 说明 1 满电电压 4.14V 3 电芯OCV曲线 [CELL] 4 充放电循环次数 [CELL] 2 电芯循环衰减数据表 [CELL] SOH算法 ID Descr…

在docker中使用tomcat

检查本地操作系统版本: [rootnode ~]# cat /etc/os-release NAME"CentOS Linux" VERSION"7 (Core)" ID"centos" ID_LIKE"rhel fedora" VERSION_ID"7" PRETTY_NAME"CentOS Linux 7 (Core)" ANSI_COLO…

第8届Python编程挑战赛初赛真题剖析-2022年全国青少年信息素养大赛

[导读]:超平老师计划推出《全国青少年信息素养大赛Python编程真题解析》50讲,这是超平老师解读Python编程挑战赛系列的第1讲。 全国青少年信息素养大赛(原全国青少年电子信息智能创新大赛)是“世界机器人大会青少年机器人设计与信…

如何做好云渗透测试的威胁建模(上)

NO.1 威胁建模相关定义 微软针对威胁建模(Threat modeling)的描述:威胁建模是帮助保护系统、应用程序、网络和服务的有效方法。这是一种工程技术,用于识别潜在的威胁和建议,以帮助降低风险并在开发生命周期的早期实现…

nodejs接口联动获取req的各种类型数据,搭建可视化流程引擎平台

nodejs接口联动获取req的各种类型数据,搭建可视化流程引擎平台 搭建nodejs服务创建对外开放端口,获取基础数据GET—queryGET—paramsPOST 联动MYSQL数据库获取websites表的所有书链接数据库 插入 搭建nodejs服务 考虑跨域等性能,简易的工程化…

基于SpringBoot和Mybatis用两种方式实现分页查询

上一篇文章中封装了通用的返回结果、通用分页结果。本文具体记录一下如何基于Mybatis实现分页查询。 参考文章: Github:pagehelper-spring-boot Github:HowToUse.md mybatis-plus分页查询三种方法 MyBatis-Plus分页插件 系列文章指路👉 系列文章-基于Sp…

这会是下一代的 Java 程序员的技术栈吗?

Servlet 与 Reactive 技术栈 打开 Spring 的官方文档我们在 Reactive 一栏中可以看到下面的架构图,其中可以很明显的看到 Reactive 的技术栈跟 Servlet 技术栈是完全并行的。意思是说我们日常开发的 Servlet web 类型只是一半的内容,还有另外一半世界就…

TI AM64x开发板规格书(双核ARM Cortex-A53 + 单/四核Cortex-R5F + 单核Cortex-M4F,主频1GHz)

1 评估板简介 创龙科技TL64x-EVM是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 单/四核Cortex-R5F 单核Cortex-M4F多核处理器设计的高性能评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,高性能低功耗,稳…

3.2C++抽象类

C 抽象类 C的抽象类是指至少包含一个纯虚函数的类,不能被实例化。 抽象类的作用是为了实现接口的统一规范,使得不同的子类可以通过实现相同的纯虚函数来实现不同的行为。 定义抽象类时,需要在类中至少包含一个纯虚函数。 抽象类不能被实例…

idea如何连接数据库

输入数据库的用户名和密码就行 Database这里些数据库的名字 快速打开数据库设计 这句话是说时区有问题:因为Mysql用的是美国时区,要搞成中国时区: set global time_zone8:00; 打开cmd窗口: 输入 mysql -u root -p 密码&…