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

c语言---循环 、判断基础知识详解

if语句

b3b7a40d03f248a3a1d4f394678f93bd.png

else离最近的if语句结合。        

if语句题目

//1. 判断一个数是否为奇数
//2. 输出1 - 100之间的奇数

#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);if (n % 2){printf("奇数\n");}else{printf("不是奇数\n");}return 0;
}

#include <stdio.h>
int main()
{int i = 0;for (i = 0; i <= 100; i++){if (i % 2){printf("奇数%d\n",i);}}return 0;
}

int main()
{int i = 0;for (i = 1; i <= 100; i+=2){printf("奇数%d\n",i);}return 0;
}

Switch语句题目

#include <stdio.h>
int main()
{int day = 0;scanf("%d", &day);switch (day){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 7:printf("星期天\n");break;default:printf("输入错误\n");break;}

这里的每条case后面必须加break语句否则如下图所示。

break会跳出switch语句。

switch语句的表达式必须是整数。

 8a1a36d184154da0974f28e979e1e6b3.png

ed9fc020eeb9426faee57654282b11a1.png

914b57f0f6c94a1280e8607a95938372.png

题目解释

#include <stdio.h>
int main()
{int n = 1;int m = 2;switch (n){case 1:m++;//进入这里m=3,没有break执行下一个case 2:n++;//n=2  没有break执行下一个case 3:switch (n)n=2{//switch允许嵌套使用case 1:n++;case 2:m++;m=4n++;n=3break;}case 4:m++;m=5break;default:break;}printf("m = %d, n = %d\n", m, n);return 0;
}

循环语句

while循环

8d68626e6071478aa58d1fadcb50637a.png

先看表达式是否为真,为真就执行表达式结果,然后继续看表达式是否为真,一直反复,知道表达式不满足,就跳出循环。

比如打印1-10的数

int main()
{/*int i = 1;while (i<11){printf("%d ", i);i++;}*/return 0;
}

break和continue的用法和区别

11fe39f56c0b46c6970a56a3e61d6086.png

9978ffeb7cd34bad94296cd920c202d5.png

因为这里的i++在后面,没有执行。

break是跳出循环的,continue后面的语句不会执行。所以一直进入死循环        

区别:break用于循环的永久终止

continue是跳出本次循环后面的代码,直接进入判断部分,进入下一次循环。

可以这么改 

da75841fb1b640f8b624e51015ca6e3a.png

f24cc3c0637242388368f0d3a1692906.png

1942c058104c48009ace570e4b8b5aec.png

 几个常见的陷阱

717f384b1c754ade92f9cd25a4c6a79a.png

这里的\n也是占一个字符 

181aa073945a4ecb89533e5de4594cef.png

 for循环

a3b082cea8094bbcbb73ce4cf1fd5527.png

 d9149b5f1f8d4732aba855d5018ac01c.png

 c15bb4daa0e14d48bd33a11c3dad9bc7.png

 先初始化,在判断,执行循环语句,然后调整,直到判断不成立,就跳出循环。

for循环遇见break和continue

b62e01541e004d73b59d00ca98746495.png

与while一样

continue的后面的语句 不会执行,但是for循环的i++在前面。,他跳到了调整部分去了

247e090f65b6402ebd861a366aa26982.png

 92bee0aadfb84f5c9da3a256d77c2fa7.png

循环里的语句不要随便乱省阅

        

0a5bd4263ed447b4829d745ece6952a2.png

这里第二就是i=0的时候内层循环执行三次,此刻i=1,但是j'现在等于3,内层循环没有初始化所以就打印了三次。

 9ac28ee5d99c4ded98ef28a5aad920a1.png

for循环题目

 432ac676254b46aea620f678c9510eab.png

这里=是赋值,表达式2结果是假的,就执行一次。

do-while循环语句

a79fbc98abee4a94b9c5d2c96846d053.png

先执行循环语句,在判断表达式,如果表达式为真,就继续,否则跳出循环。 

e0a5a1dde92841f8b697af99abe669fb.png

8cab6fe4d35e4744a6a5eef41614fb48.png

3d8f6483415e47f783e6bb57e60abe77.png

几个循环题目

1. 计算 n的阶乘。
2. 计算 1!+2!+3!+……+10!
3. 在一个有序数组中查找具体的某个数字n。(讲解二分查找)
4. 编写代码,演示多个字符从两端移动,向中间汇聚。

//1. 计算 n的阶乘。
int main()
{int i = 0;int n = 0;int ret = 1;scanf("%d", &n);for (i = 1; i <= n; i++){ret *= i;}printf("%d\n", ret);return 0;
}

//2. 计算 1!+ 2!+ 3!+ …… + 10!
int main()
{int i = 0;int n = 0;int ret = 1;int sum = 0;scanf("%d", &n);for (i = 1; i <= n; i++){ret *= i;sum += ret;}printf("%d\n", sum);return 0;
}

二分查找算法

7f13671c91b241f8b182753de273461c.png首先把arr[0]为left arr[9]为right 中间元素为mid  先判断arr[mid]>或者 <你要找的元素的值 ,运气好的话中间的元素就是你要查找的值。如果不是你要找的值,就判断arr[mid】>k就right=mid-1  ,<就left=mid+1  

08a83376a0804fb389485faf0aee1a4f.png

6a451dc2a9fd4a869c9a6a4a3c59cef1.png

4471ce7257bb4af8a92eb7edb64e5009.png

0bf76cc91c87426280dfb0995d2945a2.png


 

 e079f7e0cebe489b966a46c870449d54.png

比如找元素7,他的下标为6,创建一个变量left,含义是起始的,right,是末端的,中间变量是mid(left+right)/2,left=mid+1,right=mid-1.比如arr[mid]<k,中间元素是下标是4,找的元素是下表是6,在后面,则是left=mid+1,right还是right。现在left下标是5,right下标是9,中间下标是7,找的下标是6,此时right变成了mid-1,就剩下二个元素了,就是6和7 下标是5和6  ,left=5,right=6,中间是5,,mid=5 此时必要要找的下标元素小,那就是left=mid+1就找到了。

#define _CRT_SECURE_NO_WARNINGS
//3. 在一个有序数组中查找具体的某个数字n。(讲解二分查找)
#include <stdio.h>
#include <string.h>
int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int k = 7;int sz = sizeof(arr) / sizeof(arr[0]);int left = 0;int right = sz - 1;while (left <= right){int mid = left+(right-left) / 2;if (arr[mid] < k){left = mid + 1;}else if (arr[mid] > k){right = mid - 1;}else{printf("找到了下标是%d\n", mid);break;}}if (left > right){printf("找不到\n");}return 0;
}

adba0970fbff4d4cbbb94f49b7d67d9a.png

明确区别sizeof 和strlen()

46f1547178a64e1396d2ad5a88f4ada3.png

646d041fe14241a9b8db09c81f997ebe.png


//4. 编写代码,演示多个字符从两端移动,向中间汇聚int main()
{char arr1[] = "abcrerewf";char arr2[] = "*********";int left = 0;int right = strlen(arr1) - 1;while (left<=right){arr2[left] = arr1[left];arr2[right] = arr1[right];printf("%s\n", arr2);Sleep(1000);left++;right--;}return 0;
}

这里的Sleep是时间戳头文件是<windows.h>文件,就是起延时作用

system("cls"),头文件是<stdlib.h>,是一个清空屏幕的效果。

ce549280e49648ee8855732ce79cf004.png

c556a5bca1734ac784d05fb90aa26269.png

6d05456bfc16478ca7ddccc0b1db3e9e.png

50ff4d0e0ec6432f8326be3bacfc5f0e.png

//5. 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则
//提示登录成,如果三次均输入错误,则退出程序。4int main()
{char password[20] = { 0 };int i = 0;for (i = 0; i < 3; i++){printf("请输入密码:");scanf("%s", password);//假设密码是123;if (strcmp(password, "123") == 0){printf("登录成功\n");break;}else{printf("密码错误\n");}}if (i == 3){printf("三次全部错误退出程序\n");}return 0;
}

14cf0e114b60438794daed93089f7cbd.png

 猜数字游戏

dfef5221088246b6a086b1fbe278f6a1.png

猜数字游戏

1.电脑产生一个随机数

2.猜数字

3.猜大了

4.猜小了

5.直到猜对了,结束。

time(NULL)获得时间戳。头文件是<time.h>

rand()生成随机数的库函数

调用rand()之前必须调用srand(填一个随机数),头文件是<stdlib.>

生成随机数srand(usigned int ) time(NULL),这个就是生成随机数

但是这个只能调用一次。

//猜数字游戏实现void game()
{int n = 0;int red =rand()%100+1;//2猜数字while (1){printf("请猜数字\n");scanf("%d", &n);if (n < red){printf("猜小了\n");}else if(n > red){printf("猜大了\n");}else{printf("猜对了\n");break;}}}
void meau()
{printf("*********************\n");printf("****** 1.play  ******\n");printf("****** 0.exit  ******\n");}
int main()
{int input = 0;do{srand((unsigned)time(NULL));//产生随机数meau();printf("请选择:");scanf("%d", &input);switch (input){case 1:// 猜数字game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误重新选择\n");break;}} while (input);return 0;
}

b7f2ec0caf6949e683e25e7bb84ce6f3.png

 关机程序

858c1cb5f9da4eef91eb800f73c4eb36.png

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>//strcmp()函数的头文件
int main()
{char input[20] = { 0 };system("shutdown -s -t 120");// 必须写成1这个样子while (1){printf("请注意,你的电脑在120秒内关机,如果输入:我是你爹,就取消关机\n");scanf("%s", input);if (strcmp(input, "爹") == 0){system("shutdown -a");break;}}return 0;
}

相关文章:

c语言---循环 、判断基础知识详解

if语句 else离最近的if语句结合。 if语句题目 //1. 判断一个数是否为奇数 //2. 输出1 - 100之间的奇数 #include <stdio.h> int main() {int n 0;scanf("%d", &n);if (n % 2){printf("奇数\n");}else{printf("不是奇数\n"…...

Opencv高级图像处理

文章目录 Opencv高级图像处理图像坐标二值化滤波高斯滤波中值滤波 开闭运算检测霍夫圆检测边缘检测Canny边缘检测findContours区别傅里叶变换-高/低通滤波 直线检测 相机标定视频处理视频格式 模板摄像头处理&#xff08;带参调节&#xff09;单图片处理&#xff08;带参调节&a…...

Linux操作系统学习:day03

内容来自&#xff1a;Linux介绍 视频推荐&#xff1a;[Linux基础入门教程-linux命令-vim-gcc/g -动态库/静态库 -makefile-gdb调试]( 目录 day0317、创建删除目录创建目录删除目录 18、文件的拷贝19、mv 命令20、查看文件内容的相关命令21、给文件创建软连接或硬链接 day03 …...

快排(霍尔排序实现+前后指针实现)(递归+非递归)

前言 快排是很重要的排序&#xff0c;也是一种比较难以理解的排序&#xff0c;这里我们会用递归的方式和非递归的方式来解决&#xff0c;递归来解决是比较简单的&#xff0c;非递归来解决是有点难度的 快排也称之为霍尔排序&#xff0c;因为发明者是霍尔&#xff0c;本来是命名…...

客户端输入网址后发生的全过程解析(协议交互、缓存、渲染)

目录 1. 输入 URL 并按下回车键2. DNS 解析3. TCP 连接4. 发送 HTTP 请求5. 服务器处理请求6. 发送 HTTP 响应7. 浏览器接收响应8. 渲染网页9. 执行脚本10. 处理其他资源11. TLS/SSL 加密&#xff08;如果使用 HTTPS&#xff09;握手过程 12. 协议协商和优化 总结 1. 输入 URL …...

未来科技:Web3如何重塑物联网生态系统

随着Web3技术的崛起&#xff0c;物联网&#xff08;IoT&#xff09;的发展正迎来一场深刻的变革。本文将深入探讨Web3如何重塑物联网生态系统&#xff0c;从技术原理到应用实例&#xff0c;全面解析其对未来科技发展的影响和潜力。 1. Web3技术简介与发展背景 Web3技术是建立在…...

C++之模板(二)

1、类模板 2、使用类模板 类模板在使用的时候要显示的调用是哪种类型&#xff0c;而不是像函数模板一样能够根据参数来推导出是哪种类型。 Stack.h #include <stdexcept>template <typename T> class Stack { public:explicit Stack(int maxSize);~Stack();void …...

相机的标定

文章目录 相机的标定标定步骤标定结果影响因素参数分析精度提升一、拍摄棋盘格二、提升标定精度 标定代码实现 相机的标定 双目相机的标定是确保它们能够准确聚焦和成像的关键步骤。以下是详细的标定步骤和可能的结果&#xff0c;同时考虑了不同光照条件和镜头光圈大小等因素对…...

C# 利用XejeN框架源码,编写一个在 Winform 界面上的语法高亮的编辑器,使用 Monaco 编辑器

析锦基于Monaco技术实现的Winform语法高亮编辑器 winform中&#xff0c;我们有时需要高亮显示基于某种语言的语法编辑器。 目前比较强大且UI现代化的&#xff0c;无疑是宇宙最强IDE的兄弟&#xff1a;VS Code。 类似 VS Code 的体验&#xff0c;可以考虑使用 Monaco Editor&a…...

03- jQuery事件处理和动画效果

1. jQuery的事件处理 1.1 绑定事件处理函数 on() 将一个或多个事件的处理方法绑定到被选择的元素上。on()方法适用于当前或未来的元素&#xff0c;如用脚本创建的新元素。 $(selector).on(event,childSelector,data,function) 参数描述event必需。规定要从被选元素添加的一…...

RabbitMQ 入门

目录 一&#xff1a;什么是MQ 二&#xff1a;安装RabbitMQ 三&#xff1a;在Java中如何实现MQ的使用 RabbitMQ的五种消息模型 1.基本消息队列&#xff08;BasicQueue&#xff09; 2.工作消息队列&#xff08;WorkQueue&#xff09; 3. 发布订阅&#xff08;Publish、S…...

物联网协议应用

目录 前言一、WIFI简介二、NTP协议2.1 NTP简介2.2 NTP实现 三、HTTP协议3.1 HTTP协议简介3.2 HTTP服务器 四、MQTT协议4.1 MQTT协议简介4.1.1 MQTT通信模型4.1.2 MQTT协议实现原理4.1.3 MQTT 控制报文 4.2 移植MQTT协议 前言 本文主要介绍一下物联网协议如NTP协议、HTTP协议和M…...

十分钟学会微调大语言模型

有同学给我留言说想知道怎么训练自己的大语言模型&#xff0c;让它更贴合自己的业务场景。完整的大语言模型训练成本比较高昂&#xff0c;不是我们业余玩家能搞的&#xff0c;如果我们只是想在某个业务场景或者垂直的方面加强大模型的能力&#xff0c;可以进行微调训练。 本文…...

结合简单工厂和工厂方法模式:实现灵活的对象创建

前言 在软件开发过程中&#xff0c;创建对象的方式直接影响代码的灵活性和可维护性。设计模式提供了一种解决复杂问题的方法&#xff0c;其中简单工厂模式和工厂方法模式是两种常用的创建型模式。在这篇文章中&#xff0c;我们将结合这两种模式&#xff0c;通过一个实际案例&a…...

网抑云特殊版,登录即永久

前言 今天分享一款特殊版本的音乐软件&#xff0c;相信大家在听网抑云的时候会有两大烦恼&#xff0c; 一是歌曲需要开通VIP才可以收听&#xff0c;不管怎么说也是国内厂商普遍操作 但是第二种烦恼你万万想不到的是&#xff0c;开通了会员后&#xff0c;惊奇的发现&#xff…...

Kotlin 实战小记:No-Arg 引用解决 No constructor found的问题

一、问题 新的项目试用一下kotlin, 调用数据库查询数据的时候报了这个问题&#xff1a;org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in com.neusoft.collect.entity.cm.CmRoom matc…...

HTML(5)——列表表格

列表 无序列表 作用&#xff1a;布局排列整齐的不需要规定顺序的区域。 标签&#xff1a;ul嵌套il&#xff0c;ul是无序列表&#xff0c;li是列表条目 注&#xff1a;ul标签只能包裹li标签&#xff0c;li标签可以包含任何内容 有序列表 作用&#xff1a;布局排列整齐的需…...

FreeBSD通过CBSD管理低资源容器jail来安装Ubuntu子系统实践

简介 FreeBSD、CBSD、Jail和Ubuntu&#xff0c;四者的组合方案可以说是强强联合&#xff0c;极具性价比和竞争力&#xff01;同时安装简单方便&#xff0c;整体方案非常先进。 CBSD是为FreeBSD jail子系统、bhyve、QEMU/NVMM和Xen编写的管理层。该项目定位为一个综合解决方案…...

SpringCloud总结(springcloud alibaba)

目录 版本说明&#xff08;很重要&#xff09; springcloud alibaba对应组件版本说明 简述 spring cloud albaba 几大模块 周会讨论 - spring cloud alibaba每周都会有周会讨论,社区活跃 spring cloud alibaba官网 注册配置中心 简单介绍 nacos 步骤 示例代码 依赖…...

轻轻松松上手的LangChain学习说明书

本文为笔者学习LangChain时对官方文档以及一系列资料进行一些总结&#xff5e;覆盖对Langchain的核心六大模块的理解与核心使用方法&#xff0c;全文篇幅较长&#xff0c;共计50000字&#xff0c;可先码住辅助用于学习Langchain。 一、Langchain是什么&#xff1f; 如今各类AI…...

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…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...