C语言及算法设计课程实验五:循环结构程序设计

news2024/10/7 10:20:03

C语言及算法设计课程实验五:循环结构程序设计

  • 一、实验目的
  • 二、实验内容
    • 2.1、统计字符个数
    • 2.2、输出所有的“水仙花数”
    • 2.3、猴子吃桃问题
    • 2.4、牛顿迭代法求方程
  • 三、实验步骤
  • 3.1、循环结构程序设计实验题目一:统计字符个数
    • 1、定义变量
    • 2、 输入一串字符
    • 3、while循环处理输入的字符串
    • 4、输出统计字符的个数
    • 5、统计字符个数运行结果
  • 3.2、循环结构程序设计实验题目二:输出所有的“水仙花数”
    • 1、定义变量
    • 2、用for循环分辨出水仙花数
    • 3、输出100-1000之间的水仙花数
    • 4、水仙花数运行结果
  • 3.3、循环结构程序设计实验题目三:猴子吃桃问题
    • 1、定义变量
    • 2、while循环计算第1天共摘了多少桃子
    • 3、输出猴子第1天共摘了多少桃子
    • 4、猴子吃桃的运行结果
  • 3.4、循环结构程序设计实验题目四:牛顿迭代法求方程
    • 1、定义变量
    • 2、while循环迭代法计算方程在1.5附近的根
    • 3、输出方程的根
    • 4、牛顿迭代法求方程的运行结果
  • 四、实验总结
  • 五、实验完整代码
    • 5.1、循环结构程序设计实验题目一:统计字符个数的完整程序
    • 5.2、循环结构程序设计实验题目二:输出所有的“水仙花数”的完整程序
    • 5.3、循环结构程序设计实验题目三:猴子吃桃问题的完整程序
    • 5.4、循环结构程序设计实验题目四:牛顿迭代法求方程

在这里插入图片描述

一、实验目的

在这里插入图片描述

  • (1) 熟悉掌握用while语句.do-while语句和for语句实现循环的方法。
  • (2) 掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。
  • (3) 进一步学习调试程序。

二、实验内容

在这里插入图片描述

编程序并上机调试运行。

2.1、统计字符个数

(1) 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。

2.2、输出所有的“水仙花数”

(2) 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于 该数本身。例如,153是一水仙花数,因为153= 1^3 + 5^3+3^3

2.3、猴子吃桃问题

(3) 猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了 一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天 剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第1天共摘了多少桃 子。
在得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。请修改程序并运行,检查结果是否正确。

2.4、牛顿迭代法求方程

⑷用牛顿迭代法求方程
在这里插入图片描述

在1. 5附近的根
在得到正确结果后,请修改程序使所设的x初始值由1.5改变为100,1000,10000,再运行,观察结果,分析不同的工初值对结果有没有影响,为什么?

修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。

三、实验步骤

在这里插入图片描述

编程序并上机调试运行。

3.1、循环结构程序设计实验题目一:统计字符个数

(1) 输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。

  • 在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的 个数。

1、定义变量

定义变量的代码如下所示

	/// <summary>
	/// 定义变量
	/// </summary>
	/// <returns></returns>
	char c;
	int letters = 0, space = 0, digit = 0, other = 0;

2、 输入一串字符

输入一串字符的代码如下所示

	/// <summary>
	/// 输入一串字符
	/// </summary>
	/// <returns></returns>
	printf("请输人一行字符:\n");

3、while循环处理输入的字符串

while循环处理输入的字符串的代码如下所示

	/// <summary>
	/// while循环处理输入的字符串
	/// </summary>
	/// <returns></returns>
	while ((c = getchar()) != '\n')
	{
		if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
			letters++;
		else if (c == ' ')
			space++;
		else if (c >= '0' && c <= '9')
			digit++;
		else
			other++;
	}

4、输出统计字符的个数

输出统计字符的个数的代码如下所示

	/// <summary>
	/// 输出统计字符的个数
	/// </summary>
	/// <returns></returns>
	printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n", letters, space, digit, other);

5、统计字符个数运行结果

统计字符个数的运行结果如下所示
在这里插入图片描述

3.2、循环结构程序设计实验题目二:输出所有的“水仙花数”

(2) 输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。

  • 例如,153是一水仙花数,因为153= 1^3 + 5^3+3^3

1、定义变量

定义变量的代码如下所示

/// <summary>
	/// 定义变量
	/// </summary>
	/// <returns></returns>
	int i, j, k, n;
	int flowerNumber[4], index = 0;

2、用for循环分辨出水仙花数

用for循环分辨出水仙花数的代码如下所示

/// <summary>
	/// 用for循环分辨出水仙花数
	/// </summary>
	/// <returns></returns>
	for (n = 100; n < 1000; n++)
	{
		i = n / 100;
		j = n / 10 - i * 10;
		k = n % 10;
		if (n == i * i * i + j * j * j + k * k * k)
			flowerNumber[index++] = n;
	}

3、输出100-1000之间的水仙花数

用for循环分辨出水仙花数的代码如下所示

/// <summary>
	/// 输出100-1000之间的水仙花数
	/// </summary>
	/// <returns></returns>
	printf("100-1000之间的水仙花数是\n");
	for (i = 0; i < 4; i++)
	{
		printf("%d\t", flowerNumber[i]);
	}
	printf("\n\n");

4、水仙花数运行结果

水仙花数运行结果如下所示

在这里插入图片描述

3.3、循环结构程序设计实验题目三:猴子吃桃问题

(3) 猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了 一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天 剩下的一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第1天共摘了多少桃 子。

  • 在得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。请修改程序并运行,检查结果是否正确。

1、定义变量

定义变量的代码如下所示


	/// <summary>
	/// 定义变量
	/// </summary>
	/// <returns></returns>
	int day, x1, x2;
	day = 9;
	x2 = 1;

2、while循环计算第1天共摘了多少桃子

while循环计算第1天共摘了多少桃子的代码如下所示

	/// <summary>
	/// while循环计算第1天共摘了多少桃子
	/// </summary>
	/// <returns></returns>
	while (day > 0) 
	{
		x1 = (x2 + 1) * 2;	//第1天的桃子数是第2天桃子数加1后的2倍
		x2 = x1;
		day--;
	}

3、输出猴子第1天共摘了多少桃子

输出猴子第1天共摘了多少桃子的代码如下所示

	/// <summary>
	/// 输出猴子第1天共摘了多少桃子
	/// </summary>
	/// <returns></returns>
	printf("第1天共摘了%d个桃子\n", x1);

4、猴子吃桃的运行结果

猴子吃桃的运行结果如下所示

在这里插入图片描述

3.4、循环结构程序设计实验题目四:牛顿迭代法求方程

⑷用牛顿迭代法求方程
在这里插入图片描述
在1. 5附近的根

  • 在得到正确结果后,请修改程序使所设的x初始值由1.5改变为100,1000,10000,再运行,观察结果,分析不同的工初值对结果有没有影响,为什么?

  • 修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。

1、定义变量

定义变量的代码如下所示

	/// <summary>
	/// 定义变量
	/// </summary>
	/// <returns></returns>
	double x1, x0, f, f1;
	x1 = 1.5;

2、while循环迭代法计算方程在1.5附近的根

while循环迭代法计算方程在1.5附近的根的代码如下所示

	/// <summary>
	/// while循环迭代法计算方程在1.5附近的根
	/// </summary>
	/// <returns></returns>
	do
	{
		x0 = x1;
		f = ((2 * x0 - 4) * x0 + 3) * x0 - 6;
		f1 = (6 * x0 - 8) * x0 + 3;
		x1 = x0 - f / f1;
	} while (fabs(x1 - x0) >= 1e-5);

3、输出方程的根

输出方程的根的代码如下所示

	/// <summary>
	/// 输出方程的根
	/// </summary>
	/// <returns></returns>
	printf("方程在1.5附近的根是:%5.2f\n", x1);

4、牛顿迭代法求方程的运行结果

牛顿迭代法求方程的运行结果如下所示

在这里插入图片描述

四、实验总结

在这里插入图片描述

本次通过C语言及算法设计课程实验五:循环结构程序设计,掌握了如下几点。

  • (1) 熟悉掌握用while语句.do-while语句和for语句实现循环的方法。
  • (2) 掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。
  • (3) 进一步学习调试程序。

五、实验完整代码

在这里插入图片描述

5.1、循环结构程序设计实验题目一:统计字符个数的完整程序

完整程序如下所示

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	/// <summary>
	/// 定义变量
	/// </summary>
	/// <returns></returns>
	char c;
	int letters = 0, space = 0, digit = 0, other = 0;

	/// <summary>
	/// 输入一串字符
	/// </summary>
	/// <returns></returns>
	printf("请输人一行字符:\n");

	/// <summary>
	/// while循环处理输入的字符串
	/// </summary>
	/// <returns></returns>
	while ((c = getchar()) != '\n')
	{
		if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
			letters++;
		else if (c == ' ')
			space++;
		else if (c >= '0' && c <= '9')
			digit++;
		else
			other++;
	}
	
	/// <summary>
	/// 输出统计字符的个数
	/// </summary>
	/// <returns></returns>
	printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n", letters, space, digit, other);

	return 0;
}

5.2、循环结构程序设计实验题目二:输出所有的“水仙花数”的完整程序

完整程序如下所示

#define _crt_secure_no_warnings

#include <stdio.h>

int main()
{
	/// <summary>
	/// 定义变量
	/// </summary>
	/// <returns></returns>
	int i, j, k, n;
	int flowernumber[4], index = 0;

	/// <summary>
	/// 用for循环分辨出水仙花数
	/// </summary>
	/// <returns></returns>
	for (n = 100; n < 1000; n++)
	{
		i = n / 100;
		j = n / 10 - i * 10;
		k = n % 10;
		if (n == i * i * i + j * j * j + k * k * k)
			flowernumber[index++] = n;
	}

	/// <summary>
	/// 输出100-1000之间的水仙花数
	/// </summary>
	/// <returns></returns>
	printf("100-1000之间的水仙花数是\n");
	for (i = 0; i < 4; i++)
	{
		printf("%d\t", flowernumber[i]);
	}
	printf("\n\n");

	return 0;
}

5.3、循环结构程序设计实验题目三:猴子吃桃问题的完整程序

完整程序如下所示

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	/// <summary>
	/// 定义变量
	/// </summary>
	/// <returns></returns>
	int day, x1, x2;
	day = 9;
	x2 = 1;

	/// <summary>
	/// while循环计算第1天共摘了多少桃子
	/// </summary>
	/// <returns></returns>
	while (day > 0) 
	{
		x1 = (x2 + 1) * 2;	//第1天的桃子数是第2天桃子数加1后的2倍
		x2 = x1;
		day--;
	}

	/// <summary>
	/// 输出猴子第1天共摘了多少桃子
	/// </summary>
	/// <returns></returns>
	printf("第1天共摘了%d个桃子\n", x1);

	return 0;
}

5.4、循环结构程序设计实验题目四:牛顿迭代法求方程

完整程序如下所示

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()
{
	/// <summary>
	/// 定义变量
	/// </summary>
	/// <returns></returns>
	double x1, x0, f, f1;
	x1 = 1.5;

	/// <summary>
	/// while循环迭代法计算方程在1.5附近的根
	/// </summary>
	/// <returns></returns>
	do
	{
		x0 = x1;
		f = ((2 * x0 - 4) * x0 + 3) * x0 - 6;
		f1 = (6 * x0 - 8) * x0 + 3;
		x1 = x0 - f / f1;
	} while (fabs(x1 - x0) >= 1e-5);

	/// <summary>
	/// 输出方程的根
	/// </summary>
	/// <returns></returns>
	printf("方程在1.5附近的根是:%5.2f\n", x1);

	return 0;
}

在这里插入图片描述

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

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

相关文章

基础IO(上)

基础IO&#xff08;上&#xff09;回顾文件知识回顾C文件接口系统文件I/O接口介绍openclosewriteread理解文件描述符fd理解0 1 2 3 4....文件描述符的分配规则重定向的本质及相关操作认识重定向重定向的具体原理重定向的操作追加重定向和输入重定向追加重定向输入重定向缓冲区的…

C++ STL源码剖析 笔记补充

写在前面 简单记录一些《C STL源码剖析中》涉及到的C语法和注意事项。 1. 静态常量成员在类内直接初始化 如果含有const static integral类型的成员变量&#xff0c;可以在类内定义时直接初始化&#xff1b; 注意integral不只是int类型&#xff0c;而是包含所有的整型&#…

< 每日算法 - Javascript解析:经典弹珠游戏 >

每日算法 - JavaScript解析&#xff1a;弹珠游戏一、任务描述&#xff1a;》 示例一&#xff1a;》示例二二、题意解析三、解决方案&#xff1a;往期内容 &#x1f4a8;一、任务描述&#xff1a; 欢迎各位来到「力扣嘉年华」&#xff0c;接下来将为各位介绍在活动中广受好评的…

HSAF实战收获

收获1&#xff1a;MySQL数据类型对应Java类型表格这里的timestamp类型在Java中对应TimeStamp类型&#xff0c;varchar和char都是对饮的String类型收获2&#xff1a;TableFieldTableField(exist false) 注解加载bean属性上&#xff0c;表示当前属性不是数据库的字段&#xff0c…

[golang Web开发] 4.golang web开发:模板引擎

一.简介 使用 Go 的 Web 模板引擎需要以下两个步骤&#xff1a; (1).对文本格式的模板源进行语法分析&#xff0c;创建一个经过语法分析的模板结构&#xff0c;其中模板源既可以是一个字符串,也可以是模板文件中包含的内容 (2).执行经过语法分析的模板&#xff0c;将ResponseWr…

Django User模型

Django User模型用户管理自定义用户模型Django自定义验证引用User模型视图开发创建序列器创建视图创建路由用户注册注册序列化器注册视图注册路由用户管理 在开发登录功能的时候需要数据库来保存用户登录信息和状态&#xff0c;Django中有个内置app 名为 django.contrib.auth …

ICT是什么

信息与通信技术&#xff08;ICT&#xff0c;information and communications technology&#xff09;是一个涵盖性术语&#xff0c;覆盖了所有通信设备或应用软件&#xff1a;比如说&#xff0c;收音机、电视、移动电话、计算机、网络硬件和软件、卫星系统&#xff0c;等等&…

(1)Nginx简介和安装教程

目录 一、下载 二、报错提醒&环境安装 1、安装gcc编译器 2、安装perl库 3、安装 zlib库 4、也可通过命令进行统一安装 三、编译及安装 四、启动并访问 1、启动 2、访问 3、问题排查 五、安装成系统文件 一、下载 官网地址&#xff1a;nginx news Nginx官网提供…

OAuth2入门

1.下载资源 演示代码&#xff1a; OAuth2-example: 演示OAuth2的认证流程https://gitee.com/lisenaq/oauth2-example克隆下载到本地&#xff1a; 导入项目&#xff1a; client 客户 authorization-server 认证服务 resource-owner 资源所有者 resource-server 资源…

儿童台灯哪个品牌更护眼推荐?儿童书桌台灯品牌排行榜

不难发现&#xff0c;近些年我国儿童近视率增长迅速&#xff0c;随着生活条件越来越好&#xff0c;对电子章产品的普及非常广泛&#xff0c;每个家庭的孩子必不可少的就是伏案完成作业&#xff0c;这样的话就需要使用到台灯&#xff0c;选购台灯的时候最好选择适合儿童的专业护…

【算法基础】高精度加法

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前是C语言学习者 ✈️专栏&#xff1a;【C/C】算法 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞…

一篇五分生信临床模型预测文章代码复现——FIgure 9.列线图构建,ROC分析,DCA分析 (三)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

axios实战学习——使用高德地图api接口数据实现天气查询案例

文章目录&#x1f4cb;前言&#x1f3af;案例介绍&#x1f9e9;关于高德开发平台1️⃣创建应用生成Key2️⃣查看API文档&#x1f9e9;测试接口&#x1f3af;案例编写&#x1f3af;实现效果&#x1f4cb;前言 关于这个Vue axios 获取接口数据的操作&#xff0c;这篇文章就不过…

UniRx之基础入门

什么是Rx 官方ReactiveX简介&#xff1a; An API for asynchronous programming with observable streams。 通过这句话我们可以得到&#xff1a; 1.首先Rx是个编程接口&#xff0c;不同语言提供不同实现。例如JVM语言中的RxJava。 2.使用场景&#xff0c;异步编程中。 3.基…

路由器 内核开发 流程

宽 带上网已经不是什么新鲜事情&#xff0c;人们对相关的网络器件已经不再陌生&#xff0c;比如说常见的路由器。对于一般的网络用户&#xff0c;他们能知道怎样使用路由器来上网、玩游戏等就 已经感到很满足了&#xff0c;通常情况下对路由器的深层技术很少去过问研究&#xf…

Matlab和PCL中的点云滤波

而在PCL中总结了几种需要进行点云滤波处理的情况&#xff0c;这几种情况分别是&#xff1a; (1)点云数据密度不规则需要平滑。 (2)因为遮挡等问题造成离群点需要去除。 (3)大量数据需要进行“下采样”(Downsample)。 (4)噪声数据需要去除。 对应的解决方法是&#xff1a; (1)按…

什么是ITIL中的变更管理

商业环境和客户期望在不断变化&#xff0c;数字化转型已成为各行各业企业成功的关键因素。数字化转型的关键在于利用可用 应对业务挑战和抓住机遇的技术。当你分解它时&#xff0c;数字化转型基本上是信息技术管理更好地消除有问题的领域&#xff0c;并使您的 IT 基础架构能够应…

WebView缓存机制

一 前言 由于H5具备 开发周期短、灵活性好 的特点&#xff0c;所以现在 Android App大多嵌入了 Android Webview 组件进行 Hybrid 开发 但我知道你一定在烦恼 Android Webview 的性能问题&#xff0c;特别突出的是&#xff1a;加载速度慢 & 消耗流量 今天&#xff0c;我将…

Django 模型的继承

Django 模型的继承项目管理模型关联关系模块的包管理模型的继承项目管理 到目前为止&#xff0c;都是属于httprunner中的用例部分&#xff0c;针对核心功能进行的开发工作&#xff0c;要把平台做成一个用户可以使用的程度还需要些额外的功能&#xff0c;比如项目管理&#xff…

13薪| 8k-14k Java开发工程师

"众推职聘”以交付结果为宗旨的全流程化招聘服务平台&#xff01;今日招聘信息↓工作内容1.参与软件项目和产品概要设计&#xff0c;负责详细功能设计、编码实现及相关文档编写&#xff1b;2.根据模块设计完成相应的模块编码及单元测试&#xff1b;3.对用户行为、需求及反…