【C语言】经典题目(四)
HI,大家好~😝😝这是一篇C语言经典题目的博客。
更多C语言经典题目及刷题篇,可以参考:
🌸 【C语言】经典题目(一)
🌸 【C语言】经典题目(二)
🌸 【C语言】经典题目(三)
🌸 【C语言】字符串刷题篇
🍀🍀本篇文章主要利用函数完成所需的功能及程序的编写。
主要有:
①写一个函数判断一个数是不是素数。
②写一个函数判断一年是不是一年。
③写一个函数,实现一个整型有序数组的二分查找。
④写一个函数,每调用一次这个函数,num值就会增加1。
【C语言】经典题目四
- 打印100~200之间的素数
 - 打印1000~2000之间的闰年
 - 写一个函数,实现一个有序数组的二分查找
 - 详解二分查找
 - 函数实现二分查找
 
- 写一个函数,没调用一次这个函数,就会将num的值增加1
 
打印100~200之间的素数
✨思路:首先,自定义函数,判断一个数是不是素数。在主函数中,对100~200个数依次利用所写的函数进行判断。如果是,则打印。如果是素数,则count+1,可以计算出100-200之间有多少个素数。
 ✨对于我们自定义的判断素数的函数,它的结果只有两种,是和不是。
 ①如果是素数,我们可以返回 1,如果不是素数,我们返回 0。
 ②对于判断一个数是不是素数这样的问题,它只有两种情况,是和不是,即True和False。所以这个题目,我们可以定义我们的函数类型是布尔类型,返回True或者False。但要注意,包含头文件<stdbool.h>
①代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
int is_prime(int n)
{int i;for (i = 2; i <= sqrt(n); i++){if (n % i == 0)return 0;}return 1;
}
int main(void)
{int i;int count = 0;for (i = 101; i < 200; i = i + 2){if (is_prime(i)) {printf("%d ", i);count++;}}printf("\n");printf("count=%d", count);return 0;
}
 
运行结果:
 
②代码实现
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <math.h>
#include <stdbool.h>
bool is_prime(int n)
{int i;for (i = 2; i <= sqrt(n); i++){if (n % i == 0)return false;}return true;
}
int main(void)
{int i;int count = 0;for (i = 101; i < 200; i = i + 2){if (is_prime(i)){printf("%d ", i);count++;}}printf("\n");printf("count=%d", count);return 0;
}
 
打印1000~2000之间的闰年
✨思路:首先先写一个自定义函数判断一年是不是闰年。对于主函数,遍历1000-2000,对每一个年份利用所编写的函数进行判断。如果是,则打印。如果是,count+1,可以计算1000~2000之间闰年年份的个数。
 ✨对于我们自定义的判断是否是闰年的函数,它的结果也只有两种,是和不是。如同上面的题目一样
 ①如果是闰年,我们可以返回 1,如果不是闰年,我们返回 0。
 ②定义我们的函数类型是布尔类型,如果是闰年,返回True如果不是,返回False。要注意,包含头文件<stdbool.h>**
 ①代码实现
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int is_leap_year(int year)
{if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)return 1;elsereturn 0;
}
int main()
{int i;int count = 0;for (i = 1000; i <= 2000; i ++){if (is_leap_year(i)){printf("%d ", i);count++;}}printf("\ncount=%d\n", count);return 0;
}
 
②代码实现
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdbool.h>
bool is_leap_year(int year)
{if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)return true;elsereturn false;
}
int main()
{int i;int count = 0;for (i = 1000; i <= 2000; i ++){if (is_leap_year(i)){printf("%d ", i);count++;}}printf("\ncount=%d\n", count);return 0;
}
 
写一个函数,实现一个有序数组的二分查找
详解二分查找
✨首先,我们先抛开在函数中实现有序数组的二分查找这个问题。
 我们先来探索一下如何用代码实现二分查找。
 假如我们给上一个如下的有序数组:
 
 假设我们要查找的数字为5.
 ①我们要将5与这个有序数组的中间值进行比较:
 
而目标数5<7,下一步我们缩小二分查找的范围。
 ②缩小二分查找的范围
 
 ③进行下一次的二分查找:
 
而目标数5>3,接着我们再次缩小二分查找的范围。
 ④再次缩小二分查找的范围:
 
 ⑤进行二分查找
 
 而目标数==mid,所以我们在这个有序数组中找到了。
✨总结:在一个有序数组中进行二分查找,我们是与中间值进行比较的,如果不相等,我们一步一步的缩小二分查找的范围。就像是一个数组的两个指针在进行一步一步移动,直到两个指针正好指的是同一个数时,那就必须要停止查找了,如果这时还没有找到,说明在这个数组中就没有了。
 ✨将上述的文字转化为代码描述:在数组中,将中间数mid和目标数进行比较,如果相等,则找到了,如果不相等,进一步更新修改缩小数组,对于新数组同样进行上述的过程…在产生新的数组,在进行判断…所以我们需要写一个循环,循环的条件就是left<=right。
 代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int n = 0;int right = 0, left = 0, mid = 0;int flag = 0;printf("你想要查找的数字:");scanf("%d", &n);//初始化left = 0; right = 9; mid = (left + right) / 2;while (left <= right){if (arr[mid] == n){printf("找到了\n");printf("下标是%d", mid);flag = 1;break;}else if (n < arr[mid]){right = mid - 1;    //left不变mid = (right + left) / 2;}else{left = mid + 1;  //right 不变mid = (right + left) / 2;}}if (flag = 0)printf("没找到");return 0;
}
 

函数实现二分查找
✨首先我们需要自定义一个函数,在函数内需要对一个数组实现二分查找。
 函数参数我们需要一个数,即我们的目标数,和一个数组首元素的地址。
 ✨对于函数的返回值,因为我们不仅仅是想知道在数组中有没有目标数,更想明确它的下标,所以函数的返回值,我们不妨返回的是下标。若是没有找到的话,那就返回一个负数-1即可。(因为不会有数组元素的下标为负数的。)
 ✨然后我们在主函数中调用函数,传递参数即可。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int binary_search(int n, int arr[],int sz)
{int left = 0, right = sz-1;int mid = (left + right) / 2;while (left <= right){if (arr[mid] == n)return mid;else if (arr[mid] > n){right = mid - 1;//left不变mid = (left + right) / 2;}else{left = mid + 1;//right不变mid = (left + right) / 2;}}return  -1;
}
int main()
{int n = 0;int arr[10] = { 1,4,6,7,9,11,14,16,18,19 };printf("你想要查找的数字:\n");int sz = sizeof(arr) / sizeof(arr[0]);scanf("%d", &n);int ret = binary_search(n, arr,sz);if (ret>-1){printf("找到了\n");printf("下标为%d", ret);}elseprintf("没找到\n");return 0;
}
 
运行结果:
 
写一个函数,没调用一次这个函数,就会将num的值增加1
✨因为每调用一次函数,就要将num的变化,而能使得num变化,我们需要向函数传递num的地址,使得每调用一次,就能使num的值发生变化。
 代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void Add(int* p)
{*p = *p + 1;
}
int main()
{int num = 3;Add(&num);printf("%d\n", num);Add(&num);printf("%d\n", num);Add(&num);printf("%d\n", num);return 0;
}
 
运行结果:
 
相关文章:
【C语言】经典题目(四)
HI,大家好~😝😝这是一篇C语言经典题目的博客。 更多C语言经典题目及刷题篇,可以参考: 🌸 【C语言】经典题目(一) 🌸 【C语言】经典题目(二) 🌸 【C语言】经典题目(三) 🌸…...
Prometheus-监控 Postgresql
一、部署 1 二进制方式部署 github 地址:https://github.com/prometheus-community/postgres_exporter 1.1 下载 可以从官方发布版本中找到多个平台的二进制安装包。 打开连接后,点击 Assets,即可看到下载列表。 本文档使用如下版本作为示例 curl -o postgres_exporte…...
Android java.lang.UnsatisfiedLinkError: No implementation found
例如,该项目的如下报错: java.lang.UnsatisfiedLinkError: No implementation found for void org.webrtc.PeerConnectionFactory.nativeInitializeAndroidGlobals() (tried Java_org_webrtc_PeerConnectionFactory_nativeInitializeAndroidGlobals and…...
Leecode力扣704数组二分查找
题目链接为:https://leetcode.cn/problems/binary-search/ 最终代码为: class Solution { public:int search(vector<int>& nums, int target) {int begin 0;int end nums.size() - 1;while (begin < end) {int mid (begin end) / 2;…...
Linux 的基本使用
1、Linux 是什么 Linux 是一个操作系统. 和 Windows 是 "并列" 的关系 Linux 严格意义来说只是一个 "操作系统内核". 一个完整的操作系统 操作系统内核 配套的应用程序. CentOS 和 RedHat 的关系 RedHat一直都提供源代码的发行方式,Cent…...
vue3实现自定义select下拉框内容之城市区域篇
分享-2023年资深前端进阶:前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的🪜 需求分析: 1、实现一个区域下拉选项与现有ui组件库不同,支持多选、单选需求 2、支持选中区域后-全选中当前区域下的所有城市信息 3、…...
性能测评:腾讯云轻量应用服务器_CPU内存带宽流量
腾讯云轻量应用服务器性能如何?轻量服务器CPU内存带宽配置高,CPU采用什么型号主频多少?轻量应用服务器会不会比云服务器CVM性能差?腾讯云服务器网详解CPU型号主频、内存、公网带宽和系统盘存储多维对比,相对于CVM云服务…...
python中的迭代器和生成器
一、迭代器 支持迭代的容器,如列表(list)、元组(tuple)、字典(dict)、集合(set)这些序列式容器。 自定义迭代器的类中必须实现以下2个方法: __next__(self)…...
Python-OpenCV中的图像处理-图像阀值
Python-OpenCV中的图像处理-图像阀值 图像阈值单阈值自适应阈值Otsus二值化 图像阈值 单阈值 与名字一样,这种方法非常简单。但像素值高于阈值时,我们给这个像素赋予一个新值(可能是白色),否则我们给它赋予另外一种颜…...
VB+SQL酒店客房管理设计与实现
摘要 二十一世纪是信息技术的时代,计算机已经应用到了各行各业中。采用计算机信息管理技术,可以有效的降低企业的管理成本,提高企业内部的工作效率。 本文从天天宾馆客房客房管理的一般流程出发,设计了一套天天宾馆客房管理信息系统,它可以管理天天宾馆客房中所有的客房的…...
【Linux】从0到1实现一个进度条小程序
个人主页:🍝在肯德基吃麻辣烫 我的gitee:gitee仓库 分享一句喜欢的话:热烈的火焰,冰封在最沉默的火山深处 文章目录 前言一、理解回车 \r 和换行 \n二、初步认识缓冲区1. 认识第一个函数:sleep2.观察缓冲区…...
江南大学轴承数据故障诊断(利用一维CNN进行故障诊断,代码和数据放在压缩包,无需修改任何东西,解压缩后直接运行,有详细注释)
1.江南大学轴承数据集介绍 采样频率:50khz,采样时间:10s 转速:600 800 1000/rpm 内圈:ib 外圈:ob 滚动体:tb 正常:N 以600转速下的内圈故障数据为例展示: 开始数据…...
【网络基础实战之路】基于BGP协议连接三个AS区域的实战详解
系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 【网络基础实战之路】基于…...
基于Python爬虫+词云图+情感分析对某东上完美日记的用户评论分析
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
Day 26 C++ list容器(链表)
文章目录 list基本概念定义结构双向迭代器优点缺点List和vector区别存储结构内存管理迭代器稳定性随机访问效率 list构造函数——创建list容器函数原型示例 list 赋值和交换函数原型 list 大小操作函数原型示例 list 插入和删除函数原型示例 list 数据存取函数原型注意示例 lis…...
【深度学习注意力机制系列】—— SKNet注意力机制(附pytorch实现)
SKNet(Selective Kernel Network)是一种用于图像分类和目标检测任务的深度神经网络架构,其核心创新是引入了选择性的多尺度卷积核(Selective Kernel)以及一种新颖的注意力机制,从而在不增加网络复杂性的情况…...
Markdown语法和表情
Markdown语法和表情 1. 标题2. 段落3. 加粗和斜体4.分隔线5.删除线6.下划线7.引用8.列表9.链接10. 图片11. 代码12.Markdown 表格其他1.支持的 HTML 元素2.转义3.公式 Markdown表情参考 Markdown 是一种轻量级的标记语言,用于简洁地编写文本并转换为HTML。它的语法简…...
CSDN编纂目录索引跳转设置
CSDN编纂目录索引跳转设置 文章目录 题目第一小节第二小节第三小节结论 题目 第一小节 第二小节 第三小节 结论...
cpu的架构
明天继续搞一下cache,还有后面的, 下面是cpu框架图 开始解释cpu 1.控制器 控制器又称为控制单元(Control Unit,简称CU),下面是控制器的组成 1.指令寄存器IR:是用来存放当前正在执行的的一条指令。当一条指令需要被执行时,先按…...
FastAPI和Flask:构建RESTful API的比较分析
Python 是一种功能强大的编程语言,广泛应用于 Web 开发领域。FastAPI 和 Flask 是 Python Web 开发中最受欢迎的两个框架。本文将对 FastAPI 和 Flask 进行综合对比,探讨它们在语法和表达能力、生态系统和社区支持、性能和扩展性、开发工具和调试支持、安…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...
