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循环中是一样的
本文到此结束💞💞💞感谢大家花费宝贵的时间阅读本文章,制作不易,希望大家多多支持呀😘😘😘,如有任何问题欢迎各位大佬在评论区批评指正!!!
相关文章:

C语言·分支和循环语句(超详细系列·全面总结)
前言:Hello大家好😘,我是心跳sy,为了更好地形成一个学习c语言的体系,最近将会更新关于c语言语法基础的知识,今天更新一下分支循环语句的知识点,我们一起来看看吧~ 目录 一、什么是语句…...

Gateway源码分析:路由Route、断言Predicate、Filter
文章目录 源码总流程图说明GateWayAutoConfigurationDispatcherHandlergetHandler()handleRequestWith()RouteToRequestUrlFilterReactiveLoadBalancerClientFilterNettyRoutingFilter 补充知识适配器模式 详细流程图 源码总流程图 在线总流程图 说明 Gateway的版本使用的是…...

ARM体系结构和接口技术(十)按键中断实验①
一、按键中断实验 (一)分析按键电路图 (二)芯片手册 二、按键中断实验分析 注:NVIC----Cortx-M核GIC----Cortx-A核 (一)查看所有外设的总线以及寄存器基地址 注:GIC的总线是A7核的…...

PostgreSQL使用(二)——插入、更新、删除数据
说明:本文介绍PostgreSQL的DML语言; 插入数据 -- 1.全字段插入,字段名可以省略 insert into tb_student values (1, 张三, 1990-01-01, 88.88);-- 2.部分字段插入,字段名必须写全 insert into tb_student (id, name) values (2,…...
有关css的题目
css样式来源有哪些? 内联样式: <a style"color: red"> </a> 内部样式:<style></style> 外部样式:写在独立的 .css文件中的 浏览器的默认样式 display有哪些属性 none - 不展示 block - 块类型…...

【开源库】libodb库编译及使用
前言 本文介绍windows平台下libodb库的编译及使用。 文末提供libodb-2.4.0编译好的msvc2019_64版本,可直接跳转自取 ODB库学习相关 【开源库学习】libodb库学习(一) 【开源库学习】libodb库学习(二) 【开源库学习】…...

电力需求预测挑战赛笔记 Task3 #Datawhale AI 夏令营
上文: 电力需求预测挑战赛笔记 Task2 #Datawhale AI 夏令营-CSDN博客文章浏览阅读80次。【代码】电力需求预测挑战赛笔记 Task2。https://blog.csdn.net/qq_23311271/article/details/140360632 前面我们介绍了如何使用经验模型以及常见的lightgbm决策树模型来解决…...

Promise 详解(原理篇)
目录 什么是 Promise 实现一个 Promise Promise 的声明 解决基本状态 添加 then 方法 解决异步实现 解决链式调用 完成 resolvePromise 函数 解决其他问题 添加 catch 方法 添加 finally 方法 添加 resolve、reject、race、all 等方法 如何验证我们的 Promise 是否…...

动态内存经典笔试题分析
目录 1.题目一 2.题目二 3.题目三 4.题目四 1.题目一 #include<stdlib.h> #include<stdio.h> #include<string.h> void GetMemory(char* p) {p (char*)malloc(100); } void Test(void) {char* str NULL;GetMemory(str);strcpy(str, "hello world…...
JS设计模式(一)单例模式
注释很详细,直接上代码 本文建立在已有JS面向对象基础的前提下,若无,请移步以下博客先行了解 JS面向对象(一)类与对象写法 特点和用途: 全局访问点:通过单例模式可以在整个应用程序中访问同一个…...
uniapp动态计算并设置元素高度
<template><view><scroll-view id"sv-box" :scroll-y"true" :style"{height:navHeightpx}"></scroll-view><view id"btn-box"><button>取消</button><button>确认</button><…...
直播架构如何设计核心节点和边缘节点
在直播架构中,核心节点和边缘节点的分工及主要服务是确保直播服务稳定、高效和可扩展的关键。以下是对这些节点的详细描述: 核心节点 核心节点通常位于数据中心,负责处理直播的主要逻辑和数据处理。其主要服务包括: 直播管理后…...

自动驾驶-预测概览
通过生成一条路径来预测一个物体的行为,在每一个时间段内,为每一辆汽车重新计算预测他们新生成的路径,这些预测路径为规划阶段做出决策提供了必要信息 预测路径有实时性的要求,预测模块能够学习新的行为。我们可以使用多源的数据…...

基于PSO算法优化PID参数的一些问题
目录 前言 Q1:惯性权重ω如何设置比较好?学习因子C1和C2如何设置? Q2:迭代速度边界设定一定能够遍历(/覆盖)整个PID参数二维空间范围吗?还是说需要与迭代次数相关?迭代次数越高&a…...
什么是决策树?
1. 什么是决策树? 决策树(Decision Tree)是一种常用的机器学习算法,用于解决分类和回归问题。它通过构建树结构来表示决策过程,分支节点表示特征选择,叶节点表示类别或回归值。 2. 决策树的组成部分 决策…...
ASP 快速参考
ASP 快速参考 概述 ASP(Active Server Pages)是一种由微软开发的服务器端脚本环境,用于动态网页设计和开发。它允许开发者创建和运行动态交互性网页,如访问数据库、发送电子邮件等。ASP页面通常以.asp为文件扩展名,并…...

(二)原生js案例之数码时钟计时
原生js实现的数字时间上下切换显示时间的效果,有参考相关设计,思路比较难,代码其实很简单 效果 代码实现 必要的样式 <style>* {padding: 0;margin: 0;}.content{/* text-align: center; */display: flex;align-items: center;justif…...

[CSS] 浮动布局的深入理解与应用
文章目录 浮动的简介元素浮动后的特点解决浮动产生的影响浮动后的影响解决浮动产生的影响 浮动相关属性实际应用示例示例1:图片与文字环绕示例2:多列布局示例3:响应式布局 总结 浮动布局是CSS中一种非常强大的布局方式,最初设计用…...

Linux云计算 |【第一阶段】ENGINEER-DAY2
主要内容: 磁盘空间管理fdisk、parted工具、开机自动挂载、文件系统、交换空间 KVM虚拟化 实操前骤: 1)添加一块硬盘(磁盘),需要关机才能进行操作,点击左下角【添加硬件】 2)选择2…...

9.11和9.9哪个大?
没问题 文心一言 通义千问...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...