当前位置: 首页 > news >正文

【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&#xff0c;大家好~&#x1f61d;&#x1f61d;这是一篇C语言经典题目的博客。 更多C语言经典题目及刷题篇&#xff0c;可以参考&#xff1a; &#x1f338; 【C语言】经典题目(一) &#x1f338; 【C语言】经典题目(二) &#x1f338; 【C语言】经典题目(三) &#x1f338;…...

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

例如&#xff0c;该项目的如下报错&#xff1a; java.lang.UnsatisfiedLinkError: No implementation found for void org.webrtc.PeerConnectionFactory.nativeInitializeAndroidGlobals() (tried Java_org_webrtc_PeerConnectionFactory_nativeInitializeAndroidGlobals and…...

Leecode力扣704数组二分查找

题目链接为&#xff1a;https://leetcode.cn/problems/binary-search/ 最终代码为&#xff1a; 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一直都提供源代码的发行方式&#xff0c;Cent…...

vue3实现自定义select下拉框内容之城市区域篇

分享-2023年资深前端进阶&#xff1a;前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的&#x1fa9c; 需求分析&#xff1a; 1、实现一个区域下拉选项与现有ui组件库不同&#xff0c;支持多选、单选需求 2、支持选中区域后-全选中当前区域下的所有城市信息 3、…...

性能测评:腾讯云轻量应用服务器_CPU内存带宽流量

腾讯云轻量应用服务器性能如何&#xff1f;轻量服务器CPU内存带宽配置高&#xff0c;CPU采用什么型号主频多少&#xff1f;轻量应用服务器会不会比云服务器CVM性能差&#xff1f;腾讯云服务器网详解CPU型号主频、内存、公网带宽和系统盘存储多维对比&#xff0c;相对于CVM云服务…...

python中的迭代器和生成器

一、迭代器 支持迭代的容器&#xff0c;如列表&#xff08;list&#xff09;、元组&#xff08;tuple&#xff09;、字典&#xff08;dict&#xff09;、集合&#xff08;set&#xff09;这些序列式容器。 自定义迭代器的类中必须实现以下2个方法&#xff1a; __next__(self)…...

Python-OpenCV中的图像处理-图像阀值

Python-OpenCV中的图像处理-图像阀值 图像阈值单阈值自适应阈值Otsus二值化 图像阈值 单阈值 与名字一样&#xff0c;这种方法非常简单。但像素值高于阈值时&#xff0c;我们给这个像素赋予一个新值&#xff08;可能是白色&#xff09;&#xff0c;否则我们给它赋予另外一种颜…...

VB+SQL酒店客房管理设计与实现

摘要 二十一世纪是信息技术的时代,计算机已经应用到了各行各业中。采用计算机信息管理技术,可以有效的降低企业的管理成本,提高企业内部的工作效率。 本文从天天宾馆客房客房管理的一般流程出发,设计了一套天天宾馆客房管理信息系统,它可以管理天天宾馆客房中所有的客房的…...

【Linux】从0到1实现一个进度条小程序

个人主页&#xff1a;&#x1f35d;在肯德基吃麻辣烫 我的gitee&#xff1a;gitee仓库 分享一句喜欢的话&#xff1a;热烈的火焰&#xff0c;冰封在最沉默的火山深处 文章目录 前言一、理解回车 \r 和换行 \n二、初步认识缓冲区1. 认识第一个函数&#xff1a;sleep2.观察缓冲区…...

江南大学轴承数据故障诊断(利用一维CNN进行故障诊断,代码和数据放在压缩包,无需修改任何东西,解压缩后直接运行,有详细注释)

1.江南大学轴承数据集介绍 采样频率&#xff1a;50khz&#xff0c;采样时间&#xff1a;10s 转速&#xff1a;600 800 1000/rpm 内圈&#xff1a;ib 外圈&#xff1a;ob 滚动体&#xff1a;tb 正常&#xff1a;N 以600转速下的内圈故障数据为例展示&#xff1a; 开始数据…...

【网络基础实战之路】基于BGP协议连接三个AS区域的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 【网络基础实战之路】基于…...

基于Python爬虫+词云图+情感分析对某东上完美日记的用户评论分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

Day 26 C++ list容器(链表)

文章目录 list基本概念定义结构双向迭代器优点缺点List和vector区别存储结构内存管理迭代器稳定性随机访问效率 list构造函数——创建list容器函数原型示例 list 赋值和交换函数原型 list 大小操作函数原型示例 list 插入和删除函数原型示例 list 数据存取函数原型注意示例 lis…...

【深度学习注意力机制系列】—— SKNet注意力机制(附pytorch实现)

SKNet&#xff08;Selective Kernel Network&#xff09;是一种用于图像分类和目标检测任务的深度神经网络架构&#xff0c;其核心创新是引入了选择性的多尺度卷积核&#xff08;Selective Kernel&#xff09;以及一种新颖的注意力机制&#xff0c;从而在不增加网络复杂性的情况…...

Markdown语法和表情

Markdown语法和表情 1. 标题2. 段落3. 加粗和斜体4.分隔线5.删除线6.下划线7.引用8.列表9.链接10. 图片11. 代码12.Markdown 表格其他1.支持的 HTML 元素2.转义3.公式 Markdown表情参考 Markdown 是一种轻量级的标记语言&#xff0c;用于简洁地编写文本并转换为HTML。它的语法简…...

CSDN编纂目录索引跳转设置

CSDN编纂目录索引跳转设置 文章目录 题目第一小节第二小节第三小节结论 题目 第一小节 第二小节 第三小节 结论...

cpu的架构

明天继续搞一下cache,还有后面的, 下面是cpu框架图 开始解释cpu 1.控制器 控制器又称为控制单元&#xff08;Control Unit&#xff0c;简称CU&#xff09;,下面是控制器的组成 1.指令寄存器IR:是用来存放当前正在执行的的一条指令。当一条指令需要被执行时&#xff0c;先按…...

FastAPI和Flask:构建RESTful API的比较分析

Python 是一种功能强大的编程语言&#xff0c;广泛应用于 Web 开发领域。FastAPI 和 Flask 是 Python Web 开发中最受欢迎的两个框架。本文将对 FastAPI 和 Flask 进行综合对比&#xff0c;探讨它们在语法和表达能力、生态系统和社区支持、性能和扩展性、开发工具和调试支持、安…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器

一、原理介绍 传统滑模观测器采用如下结构&#xff1a; 传统SMO中LPF会带来相位延迟和幅值衰减&#xff0c;并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF)&#xff0c;可以去除高次谐波&#xff0c;并且不用相位补偿就可以获得一个误差较小的转子位…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...