深入浅出循环语句—【C语言】

news2024/12/22 21:20:57

 分支语句博客:http://t.csdn.cn/U2kZF

目录

​编辑

前言:我们先来了解一下break 、continue在循环中的作用

1. while循环

 while循环中的break

 while循环中的continue 

2. for循环

for循环省略出错举例:

 for循环中的break

 for循环中的continue

3. do   while循环

利用do while循环打印1~10 

 do  while循环中的break

 do  while循环中的continue

4. 练习

4.1 计算 n的阶乘

4.2 计算1!+2!+3!+……+10!

5. 实现二分(折半)查找算法

5.1 思路分析

5.2 二分查找代码实现


前言:我们先来了解一下break 、continue在循环中的作用

break:终止循环(暴力)

continue:跳过本次循环continue后面的代码,再循环(温柔)

1. while循环

当条件满足的情况下,if语句后的语句执行,否则不执行。 但是这个语句只会执行一次。 由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。 那我们怎么做呢? C语言中给我们引入了: while 语句,可以实现循环。



 while循环中的break

当n=5时,if语句为真,执行break语句,break在while循环中跳出的是整个循环,如果有多组循环嵌套,跳出的是内层循环(跳出一组循环)


 while循环中的continue 

 当n=5的时候,执行continue语句,跳过continue后面的代码,开始下次循环



2. for循环

表达式1 初始化部分,用于初始化循环变量的。

表达式2 条件判断部分,用于判断循环时候终止。

表达式3 调整部分,用于循环条件的调整。



for循环省略出错举例:

 这里是两个for循环嵌套,开始时i=0,j=0,进入内部for循环,循环4次出内层循环,这是j=4,再当i=1,再次进入内层for循环的时候,这是由于j没有初始化部分,所以j还是为4,直接跳出内层for循环~~~本来打印16个hehe,现在只打印4个



 for循环中的break

 当i=5时,执行break代码,直接跳出for循环


 for循环中的continue

 当i=5时,执行continue代码——跳出本次循环continue后面的代码,直接到调整部分—>再到for循环判断部分


for循环使用建议

1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。

2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。



3. do   while循环

 循环至少执行一次,使用的场景有限,所以不是经常使用。



利用do while循环打印1~10 


 do  while循环中的break

break直接跳出循环


 do  while循环中的continue

 continue跳过本次循环后面的代码,由于这里跳过了调整部分,i=5一直为真,一直执行continue,就打印出1234 死循环



4. 练习

4.1 计算 n的阶乘

int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = 1; 		//注意ret不能定义为0
	for (int i = 1; i <=n ; i++)
	{
		ret *= i;
	}
	printf("%d", ret);
	return 0;
}

4.2 计算1!+2!+3!+……+10!

int main()
{
	int ret = 1;
	int sum = 0;
	for (int i = 0; i <=10 ; i++)
	{
		ret *= i;
		sum += ret;//sum=sum + ret;也可以这样来看
	}
	printf("%d", sum);
	return 0;
}

5. 实现二分(折半)查找算法

二分查找算法使用的前提是数组元素有序(升序)、(降序)

5.1 思路分析

1.确定被查找范围的左右下标left、right
2.根据left和right,确定中间元素下标mid
3.根据mid锁定的元素,和要查找的元素进行比较,确定新的元素范围left和right


 5.2 二分查找代码实现

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>


int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };//升序
	//printf("%d\n", sizeof(arr));//计算的数组的总大小,单位是字节
	//printf("%d\n", sizeof(arr[0]));//4
	//printf("%d\n", sizeof(arr) / sizeof(arr[0]));
	int k = 7;
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	//1
	int left = 0;
	int right = sz - 1;
	int flag = 0;//flag的作用是标志是否找到了
	//2
	while (left <= right)
	{
		int mid = (left + right) / 2;
		if (arr[mid] == k)
		{
			printf("找到了,下标是:%d\n", mid);
			flag = 1;
			break;
		}
		else if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else
		{
			right = mid - 1;
		}
	}
	//1 2
	if (flag == 0)
		printf("没找到\n");

	return 0;
}

 运行结果



如果觉得文章不错,期待你的一键三连哦,你个鼓励是我创作的动力之源,让我们一起加油,顶峰相见!!!

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

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

相关文章

JUC多并发编程 AQS

基础解释&#xff1a; 是用来实现锁或者其他同步器组件的公共基础部分的抽象实现,是重量级基础框架及整个JUC体系的基石&#xff0c;主要用于锁分配给“谁”的问题。整体就是一个抽象的 FIFO 队列来完成资源获取线程的排队工作&#xff0c;并通过一个 int 类变量表示持有锁的状…

编译器的优化问题(构造、拷贝)、linux如何取消优化。

编译器优化问题&#xff1a; 不同编译器优化是不一样的&#xff0c;下面代码我都用的vs2019&#xff0c;并且在Debud模式下。&#xff08;Release也会进行优化&#xff09; 下面测试的时候我先采用Debug模式测试。 先写一个简单的类&#xff0c;进行打印测试&#xff1a; c…

从血缘进化论的角度,破解婆媳关系的世纪难题

从血缘进化论的角度&#xff0c;破解婆媳关系的世纪难题 有个粉丝的留言&#xff0c;很长很复杂&#xff0c;是关于他们家的婆媳关系问题。 青木老师&#xff0c;您好&#xff0c;我也有一些问题想咨询您&#xff0c;是关于婆媳关系的&#xff0c;字数有些多&#xff0c;分开…

多线程【线程概念+线程控制】

前置知识 在谈多进程之前&#xff0c;我们在谈一谈页表&#xff0c;在语言中:char* str”hello world”; *str”H”;运行时会报错&#xff0c;原因在于&#xff1a;字符串在已初始化数据区和代码区之间的&#xff0c;需要写的时候&#xff0c;我们需要对str进行虚拟地址和物理…

springboot第17集:Spring我的春天

Spring是一个开源免费的框架和容器&#xff0c;具有轻量级和非侵入式的特点。它支持控制反转(IoC)和面向切面(AOP)&#xff0c;同时提供了对事务和其他框架的支持。因此&#xff0c;简单来说&#xff0c;Spring就是一个轻量级的IoC和AOP容器框架。 假设有一个应用程序需要使用数…

【Golang】多线程爬虫的实现

〇、前言 Golang 是一种并发友好的语言&#xff0c;使用 goroutines 和 channels 可以轻松地实现多线程爬虫。具体地说&#xff0c;实现的是多协程。协程是一种比线程更轻量化的最小逻辑可运行单位&#xff0c;它不受操作系统调度&#xff0c;由用户调度。因此对于协程并发的控…

突发!ChatGPT王炸级更新!支持GPT-4联网 Code Interpreter!

4月30日&#xff0c;OpenAI官方悄悄发布了联网版GPT-3.5。虽然名字变了&#xff0c;但使用体验却是换汤不换药&#xff0c;还是那套。 然而&#xff0c;万万没想到的是&#xff0c;刚过去没几天&#xff0c;昨天5月4日&#xff0c;鱼哥发现自己的Plus账号竟然多了一些能力&…

AI 视频编辑革新:GEN-1 / GEN-2 引领新风潮

在早先的一篇文章中《AI 学习心得速览&#xff08;3月&#xff09;》&#xff0c;提到过一家AI视频公司RunWay&#xff0c;公司专注于 AI 视频处理&#xff0c;在二月份发布了第一个人工智能视频编辑模型 Gen-1&#xff0c;对视频素材进行转换成相应的风格。 RunwayML 今天来聊…

C#学习系列之throw new ApplicationException

C#学习系列之throw new ApplicationException 啰嗦问题解决总结 啰嗦 在项目的解码过程中使用到throw new ApplicationException语句&#xff0c;之前一致没有意识到这句话会带来很多问题。项目中使用这句话来捕捉解码过程中的解码异常问题。 问题 在使用throw new Applicati…

(二)【平衡小车制作】电机驱动(超详解)

一、硬件设计 1.直流减速电机   直流减速电机&#xff0c;即齿轮减速电机&#xff0c;是在普通直流电机的基础上&#xff0c;加上配套齿轮减速箱。齿轮减速箱的作用是&#xff0c;提供较低的转速&#xff0c;较大的力矩。  简单的来说&#xff0c;STM32分配两个IO口给一个…

LeetCoed 2, 23, 25, 112, 113

文章目录 1. 两数相加2. K 个一组翻转链表3. 合并 K 个升序链表4. 路径总和I5. 路径总和II 1. 两数相加 题目详情见: LeetCode2. 两数相加 题目描述相对来说比较绕, 我们可以直接理解为两个多位的整数相加, 只不过整数的每一位都是通过链表进行存储; 比如, 整数 342, 通过链表…

使用Webpack搭建项目(vue篇)

本篇承接使用Webpack搭建项目&#xff08;react篇&#xff09; 由于大部分配置一样&#xff0c;我们从上一篇react项目中&#xff0c;复制webpack.dev.js以及webpack.prod.js 开发模式 1.删除ReactRefreshWebpackPlugin 2.自动补充拓展名修改为.vue文件&#xff0c;同时处理…

每天一道算法练习题--Day21 第一章 --算法专题 --- ----------位运算

我这里总结了几道位运算的题目分享给大家&#xff0c;分别是 136 和 137&#xff0c; 260 和 645&#xff0c; 总共加起来四道题。 四道题全部都是位运算的套路&#xff0c;如果你想练习位运算的话&#xff0c;不要错过哦&#xff5e;&#xff5e; 前菜 开始之前我们先了解下…

【linux的学习与软件安装】

文章目录 linux的学习一、工具安装与联网&#xff1f;二、Linux软件安装1.安装jdk2.安装MySQL安装redis linux的学习 一、工具安装与联网&#xff1f; 1.1安装好VM后 进入vi /etc/sysconfig/network-scripts/ifcfg-ens33 然后ip addr 查看ip 1.2打开IDEA的tools 二、Linux软…

网络编程 | 多进程多线程并发服务器代码实现

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

5.5 Mybatis Update标签实战,返回值是什么? 教你通常处理做法

本文目录 前言一、update标签实战① 在UserMapper接口中新增update方法② MybatisX插件生成update标签③ 写update SQL 语句 二、update sql返回值是什么?三、Mybatis update标签返回值是什么?四、实现简易的修改密码API1. dal层2. service层3. web层自测通过 五、Git提交最后…

vue - 常见的移动端rem适配方案

移动端rem适配方案 rem适配原理方案1&#xff1a;rem媒体查询方案2&#xff1a;jsrem方案3&#xff1a;vwrem&#xff08;不用查询屏幕宽度&#xff09; 移动端适配经常使用的就是 rem; 主要有以下几种方案&#xff1a; 1&#xff1a;rem 媒体查询&#xff08;media&#xff0…

蓝桥杯最后一战

目录 分巧克力_二分 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码&#xff1a; 巧克力 - 优先队列 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码&#xff1a; 思路分析&#xff1a; 秘密行动_dp 蓝桥杯算法提高-秘密行动 题目描述 …

Unity之OpenXR+XR Interaction Toolkit 安装和配置

前言 XR Interaction Toolkit 是Unity基于OpenXR标准&#xff0c;发布的一套XR工具&#xff0c;目的是方便我们快速接入XR相关的SDK&#xff0c;并且做到兼容不同VR设备的目的&#xff0c;目前流行的VR设备如Oculus&#xff0c;Metal&#xff0c;HTC Vive&#xff0c;Pico等统…

改进YOLOv8 | 主干网络篇 | YOLOv8 更换骨干网络之 MobileNetV3 | 《搜寻 MobileNetV3》

论文地址:https://arxiv.org/abs/1905.02244 代码地址:https://github.com/xiaolai-sqlai/mobilenetv3 我们展示了基于互补搜索技术和新颖架构设计相结合的下一代 MobileNets。MobileNetV3通过结合硬件感知网络架构搜索(NAS)和 NetAdapt算法对移动设计如何协同工作,利用互…