C语言·分支和循环语句(超详细系列·全面总结)

前言:Hello大家好😘,我是心跳sy,为了更好地形成一个学习c语言的体系,最近将会更新关于c语言语法基础的知识,今天更新一下分支循环语句的知识点,我们一起来看看吧~

目录

一、什么是语句?💫

1、⭐️语句的定义⭐️

2、⭐️语句的分类⭐️

二、分支语句 💫

1、⭐️if 语句⭐️

2、⭐️switch 语句⭐️

三、循环语句 💫

1、⭐️while 循环⭐️

1.1、🌈while 循环中的 break 

1.2、🌈while 循环中的continue 

2、⭐️for 循环⭐️

2.1、🌈for 循环的变种

2.2、🌈for 循环与 while 循环

3、⭐️do...while() 循环⭐️


 

🌈心跳sy的C语言专栏  ⏪C语言知识点汇总到这了,有兴趣的友友可以订阅看看哟~

一、什么是语句?💫

1、⭐️语句的定义⭐️

在C语言中,语句是用于执行操作的代码单元。

语句总是以分号(;)结尾,这是C语言中语句的标志;语句可以简单,也可以复杂,它们可以执行各种操作,如计算、赋值、函数调用、条件执行、循环等。

2、⭐️语句的分类⭐️

👉C语句可分为以下五类:

🔶表达式语句

由表达式加上分号组成,例如:a+b=c;是一个赋值语句,用于将 b+c 的结果赋值给 a;

🔶函数调用语句

用于调用函数并执行它的代码,例如:printf("Hello,World!") 调用了标准库中的printf函数来输出文本到控制台;

🔶控制语句

用于控制程序的执行流程;包括条件语句(如 if 和 switch)和循环语句(如 for、while 和 do while)

🔶复合语句

由花括号 { } 包围的一个或多个语句的集合;

🔶空语句 

只有一个分号的语句,不执行任何操作,通常用于占位符或者满足语法要求;

👉本节主要介绍控制语句中的分支语句和循环语句~

二、分支语句 💫

👉分支语句又叫条件判断语句,是一种选择结构,包括 if 语句和 switch 语句;

1、⭐️if 语句⭐️

⭕️if语句:用于基于条件执行代码块

⭕️语法结构

if(表达式)    

    语句;

if (condition)
{//如果条件为真,执行这里的代码
}

⭕️if 语句还可以与 else 语句结合使用,用于在条件为 false 时执行另一段代码:  

if(表达式)    

    语句1;

else  

    语句2;

if (condition) 
{// 如果条件为真,执行这里的代码
} 
else 
{// 如果条件为假,执行这里的代码
}

⭕️if 多分支,语句可以嵌套,以便更复杂的条件检查:

if(表达式1)    

   语句1;

else if(表达式2)    

   语句2;

else    

   语句3;

if (condition1) 
{// 如果条件1为真,执行这里的代码
} 
else if (condition2) 
{// 如果条件1为假且条件2为真,执行这里的代码
} 
else 
{// 如果条件1和条件2都为假,执行这里的代码
}

👉代码演示:

#include <stdio.h>
//代码1
int main()
{int age = 0;scanf("%d", &age);if(age<18){printf("未成年\n");}
}

🔸输入的年龄若小于18,则输出“未成年”并换行;

int main()
{int age = 0;scanf("%d", &age);if(age<18){printf("未成年\n");}else{printf("成年\n");}
}

🔸输入年龄若小于18则输出未成年,否则输出成年; 

#include <stdio.h>
int main()
{int age = 0;scanf("%d", &age);if(age<18){printf("少年\n");}else if(age>=18 && age<30){printf("青年\n");}else if(age>=30 && age<50){printf("中年\n");}else if(age>=50 && age<80){printf("老年\n");}else{printf("老寿星\n");}}

🔸输入年龄若小于18,则输出少年;若大于等于18小于30,则输出青年;若大于等于30小于50,则输出中年;若大于等于50,小于80,则输出老年;若大于等于80,则输出老寿星; 

🔴注意:

else 的匹配问题:else 是和它离得最近的 if 匹配的。

2、⭐️switch 语句⭐️

👉在C语言中,switch 语句提供了一种根据不同条件执行不同代码块的方法,它是一种多分支选择结构,适用于一个变量或表达式有多种可能的值(比如5、6、7或以上个值)时进行决策。

👉switch 语句的语法如下:

switch (expression) 
{case constant1:// 如果expression等于constant1,则执行这里的代码break;case constant2:// 如果expression等于constant2,则执行这里的代码break;// 可以有任意数量的casedefault:// 如果expression与所有constant都不匹配,则执行这里的代码break;
}

⭕️其中 expression 通常是一个变量或整型表达式,constant1、2是整型常量表达式,每个 case 后跟一个常量值(如整数常量或字符常量),如果 expression 的值与某个 case 后的常量值相等,则执行该 case 后的代码块,直到遇到 break 语句为止。如果没有任何 case 常量与 expression 的值匹配,且提供了 default 标签,则执行 default 后的代码块。

⭕️break 语句用于退出 switch 语句,防止执行其他 case 的代码块。如果忘记在每个 case 的代码块末尾添加 break 语句,程序将继续执行下一个 case 的代码块,直到遇到 break 为止,这可能是程序员想要的行为,也可能导致错误,所以在使用时需格外注意。

👉以下演示了根据一周的不同天数打印不同的消息:

#include <stdio.h>int main() {int day = 3; // 假设今天是星期三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;}return 0;
}

🔸switch 语句检查变量 day 的值,并根据其值执行相应的 case 分支。由于 day 的值为3,程序将打印“今天是星期三”。如果 day 的值不在1到7之间,程序将执行 default 标签后的代码块。 

三、循环语句 💫

1、⭐️while 循环⭐️

🍀上文介绍的if语句,当条件满足的情况下,if语句后的语句执行,否则不执行。 但是这个语句只会执行一次。

❓由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。 那我们怎么做呢?

⭕️在C语言中,while 循环是一种基本的循环结构,它允许你重复执行一段代码,直到指定的条件不再满足。while 循环在循环开始之前检查条件,因此它可能完全不执行循环体中的代码,如果初始条件就不满足。while 循环的语法如下:  

while (condition) 
{// 循环体:只要condition为真,就会重复执行的代码块
}

👉condition 是一个表达式,每次循环开始前都会对其进行求值。如果 condition 的值为真,则执行循环体内的代码块。执行完循环体内的代码后,程序会回到 while 语句处,再次检查 condition 的值,若为真则再次执行循环体中的代码,这个过程会一直重复,直到 condition 的值为假,此时循环终止,程序会继续执行循环之后的下一条语句。  

🔸举例:

//计算1到5的和:#include <stdio.h>int main() 
{int i = 1; // 初始化变量iint sum = 0; // 初始化总和变量while (i <= 5) { // 当i小于或等于5时循环sum += i; // 将i加到总和i++; // 递增i}printf("1到5的和是: %d\n", sum); // 输出结果return 0;
}

🔸初始条件满足,循环开始执行。循环体中的代码将 i 加到 sum 上,并将 i 递增。每次循环结束后,都会再次检查 i 是否小于或等于5。当 i 的值递增至6时,条件不再满足,循环终止。

1.1、🌈while 循环中的 break 

#include <stdio.h>
int main()
{int i = 1;while(i<=10){if(i == 5)break;printf("%d ", i);i = i+1;}return 0;
}

🔸可见输出结果是1234,说明循环只输出了四次,到第五次结束循环;

⭕️总结:

break在while循环中的作用: 在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。 

1.2、🌈while 循环中的continue 

​
#include <stdio.h>
int main()
{int i = 1;while(i<=10){if(i == 5)continue;printf("%d ", i);i = i+1;}return 0;
}​

🔸可以看到,i 进循环之后,i 不断增加,当 i 等于5时,进行了一次 continue,之后输出就没有 i 等于5的值,但之后仍然进入循环,持续输出直到满足 while 的条件为止,循环结束;

⭕️总结:

continue在while循环中的作用就是: continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分,进行下一次循环的入口判断。

2、⭐️for 循环⭐️

⭕️语法: for(表达式1; 表达式2; 表达式3)

                      循环语句;

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

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

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

//使用for循环 在屏幕上打印1-10的数字。
#include <stdio.h>int main()
{int i = 0;//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)for(i=1; i<=10; i++){printf("%d ", i);}return 0;
}

⭕️在for循环中也可以出现break和continue,他们的意义和使用方法在while循环中是一样的,注意遇到 continue ,会跳过 continue 后面的代码,直接去循环的调整部分。

2.1、🌈for 循环的变种

int main()
{for (;;){printf("hehe\n");}return 0;
}

🔸此代码for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,很容易导致问题,比如上述代码判断部分恒为真,最后输出无数次hehe,且不会停止,会一直循环。

int main()
{int i = 0;int j = 0;//这里打印多少个hehe?for (i = 0; i < 10; i++){for (j = 0; j < 10; j++){printf("hehe\n");}}return 0;
}

🔸此代码包含了一个双层嵌套的 for 循环结构。外层 for 循环控制变量 i ,内层循环控制变量 j,会输出10*10=100个hehe

int main()
{//代码3int i = 0;int j = 0;//如果省略掉初始化部分,这里打印多少个hehe?for (; i < 10; i++){for (; j < 10; j++){printf("hehe\n");}}return 0;
}

🔸此代码最后只打印出10个hehe,这是因为 i 和 j 都省略了初始化部分,尤其是 j 省略了 j=0,这会导致第一次外循环进来的时候,j 的内循环已经循环了三次,j 已经变成10了,当 i 再次增加的时候内循环就进不去了,所以只输出了10个。

2.2、🌈for 循环与 while 循环

🔶while 循环在循环开始前检查条件,如果条件为真,则执行循环体中的代码。 

适用场景:

🔸当循环的结束条件在循环体内部动态计算时。

🔸当只需检查一个条件就决定是否继续循环时。 

🔶for 循环也用于重复执行代码,但它在循环开始前就初始化变量,并在每次循环结束时更新变量,检查条件

适用场景:

🔸当已知循环的执行次数时。

🔸遍历数组或集合等需要计次遍历的情况。

区别:

🔶初始化:for 循环将初始化、条件检查和步进操作集于一体,适合于执行已知次数的循环;while 循环在循环开始前仅检查条件,适用于未知循环次数的情况。

🔶代码结构:for 循环的代码结构集中,使得循环的初始化、条件和步进一目了然,便于阅读和管理;while 循环的这些元素可能分散在代码的不同部分,需要更多的注意力来确保逻辑正确。

3、⭐️do...while() 循环⭐️

⭕️语法: 

do

循环语句;

while(表达式);

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

int main()
{int i = 10;do{printf("%d\n", i);} while (i < 10);return 0;
}

🔸从显示结果来看,do while()循环先执行一次代码块内容,之后才进入while语句中的判断,所以输出一次10。

🔸在do while() 循环中也可以出现break和continue,他们的意义和使用方法在while循环中是一样的

 本文到此结束💞💞💞感谢大家花费宝贵的时间阅读本文章,制作不易,希望大家多多支持呀😘😘😘,如有任何问题欢迎各位大佬在评论区批评指正!!!

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

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

相关文章

linux配置podman阿里云容器镜像加速器

1.下载podman yum install -y podman systemctl status podman systemctl start podman 2.获取阿里云个人容器镜像加速器地址 访问阿里云官网&#xff1a;首先&#xff0c;您需要访问阿里云&#xff08;Alibaba Cloud&#xff09;的官方网站。阿里云官网的URL是&#xff1a;…

OS:处理机进程调度

1.BackGround&#xff1a;为什么要进行进程调度&#xff1f; 在多进程环境下&#xff0c;内存中存在着多个进程&#xff0c;其数目往往多于处理机核心数目。这就要求系统可以按照某种算法&#xff0c;动态的将处理机CPU资源分配给处于就绪状态的进程。调度算法的实质其实是一种…

对于品牌方来说,小红书探店应该怎么做?

小红书是中国最大的生活分享社交平台之一&#xff0c;它现在不仅仅是一个购物推荐平台&#xff0c;也是一个探店的好去处。 用户在网络上看到一家心仪的店铺&#xff0c;却又无法亲身到访&#xff0c;对店铺的产品存疑&#xff0c;这时候就会在小红书搜索具体的相关店铺信息。 …

【代码随想录】【算法训练营】【第58天 4】 [卡码104]建造最大岛屿

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 58&#xff0c;周四&#xff0c;ding~ 题目详情 [卡码104] 建造最大岛屿 题目描述 卡码104 建造最大岛屿 LeetCode类似题目827 最大人工岛 解题思路 前提&#xff1a; 思路&#xff1a; 重点…

【LeetCode】从前序与中序遍历序列构造二叉树

目录 一、题目二、解法完整代码 一、题目 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9…

在西藏上大学是一种什么体验?如何解决语言问题?

在西藏地区上大学是一种独特而难忘的经历&#xff0c;它不仅提供了接触壮丽自然风光和深入了解藏族文化的机会&#xff0c;也带来了适应高原气候和生活方式的挑战。学生将在这里体验到丰富的教育资源和学术研究素材&#xff0c;同时在生活和人际交往中培养适应能力和独立性。这…

密码学基础-Hash、MAC、HMAC 的区别与联系

密码学基础-Hash、MAC、HMAC 的区别与联系 Hash Hash 是一种从一段数据中创建小的数字“指纹”的方法。就像一个人的指纹代表一个人的信息一样&#xff0c;Hash 对输入的数据进行整理&#xff0c;生成一个代表该输入数据的“指纹” 数据。通常该指纹数据也可称之为摘要、散列…

文件包含漏洞: 函数,实例[pikachu_file_inclusion_local]

文件包含 文件包含是一种较为常见技术&#xff0c;允许程序员在不同的脚本或程序中重用代码或调用文件 主要作用和用途&#xff1a; 代码重用&#xff1a;通过将通用函数或代码段放入单独的文件中&#xff0c;可以在多个脚本中包含这些文件&#xff0c;避免重复编写相同代码。…

RabbitMQ的学习和模拟实现|Protobuf的介绍和简单使用

protbuf的介绍和简单使用 项目仓库&#xff1a;https://github.com/ffengc/HareMQ protobuf的安装&#xff1a;README-cn.md#环境配置 基于Protobuf的一个小项目&#xff1a;基于protobuf和httplib的在线通讯录项目框架&#xff5c;Protobuf应用小项目 protobuf是什么 Pro…

TinyVue:与 Vue 交往八年的组件库

本文由体验技术团队莫春辉老师原创~ 去年因故停办的 VueConf&#xff0c;今年如约在深圳举行。作为东道主 & 上届 VueConf 讲师的我&#xff0c;没有理由不来凑个热闹。大会结束后&#xff0c;我见裕波在朋友圈转发 Jinjiang 的文章《我和 Vue.js 的十年》&#xff0c;我就…

openlayers 3d 地图 非三维 立体地图 行政区划裁剪 地图背景

这是实践效果 如果没有任何基础 就看这个专栏&#xff1a;http://t.csdnimg.cn/qB4w0 这个专栏里有从最简单的地图到复杂地图的示例 最终效果&#xff1a; 线上示例代码&#xff1a; 想要做这个效果 如果你的行政区划编辑点较多 可能会有卡顿感 如果出现卡顿感需要将边界点相应…

Python爬虫-淘宝搜索热词数据

前言 本文是该专栏的第70篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者有详细针对“亚马逊Amazon搜索热词”数据采集的详细介绍,对此感兴趣的同学,可以往前翻阅《Python爬虫-某跨境电商(AM)搜索热词》进行查看。 而在本文,笔者将以淘宝为例,获取…

【扩散模型(五)】IP-Adapter 源码详解3-推理代码

系列文章目录 【扩散模型&#xff08;一&#xff09;】中介绍了 Stable Diffusion 可以被理解为重建分支&#xff08;reconstruction branch&#xff09;和条件分支&#xff08;condition branch&#xff09;【扩散模型&#xff08;二&#xff09;】IP-Adapter 从条件分支的视…

【OAuth2系列】集成微信小程序登录到 Spring Security OAuth 2.0

作者&#xff1a;后端小肥肠 创作不易&#xff0c;未经允许严禁转载。 姊妹篇&#xff1a; 【Spring Security系列】权限之旅&#xff1a;SpringSecurity小程序登录深度探索_spring security 微信小程序登录-CSDN博客 目录 1. 前言 2. 总体登录流程 3. 数据表设计 3.1. sys…

Python测试服务器连接的实战代码

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

windows server——4.安装DNS管理器

windows server——4.安装DNS管理器 一、准备二、安装DNS管理器1.打开服务器管理器2.添加dns服务器 三、验证 一、准备 windows server电脑&#xff08;已安装IIS&#xff09; 静态网站数据包 二、安装DNS管理器 1.打开服务器管理器 2.添加dns服务器 点击管理——添加角色和…

Java语言程序设计基础篇_编程练习题*15.16(两个可移动的顶点以及它们间的距离)

*15.16&#xff08;两个可移动的顶点以及它们间的距离) 请编写一个程序&#xff0c;显示两个分别位于(40&#xff0c;40)和(120&#xff0c;150) 的半径为10的圆&#xff0c;并用一条直线连接两个圆&#xff0c;如图15-28b所示。圆之间的距离显示在直线上。 用户可以拖动圆&am…

指标平台新书发布:智能驱动,数据管研用一体化新革命

在当下数字化经营的市场环境中&#xff0c;企业面临着前所未有的挑战和机遇。随着业务的不断扩展和市场的日益复杂&#xff0c;数据作为企业的核心资产&#xff0c;其重要性愈发凸显。然而“数据孤岛和数据不清晰”这一问题却成为了制约企业数字化进程和竞争力的关键因素。为了…

Windows下载、安装、部署Redis服务的详细流程

本文介绍在Windows电脑中&#xff0c;下载、安装、部署并运行Redis数据库服务的方法。 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源、高性能的键值存储系统&#xff0c;最初由Salvatore Sanfilippo在2009年发布&#xff0c;并由Redis Labs维护。Redis因其…

<数据集>水果识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;10012张 标注数量(xml文件个数)&#xff1a;10012 标注数量(txt文件个数)&#xff1a;10012 标注类别数&#xff1a;7 标注类别名称&#xff1a;[Watermelon, Orange, Grape, Apple, peach, Banana, Pineapple] 序…