C语言典型例题51

news2024/11/16 9:51:16

《C程序设计教程(第四版)——谭浩强》


例题4.3 while循环与do……while循环的比较


代码:

(1)while语句

#include <stdio.h>
int main()
{
	int sum=0;
	
//	char ch='';
	while(1)
	{
		sum=0;//每一次输入结束后数的和重置
		int i=0;
		printf("请输入你想从___开始加到10:\n");
		scanf("%d",&i);
		while(i<=10)
		{
			sum=sum+i;
			i++;
		}
	
		printf("和为%d\n",sum);
		
		printf("【温馨提示】如果想要退出计算,请按‘x’键;如不想退出,请忽略这条提示!\n");
		int ch = 0;
		getchar();
		ch=getchar();
		
		if(ch == 'x')
		{
			printf("!!!已退出!!!");
			break;
		}
	}
	
	return 0;
}

(2)do……while语句

#include <stdio.h>
int main()
{
	while(1)
	{
		int sum = 0;
		
		int i=1;
		printf("请输入对于从n到10中的求和中的n\nn=");
		scanf("%d",&i);
		
		do
		{
			sum=sum+i;
			i++;
		}while(i<=10);
		printf("求和的结果为%d\n",sum);
		sum=0;
		
		printf("【温馨提示】请决定是否要停止计算,如要停止,请按“x”键;如不想,请忽略本次提示!!!\n");
		int ch='0';
		getchar();
		ch=getchar();
		if(ch=='x')
		{
			printf("!!!已停止计算并跳出计算!!!\n");
			break;
		}
		
		
	}
	
	return 0;
}

(3)总和

//《C程序设计教程(第四版)——谭浩强》
//例题4.3 while循环与do……while循环的比较

//#include <stdio.h>
//int main()
//{
//	int sum=0;
//	
	char ch='';
//	while(1)
//	{
//		sum=0;//每一次输入结束后数的和重置
//		int i=0;
//		printf("请输入你想从___开始加到10:\n");
//		scanf("%d",&i);
//		while(i<=10)
//		{
//			sum=sum+i;
//			i++;
//		}
//	
//		printf("和为%d\n",sum);
//		
//		printf("【温馨提示】如果想要退出计算,请按‘x’键;如不想退出,请忽略这条提示!\n");
//		int ch = 0;
//		getchar();
//		ch=getchar();
//		
//		if(ch == 'x')
//		{
//			printf("!!!已退出!!!");
//			break;
//		}
//	}
//	
//	return 0;
//}

#include <stdio.h>
int main()
{
	while(1)
	{
		int sum = 0;
		
		int i=1;
		printf("请输入对于从n到10中的求和中的n\nn=");
		scanf("%d",&i);
		
		do
		{
			sum=sum+i;
			i++;
		}while(i<=10);
		printf("求和的结果为%d\n",sum);
		sum=0;
		
		printf("【温馨提示】请决定是否要停止计算,如要停止,请按“x”键;如不想,请忽略本次提示!!!\n");
		int ch='0';
		getchar();
		ch=getchar();
		if(ch=='x')
		{
			printf("!!!已停止计算并跳出计算!!!\n");
			break;
		}
		
		
	}
	
	return 0;
}

运行结果:

(1)while语句

(2)do……while语句

编写代码时遇到的问题:

(1)while语句

while当到第11次(即while的判断语句为假时),一次都不执行循环体

(2)do……while语句

do……while语句当循环第11次时(即while的判断语句为假时),会先执行循环体,然后在判断语句是否为假为真;即while语句至少循环一次

总结:

小tip

由于这种题需要输入多个值并且对值进行比较后才能得到一个广泛而正确的答案,所以需要反复的输入很多值,对比多个输入输出结果。若每次输入都要输入值,记下运行结果后关闭应用程序窗口在输入输出,如此周而反复,会大大降低调试的效率

因此,我们可以在一个窗口输入输出多次结果,需要时跳出

关键代码部分:

        int ch = 0;
		getchar();
		ch=getchar();
		
		if(ch == 'x')
		{
			printf("!!!已退出!!!");
			break;
		}
(1)ch存储的明明是字符,为什么要用int类型,而不是char类型?

        答:getchar()这个库函数规定,当读取正常时,返回一个字符;当读取错误或者读取到文件末尾时,返回-1。但是char类型的变量只有一个字节(byte),不足以存储一个-1。但是,当ch的类型为int时,它不仅仅可以存储“-1”,还可以字符所对应的ASCII码。

(2)为什么要莫名奇妙写一行getchar();

        答:因为getchar()规定一次只能读取一个字符,为了可以让ch=getchar();正确读取到“x”,必须保证“x”前面没有任何的字符,所以ch=getchar();前的getchar();就是这个作用。

(3) break是什么意思?        

        答:跳出它所在的循环

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

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

相关文章

31套科技风PPT免费分享

目录 部分展示 部分展示 #PPT下载 「科技风模板」链接&#xff1a;https://pan.quark.cn/s/fb2f39a1d343 链接永久有效&#xff0c;点击这里下载&#xff0c;记得给个赞哦

odoo17 Field 没有invisible属性?

odoo17 Field dmszhzh.zzfile.save_type 没有invisible属性 错误提示如下&#xff1a; WARNING sd0003 odoo.fields: Field dmszhzh.zzfile.save_type: unknown parameter invisible, if this is an actual parameter you may want to override the method _valid_field_par…

MSSQL 工具注入(第一关)

简介 SQL注入是一种安全漏洞&#xff0c;通过它可以执行意外的SQL命令或访问数据库中的信息。MSSQL注入通常发生在应用程序将用户输入作为SQL查询的一部分执行时&#xff0c;而没有对输入进行适当的验证或清理。 以下是MSSQL手工注入的流程&#xff1a; 一、打开靶场选择第一关…

Kafka的生产者和消费者机制

目录 1.基础的客户端 1.1消息发送者的主流程 1.2消息消费者主流程 2.客户端工作机制 2.1消费者分组消费机制 2.2生产者拦截器机制 2.3消息序列化机制 2.4消息分区路由机制 2.5生产者消息缓存机制 2.6发送应答机制 2.7生产者消息幂等性 (1)生产者消息幂等性介绍 (2…

浅谈【数据结构】链表之单链表

目录 1、什么是数据&#xff1f; 2、什么是结构 3、什么是数据结构&#xff1f; 4、线性结构(线性表&#xff09; 4.1线性表的物理结构的实现 5、链表 5.1无头结点的单链表 5.2新内容、老面孔 5.3数组和链表的优缺点 5.4链表的概念 5.5链表的创建步骤 5.5.1创建过程…

【Linux】自动化构建工具makefile

目录 背景 makefile简单编写 .PHONY makefile中常用选项 makefile的自动推导 背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力 ​ ◉ 一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…

MyBatis框架搭建与代码解读

前言: MyBatis是一个灵活的持久层框架&#xff0c;适合与数据库交互&#xff0c;支持自定义SQL和高级映射。搭建MyBatis的基本步骤包括&#xff1a; 环境准备&#xff1a;安装JDK、Maven和IDE。创建项目&#xff1a;建立Maven项目并设置基本信息。添加依赖&#xff1a;在pom.…

「Python数据分析」Pandas进阶,利用concat()函数连接数据(一)

在我们迈向中高级出局数据分析的过程中&#xff0c;数据的合并和连接&#xff0c;是一个非常重要的技能。 现实中&#xff0c;分散在各种数据库&#xff0c;各种数据表格&#xff0c;各种数据存储设备当中的&#xff0c;各式各样的数据&#xff0c;是我们进行数据分析的基础&a…

泛微开发修炼之旅--42Ecology大日志查看软件LogView Pro及教程

我们在项目上经常要看ecology的日志信息&#xff0c;当日志达到几百兆或者时几个G的时候&#xff0c;想要查看日志并且非常方便搜索日志中的信息&#xff0c;并不容易。 今天给大家大日志工具和教程&#xff0c;在附件中&#xff0c;各位自取吧&#xff01; 文章链接&#xff…

老师如何制作分班查询系统?

随着新学期的钟声敲响&#xff0c;老师们又迎来了一年中最忙碌的时期。不仅要处理日常的教学准备工作&#xff0c;还要面对一项重要而繁琐的任务——新生分班。分班完成后&#xff0c;老师们还需要将分班结果及时准确地通知给每一位家长&#xff0c;确保信息的传递无误。这项工…

epoll+线程池模型

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 ​ 负载均衡技术 …

AI工具 GPT 学术优化 (GPT Academic) 安装实践

GPT 学术优化 (GPT Academic)是一个综合的AI GPT工具包&#xff0c;可以完成各种gpt辅助的工作&#xff0c;比如代码解读、翻译、读论文等功能。官网&#xff1a;GitHub - binary-husky/gpt_academic: 为GPT/GLM等LLM大语言模型提供实用化交互接口&#xff0c;特别优化论文阅读…

Flutter 自动化测试 -appium-flutter-driver

上篇文章有讲述如何通过FlutterDriver实现集成测试Flutter 应用自动化测试-集成测试篇 不熟悉的小伙伴可以先去看看。 什么是Appium Flutter Driver&#xff1f; 作为Flutter开发&#xff0c;FlutterDriver是足够帮助他们进行测试的&#xff0c;而作为自动化测试工程师最大的困…

FFmpeg的入门实践系列五(编程入门之属性查看)

欢迎诸位来阅读在下的博文~ 在这里&#xff0c;在下会不定期发表一些浅薄的知识和经验&#xff0c;望诸位能与在下多多交流&#xff0c;共同努力 文章目录 前期博客参考书籍一、AVFormatContext结构体1. 结构定义2. 字段说明3.示例1&#xff08;打开与关闭音视频文件&#xff0…

机器人学——机械臂轨迹规划-1

引言 理想轨迹 步骤-1 步骤-2 笛卡尔空间下的轨迹规划 步骤-1 步骤-2 三次多项式 矩阵形式求解 det(T): 行列式&#xff0c;非齐次多项式&#xff0c;结果不为零&#xff0c;有唯一解、行列式为零&#xff08;无穷解/无解&#xff0c;还需查看增广矩阵的秩&#xff09; 速度…

Linux网络编程:多路转接--select

1. 初识select 系统提供select函数来实现多路复用输入/输出模型. select系统调用是用来让我们的程序监视多个文件描述符的状态变化的; 程序会停在select这里等待&#xff0c;直到被监视的文件描述符有一个或多个发生了状态改变 select只负责等待&#xff0c;可以等待多个fd&a…

内容创作者福音,4款文章改写神器轻松提升文章质量

在信息爆炸的时代&#xff0c;内容创作成为了连接世界的重要桥梁。作为一名专业创作者&#xff0c;我深知保持内容原创性和高质量的重要性。然而&#xff0c;灵感有时会枯竭&#xff0c;改写文章成为一项耗时且艰巨的任务。幸运的是&#xff0c;市面上有一些文章改写神器&#…

Flask+LayUI开发手记(四):弹出层实现增删改查功能

在上一节用dataTable实现数据列表时&#xff0c;已经加了表头工具栏和表内工具栏&#xff0c;栏内的按钮功能都是用来完成数据的增删改查了&#xff0c;这又分成两类功能&#xff0c;一类是删除或设置&#xff0c;这类功能简单&#xff0c;只需要选定记录&#xff0c;然后提交到…

Flutter 自动化测试 - 集成测试篇

Flutter集成测试 Flutter官方对Flutter应用测试类型做了三个阶段划分&#xff0c;分别为Unit&#xff08;单元&#xff09;测试、Widget&#xff08;组件&#xff09;测试、Integration&#xff08;集成&#xff09;测试。按照维护成本来看的话从左到右依次增高&#xff0c;按照…

预测癌症免疫治疗反应-TIDE数据库学习及知识整理

TIDE&#xff08;Tumor Immune Dysfunction and Exclusion&#xff09; 是一个用于预测癌症患者对免疫检查点抑制剂&#xff08;如PD-1/PD-L1抑制剂&#xff09;反应的算法。研究者通过检测肿瘤建模队列中每个基因的表达与效应性毒性T淋巴细胞(CTL)浸润水平的相互关系及对生存情…