【C语言】循环结构程序设计(第二部分 -- 习题讲解)

news2024/10/7 4:29:10

前言:昨天我们学习了C语言中循环结构程序设计,并分析了循环结构的特点和实现方法,有了初步编写循环程序的能力,那么今天我们通过一些例子来进一步掌握循环程序的编写和应用。

💖 博主CSDN主页:卫卫卫的个人主页 💞
👉 专栏分类:C程序设计谭浩强版本 👈
💯代码仓库:卫卫周大胖的学习日记💫
💪关注博主和博主一起学习!一起努力!这里是引用

目录

    • 斐波那契数列
    • 判断素数
    • 最大公约数和最小公倍数
    • 统计字符个数
    • 水仙花数
    • 求"1000之内的完数"

斐波那契数列

例题1:求Fibonacci(斐波那契)数列的前40个数。这个数列有以下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即该数列为1,1,2,3,5,8,13…,用数学方式表示为:
在这里插入图片描述
代码思路:
方法一:用非递归的思路解决

int main()
{
	int num1 = 1;
	int num2 = 1;
	int i = 0;
	int tmp = 0;
	int sum = 0;
	for (i = 0; i < 40; i++)
	{
		if (i < 3)
		{
			tmp = 1;
			printf("%d ", tmp);//前两项是1所以直接输出即可
			sum = 2;
		}
		else
		{
			tmp = num1 + num2;//第三项开始后一项是前两项的和
			num1 = num2;//让后一项赋值给前一项
			num2 = tmp;//同理
			printf("%d ", tmp);
			sum += tmp;//求和
		}
	}
	printf("\n");
	printf("sum = %d\n", sum);
	return 0;
}

方法二:用递归

int Fibon1(int num)
{
	if (num == 1 || num == 2)
	{
		return 1;
	}
	else
	{

		return Fibon1(num - 1) + Fibon1(num - 2);//用递归的方式
	}

}

int main()
{
	int n = 0;
	int ret = 0;
	scanf("%d", &n);
	ret = Fibon1(n);
	printf("ret=%d", ret);
	return 0;
}

运行结果:
在这里插入图片描述


判断素数

例题2:输入一个大于3的数,判定它是否为素数(prime)

代码分析:

#include <math.h>
int is_prime(int n)
{
	int i = sqrt(n);//一个数如果是素数可以写成两个数相乘的形式
	int flag = 1;//判断标志
	while (i > 1)
	{
		if (n % i == 0)//如果被整除说明不是素数
		{
			int flag = 0;
			return 0;
		}
		i--;
	}
	if (flag == 1)//如果flag = 1说明他没有整除
	{
		return 1;
	}
}
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (is_prime(num))
	{
		printf("该数:%d是素数\n", num);
	}
	else
	{
		printf("该数:%d不是素数\n", num);

	}
	return 0;
}

运行结果:
在这里插入图片描述


例题3:求100到200之间的素数
代码分析:

#include <math.h>
int is_prime(int n)
{
	int i = sqrt(n);//一个数如果是素数可以写成两个数相乘的形式
	int flag = 1;//判断标志
	while (i > 1)
	{
		if (n % i == 0)//如果被整除说明不是素数
		{
			int flag = 0;
			return 0;
		}
		i--;
	}
	if (flag == 1)//如果flag = 1说明他没有整除
	{
		return 1;
	}
}
int main()
{
	int i = 0;
	for (i = 100; i <= 200; i++)
	{
		if(is_prime(i))//判断是否是素数
			printf("%d ", i);//是素数则打印i的值
	}
	return 0;
}

运行结果:
在这里插入图片描述


最大公约数和最小公倍数

例题4:输入两个正整数m和n,求其最大公约数和最小公倍数
代码分析:

int main()
{
	int m = 0;
	int n = 0;
	scanf("%d %d", &m, &n);
	int min = m < n ? m : n;//找出其中的最小值;
	while (1)
	{
		if (m % min == 0 && n % min == 0)//找到能同时能被它们俩整除的数
			//如果能被整除说明是他们的最大公约数
		{
			break;
		}
		min -= 2;
	}
	int j = 1;
	while (m * j % n != 0)//两个数的最小公倍数一定是它们俩个的倍数
	//因此找到其中一个数的倍数,看他的倍数的积是否可以整除另一个数
	{
		j++;
	}
	printf("最大公约数是: %d  最小公倍数是: %d", min, m * j);
	printf("\n");
	return 0;
}

运行结果:
在这里插入图片描述


统计字符个数

例题4:输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
代码分析:

int main()
{
	char arr[100] = { 0 };
	char ch = 0;
	int i = 0;
	int Eng_letter = 0;//英文字符
	int space = 0;//空格
	int number = 0;//数字
	int others = 0;//其其它字符
	while ((ch = getchar()) != '\n')//输入字符
	{
		arr[i++] = ch;
	}
	int len = strlen(arr);
	for (i = 0; i < len; i++)
	{
		if ((arr[i] >= 'a' && arr[i] <= 'z') || (arr[i] >= 'A' && arr[i] <= 'Z'))//判断是否是英文字符
		{
			Eng_letter++;//是的话自增加1
		}
		else if (arr[i] >= '0' && arr[i] <= '9')//判断数字
		{
			number++;
		}
		else if (arr[i] == ' ')//判断空格
		{
			space++;
		}
		else
			others++;//是否是其它的
	}
	printf("Eng_letter = %d number = %d space = %d others = %d", Eng_letter, number, space, others);
	return 0;
}

运行结果:
在这里插入图片描述


水仙花数

例题5:输出所有的"水仙花数",所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。例如153是水仙花数,因为153 = 1 3 + 5 3 + 3 3 1^3 + 5 ^ 3 + 3^3 13+53+33
代码分析:

int Narcissistic_number(int n)
{
	int sum = 0;
	int y = n;
	while (n != 0)//求出该数的 每一位数的3次方
	{
		int x = n % 10;//求出每一位数
		sum += x * x * x;
		n = n / 10;
	}
	if (sum == y)//判断是否等于它本身
	{
		return y;
	}
	else
		return 0;
}
int main()
{
	int i = 0;
	int sum = 0;
	for (i = 100; i < 1000; i++)
	{		
		if (Narcissistic_number(i))
		{
			printf("%d ", Narcissistic_number(i));
		}
	}
	return 0;
}

运行结果:
在这里插入图片描述


求"1000之内的完数"

例题6:一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1,2,3,而6 = 1 + 2 + 3,因此6就是完数。编写程序找出1000以内的完数。
代码分析:

int if_factor(int n)
{
	int sum = 0;
	int i = 1;
	while (i < n)
	{
		if (n % i == 0)//找出能被它整数的项,即找出因数
		{
			sum += i;
		}
		i++;
	}
	if (sum == n)//判断是否是完数
	{
		return sum;
	}
	else
		return 0;
}
void factor(int n)//打印因数
{
	int i = 1;
	while (i < n)
	{
		if (n % i == 0)
		{
			printf("%d ", i);
		}
		i++;
	}
}
int main()
{
	int i = 0;
	for (i = 2; i < 10000; i++)
	{
		if (if_factor(i))
		{
			printf("%d ", if_factor(i));//判断是否是完数
			printf("因数是:");
			factor(i);//打印出因数
			printf("\n");
		}
	}
	return 0;
}

运行结果:
在这里插入图片描述


结语:今天的内容就到这里吧,谢谢各位的观看,如果有讲的不好的地方也请各位多多指出,作者每一条评论都会读的,谢谢各位。


🫵🫵🫵 祝各位接下来好运连连 💞

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

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

相关文章

conda安装使用jupyterlab注意事项

文章目录 一、conda安装1.1 conda安装1.2 常见命令1.3 常见问题 二、jupyterlab2.1 jupyterlab安装和卸载2.2 常见错误2.2.1 版本冲突&#xff0c;jupyterlab无法启动2.2.2 插件版本冲突 2.3 常用插件2.3.1 debugger2.3.2 jupyterlab_code_formatter 2.4 jupyter技巧 一、conda…

聊聊分布式架构——Http到Https

目录 HTTP通信协议 请求报文 响应报文 持久连接 状态管理 HTTPS通信协议 安全的HTTPS HTTP到HTTPS的演变 对称加密 非对称加密 混合加密机制 证书机构 SSL到底是什么 HTTPS是身披SSL外壳的HTTP HTTP通信协议 一次HTTP请求的通信流程&#xff1a;客户端浏览器通过…

【C++】STL简介(了解)

一、什么是STL STL (standard template libaray- 标准模板库 ) &#xff1a; 是 C 标准库的重要组成部分 &#xff0c;不仅是一个可复用的组件库&#xff0c;而且 是一个包罗数据结构与算法的软件框架 。 二、STL的版本 原始版本 Alexander Stepanov 、 Meng Lee 在惠普实验…

swift加载h5页面空白

swift加载h5页面空白 problem 背景 xcode swift 项目&#xff0c;WebView方式加载h5页面本地h5地址是&#xff1a;http://localhost:5173/ 浏览器打开正常 Swift 加载h5&#xff1a; 百度官网 加载正常本地h5页面 加载空白&#xff0c;没有报错 override func viewDidLoad…

RabbitMQ-工作队列

接上文 RabbitMQ-死信队列 1 工作队列模式 xx模式只是一种设计思路&#xff0c;并不是指具体的某种实现&#xff0c;可理解为实现XX模式需要怎么去写业务代码。 之前的是简单的一个消费者一个生产者模式&#xff0c;下边是一个生产者多个消费者的情况&#xff1a; 这里先定义两…

想要精通算法和SQL的成长之路 - 最长连续序列

想要精通算法和SQL的成长之路 - 最长连续序列 前言一. 最长连续序列1.1 并查集数据结构创建1.2 find 查找1.3 union 合并操作1.4 最终代码 前言 想要精通算法和SQL的成长之路 - 系列导航 并查集的运用 一. 最长连续序列 原题链接 这个题目&#xff0c;如何使用并查集是一个小难…

带你10分钟学会红黑树

前言&#xff1a; 我们都知道二叉搜索树&#xff0c;是一种不错的用于搜索的数据结构&#xff0c;如果二叉搜索树越接近完全二叉树&#xff0c;那么它的效率就会也高&#xff0c;但是它也存在的致命的缺陷&#xff0c;在最坏的情况下&#xff0c;二叉搜索树会退化成为单链表&am…

Spring三大核心组件

Spring架构图 Spring三大核心组件分别为&#xff1a;Core、Beans和Context 1. Core&#xff08;核心&#xff09;&#xff1a; 思想&#xff1a;Core组件的核心思想是控制反转&#xff08;IoC&#xff09;和依赖注入&#xff08;DI&#xff09;。它将对象的创建、组装和管理的…

【图像处理】使用各向异性滤波器和分割图像处理从MRI图像检测脑肿瘤(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

番外--Task2:

任务&#xff1a;root与普通用户的互切&#xff08;区别&#xff09;&#xff0c;启动的多用户文本见面与图形界面的互切命令&#xff08;区别&#xff09;。 输入图示命令&#xff0c;重启后就由图形界面转成文本登录界面&#xff1b; 输入图示命令&#xff0c;重启后就由文本…

Netron【.pt转.torchscript模型展示】

Netron是一个模型的展示工具&#xff0c;它有网页版和app版&#xff1a; 网页版&#xff1a;Netron app版&#xff1a;GitHub - lutzroeder/netron: Visualizer for neural network, deep learning, and machine learning models 直接用网页版吧&#xff0c;还不用安装。 它可…

【kubernetes】CRI OCI

1 OCI OCI(Open Container Initiative)&#xff1a;由Linux基金会主导&#xff0c;主要包含容器镜像规范和容器运行时规范&#xff1a; Image Specification(image-spec)Runtime Specification(runtime-spec)runC image-spec定义了镜像的格式&#xff0c;镜像的格式有以下几…

竞赛选题 机器视觉的试卷批改系统 - opencv python 视觉识别

文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…

【SpringBoot】配置文件详解

配置文件详解 一. 配置文件作用二. 配置文件的格式1. properties 配置文件说明①. properties 基本语法②. 读取配置⽂件③. properties 缺点 2. yml 配置⽂件说明①. yml 基本语法②. yml 使用进阶 3. properties VS yml 三. 设置不同环境的配置⽂件 一. 配置文件作用 整个项…

jsbridge实战1:xcode swift 构建iOS app

[[toc]] 环境安装 macOs: 10.15.5 xcode: 11.6 demo:app 创建 hello world iOS app 创建工程步骤 选择&#xff1a;Create a new Xcode project选择&#xff1a;iOS-> single View App填写&#xff1a; project name: swift-app-helloidentifer: smile 包名language: s…

基于Android的香格里拉美食分享APP/美食分享平台/基于android的美食平台

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的APP应运而生&#xff0c;各行各业相继进入信息管理时代&#x…

Youtube视频下载工具分享-油管视频,音乐,字幕下载方法汇总

YouTube视频下载方法简介 互联网上存在很多 YouTube 下载工具&#xff0c;但我们经常会发现自己收藏的工具没过多久就会失效&#xff0c;我们为大家整理的这几种方法&#xff0c;是存在时间较久并且亲测可用的。后续如果这些工具失效或者有更好的工具&#xff0c;我们也会分享…

【多线程进阶】死锁问题

文章目录 前言1. 什么是死锁1.1 死锁的三种典型情况 2. 死锁产生的必要条件3.如何解决死锁问题总结 前言 上文锁策略中, 当谈到可重入锁和不可重入锁时, 我们引入了一个 “死锁” 的概念, 当针对一把不可重入锁进行连续两次的加锁行为时, 就会产生死锁. 本文就重点来讲解一下…

QT调用python程序出现问题Failed to get function

问题描述&#xff1a; 1.python中程序运行正常但在QTC的配置中使用Python.h调用python程序时出现Failed to get function问题&#xff0c;去掉python中某个包的应用就可以&#xff0c;比如&#xff1a; python部分程序&#xff1a; import os.path import pandas as pd如果在…

第十二届2023软件杯国家二等奖赛后感想总结

一&#xff0c;相关链接 软件杯官网&#xff1a;软件杯大赛官网 (cnsoftbei.com) 金蝶赛道&#xff1a;金蝶云苍穹开发者门户 (kingdee.com) 二&#xff0c;个人介绍 首先我是个双非院校的学生&#xff0c;专业为计算机科学与技术&#xff0c;打这个比赛是在大二下的暑假开始的…