【C语言】循环结构程序设计(第二部分 -- 习题讲解)
前言:昨天我们学习了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++;}elseothers++;//是否是其它的}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;}elsereturn 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;}elsereturn 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;
}
运行结果:

结语:今天的内容就到这里吧,谢谢各位的观看,如果有讲的不好的地方也请各位多多指出,作者每一条评论都会读的,谢谢各位。
相关文章:
【C语言】循环结构程序设计(第二部分 -- 习题讲解)
前言:昨天我们学习了C语言中循环结构程序设计,并分析了循环结构的特点和实现方法,有了初步编写循环程序的能力,那么今天我们通过一些例子来进一步掌握循环程序的编写和应用。 💖 博主CSDN主页:卫卫卫的个人主页 💞 &am…...
UGUI交互组件Toggle
一.Toggle对象的构造 Toggle和Button类似,是交互组件的一种 如果所示,通过菜单创建了两个Toggle,Toggle2中更换了背景和标记资源 对象说明Toggle含有Toggle组件的对象Background开关背景Checkmark开关选中标记Label名称文本 二.Toggle组件属…...
亲,您的假期余额已经严重不足了......
引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 转眼八天长假已经接近尾声了,今天来总结一下大家的假期,聊一聊假期关于学习的看法,并预估一下大家节后大家上班时的样子。 1.放假前一天 即将迎来八天…...
【软件测试】自动化测试selenium(一)
文章目录 一. 什么是自动化测试二. Selenium的介绍1. Selenium是什么2. Selenium的特点3. Selenium的工作原理4. SeleniumJava的环境搭建 一. 什么是自动化测试 自动化测试是指使用软件工具或脚本来执行测试任务的过程,以替代人工进行重复性、繁琐或耗时的测试活动…...
Nginx实现动静分离
一、概述 1、什么是动静分离 动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。 动静分离简单的概…...
【算法题】309. 买卖股票的最佳时机含冷冻期
题目: 给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 卖出股票后,你无法在…...
1951-2011年长序列高时空分辨率月尺度温度和降水数据集
简介 长序列高时空分辨率月尺度温度和降水数据集,基于中国及周边国家共1153个气温站点和1202个降水站点数据,利用ANUSPLIN软件插值,重建了1951−2011年中国月值气温和降水量的高空间分辨率0.025(~2.5km)格点数据集&am…...
十天学完基础数据结构-第六天(树(Tree))
树的基本概念 树是一种层次性的数据结构,它由节点组成,这些节点按照层次关系相互连接。树具有以下基本概念: 根节点:树的顶部节点,没有父节点。 子节点:树中每个节点可以有零个或多个子节点。 叶节点&am…...
RobotFramework流程控制(最新版本)
文章目录 一 分支流程1. 关键字:Run Keyword If2. 关键字:IF/ELSE3. 嵌套IF/ELSE4. 关键字:Set Variable If 二 循环流程1. 普通FOR循环2. 嵌套FOR循环3. 退出循环4. 其它常用循环 一 分支流程 1. 关键字:Run Keyword If Run Key…...
win11 好用的 快捷方式 --chatGPT
gpt: Windows 11引入了许多新的功能和改进,同时也包括一些实用的快捷方式和功能。以下是一些Windows 11中的常用快捷方式: 1. **Win D**:最小化或还原所有打开的窗口,显示桌面。 2. **Win E**:打开文件资源管理器…...
在大数据相关技术中,HBase是个分布的、面向列的开源数据库,是一个适合于非结构化数据存储的数据库。
HDFS,适合运行在通用硬件上的分布式文件系统,是一个高度容错性的系统,适合部署在廉价的机器上。Hbase,是一个分布式的、面向列的开源数据库,适合于非结构化数据存储。MapReduce,一种编程模型,方…...
910数据结构(2020年真题)
算法设计题 问题1 现有两个单链表A和B,其中的元素递增有序,在不破坏原链表的情况下,请设计一个算法,求这两个链表的交集,并将结果存放在链表C中。 (1)描述算法的基本设计思想; (2)根据设计思想࿰…...
MyBatisPlus(八)范围查询
说明 范围查询,包括: 大于大于等于小于小于等于在范围内在范围外 大于:gt 代码 Testvoid gt() {LambdaQueryWrapper<User> wrapper new LambdaQueryWrapper<>();wrapper.gt(User::getAge, 20);List<User> users mapp…...
【day10.04】QT实现TCP服务器客户端搭建的代码
服务器: #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//实例化一个服务器server new QTcpServer(this);//此时,服务器已经成功进入…...
milvus 结合Thowee 文本转向量 ,新建表,存储,搜索,删除
1.向量数据库科普 【上集】向量数据库技术鉴赏 【下集】向量数据库技术鉴赏 milvus连接 from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility connections.connect(host124.****, port19530)2.milvus Thowee 文本转向量 使用 …...
GEO生信数据挖掘(三)芯片探针ID与基因名映射处理
检索到目标数据集后,开始数据挖掘,本文以阿尔兹海默症数据集GSE1297为例 目录 处理一个探针对应多个基因 1.删除该行 2.保留分割符号前面的第一个基因 处理多个探针对应一个基因 详细代码案例一删除法 详细代码案例二 多个基因名时保留第一个基因名…...
力扣 -- 96. 不同的二叉搜索树
解题步骤: 参考代码: class Solution { public:int numTrees(int n) {vector<int> dp(n1);//初始化dp[0]1;//填表for(int i1;i<n;i){for(int j1;j<i;j){//状态转移方程dp[i](dp[j-1]*dp[i-j]);}}//返回值return dp[n];} }; 你学会了吗&…...
经典算法-枚举法(百钱买百鸡问题)
题目: 条件:现有 100 元,一共要买公鸡、母鸡、小鸡三种鸡,已知公鸡 5 元一只,母鸡 3 元一只,1 元可以买三只小鸡。 要求:公鸡、母鸡、小鸡都要有,一共买 100 只鸡。有哪几种买法&am…...
Gurobi设置初始可行解
目录 1. 决策变量的Start属性直接设置变量的初始值 1.1 Start:MIP变量的起始值(初值)double类型,可更改 1.2 StartNodeLimit:限制了在完善一组输入部分变量的初始解时,MIP所探索的分支定界的节点的数量 …...
Zabbix配置监控文件系统可用空间小于30GB自动告警
一、创建监控项 二、配置监控项 #输入名称–>键值点击选择 #找到磁盘容量点击 注: 1、vfs 该键值用于检测磁盘剩余空间,zabbix 内置了非常多的键值可以选着使用 2、单位B不需要修改,后期图表中单位和G拼接起来就是GB 3、更新时间 10S…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

