news 2026/5/30 3:36:19

8 判断,分支,循环语句

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
8 判断,分支,循环语句

1. if-else 条件语句

1.1 基本作用

根据条件真假,选择性执行代码。
C 语言规则:非 0 为真,0 为假

1.2 三种基础格式

格式 1:单 if(满足条件才执行)

if(条件表达式){// 条件为真时执行}
#include<stdio.h>intmain(){intnum=90;if(num>=60){printf("及格\n");}return0;}

格式 2:if-else(二选一)

if(条件表达式){// 条件为真执行}else{// 条件为假执行}
#include<stdio.h>intmain(){intnum=90;if(num>=60){printf("good\n");}else{printf("not good\n");}return0;}
D:\cproject\cmake-build-debug\high.exe good

格式 3:if-else if-else(多分支判断)
适合区间判断、多条件依次筛选。

if(条件1){// 条件1成立}elseif(条件2){// 条件1不成立、条件2成立}elseif(条件3){// 条件1、2不成立、条件3成立}else{// 以上都不成立}
#include<stdio.h>intmain(){intnum=88;if(num>=90){printf("first\n");}elseif(num>=80){printf("second\n");}elseif(num>=70){printf("third\n");}else{printf("last\n");}return0;}
D:\cproject\cmake-build-debug\high.exe second
1.3 嵌套 if-else

if /else 内部再写 if 判断,实现多层逻辑

#include<stdio.h>intmain(){intage=20;intsex=1;// 1男 0女if(age>=18){printf("成年\n");if(sex==1){printf("男性\n");}else{printf("女性\n");}}else{printf("未成年\n");}return0;}

2. switch-case 分支语句

2.1 适用场景

判断某个变量等于某个固定值(等值判断),不适合区间判断。
相比多分支 if-else if,结构更清晰、执行效率更高。

2.2 标准语法
switch(表达式){case常量1:语句;break;case常量2:语句;break;// 可写多个 casedefault:以上都不匹配时执行;break;}

语法规则

  1. switch 括号内:只能是 整型、字符型(int /char),不能是浮点型、区间表达式
  2. case 后面:必须是常量,不能写变量、表达式
  3. break:跳出 switch,不加 break 会发生穿透(继续执行下一个 case)
  4. default:可选,所有 case 都不匹配时执行,位置任意,一般放最后。
2.3 示例

数字匹配

#include<stdio.h>intmain(){intnum=2;switch(num){case1:printf("数字1\n");break;case2:printf("数字2\n");break;case3:printf("数字3\n");break;default:printf("其他数字\n");break;}return0;}

字符型 switch

#include<stdio.h>intmain(){charch='B';switch(ch){case'A':printf("等级A\n");break;case'B':printf("等级B\n");break;case'C':printf("等级C\n");break;default:printf("未知等级\n");}return0;}

经典用法:case 穿透(合理利用)
多个 case 执行同一段代码,可以省略中间的 break

#include<stdio.h>intmain(){intmonth=3;switch(month){case3:case4:case5:printf("春季\n");break;case6:case7:case8:printf("夏季\n");break;case9:case10:case11:printf("秋季\n");break;case12:case1:case2:printf("冬季\n");break;default:printf("月份错误\n");}return0;}

3. while、do-while、for

C 语言常用三种循环:while、do-while、for,配合 break、continue 实现跳转,核心作用:重复执行一段代码

通用规则:表达式结果 非0为真,0为假,条件为真继续循环,条件为假退出循环
3.1 while 循环
while(条件表达式){// 循环体:条件为真时重复执行}

执行流程:
1.先判断条件表达式
2.条件为真 → 执行循环体,再回到步骤 1
3.条件为假 → 直接跳出循环

基础示例

#include<stdio.h>intmain(){inti=1;while(i<=5){printf("%d ",i);i++;// 自增,避免死循环}return0;}

特点:
先判断,后执行:条件一开始就为假,循环体一次都不执行
适合循环次数不确定的场景

死循环(慎用)

while(1){printf("死循环\n");}
3.2 do-while 循环
do{// 循环体}while(条件表达式);// 末尾必须加分号 ;

执行流程:
1.先执行一次循环体
2.再判断条件
3.条件为真继续循环,为假则退出

#include<stdio.h>intmain(){inti=1;do{printf("%d ",i);i++;}while(i<=5);return0;}

核心特点:
先执行,后判断:无论条件真假,循环体至少执行 1 次
末尾 ; 不能漏,语法强制要求
常用场景:菜单交互、至少执行一次的业务逻辑

3.3 for 循环
for(表达式1;表达式2;表达式3){// 循环体}

表达式 1:初始化变量,只执行一次
表达式 2:循环条件判断(同 while)
表达式 3:每次循环结束后执行(一般做自增 / 自减)

执行流程:
1.执行 表达式 1 → 初始化
2.判断 表达式 2:
为真 → 执行循环体 → 执行表达式 3 → 回到步骤 2
为假 → 跳出循环

#include<stdio.h>intmain(){inti;// 初始化i=1; 判断i<=5; 每次结束i++for(i=1;i<=5;i++){printf("%d ",i);}return0;}

for 循环灵活写法
写法 1:省略表达式 1(变量提前初始化)

inti=1;for(;i<=5;i++){printf("%d ",i);}

写法 2:省略表达式 3(自增写在循环体内)

inti;for(i=1;i<=5;){printf("%d ",i);i++;}

写法 3:三个全省略 → 死循环

for(;;){printf("死循环\n");}

4. 循环跳转语句:break /continue

4.1 break

作用:直接跳出当前所在循环 /switch,终止整个循环。

#include<stdio.h>intmain(){inti;for(i=1;i<=5;i++){if(i==3){break;// 遇到i=3,直接跳出循环}printf("%d ",i);}return0;}
4.2 continue

作用:跳过本次循环剩余代码,直接进入下一次循环判断,不终止循环。

#include<stdio.h>intmain(){inti;for(i=1;i<=5;i++){if(i==3){continue;// i=3时,跳过本次输出,直接下一轮}printf("%d ",i);}return0;}

5. 循环嵌套(多层循环)

循环内部再写循环,常用场景:打印图形、二维数据遍历。
示例:九九乘法表

#include<stdio.h>intmain(){inti,j;// 外层:行for(i=1;i<=9;i++){// 内层:列for(j=1;j<=i;j++){printf("%d*%d=%d ",j,i,i*j);}printf("\n");// 换行}return0;}
规则:break/continue只作用于当前一层循环,不会影响外层

实战案例

#include<stdio.h>intmain(){intsum=0;inti;for(i=1;i<=100;i++){sum+=i;}printf("总和 = %d\n",sum);// 输出 5050return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 3:27:32

TASSEL实战:用Kinship矩阵和PCA图快速洞察你的GWAS数据(附R代码)

TASSEL实战&#xff1a;用Kinship矩阵和PCA图快速洞察GWAS数据刚完成基因型数据质控的研究者&#xff0c;往往面临一个关键问题&#xff1a;如何快速判断样本间的亲缘关系和群体结构&#xff1f;这直接关系到后续GWAS分析中模型的选择——是采用简单的GLM模型&#xff0c;还是需…

作者头像 李华
网站建设 2026/5/30 3:23:57

C166架构中宏与内联汇编的优化技巧

1. 宏与内联汇编的深度解析在嵌入式开发中&#xff0c;宏和内联汇编的结合使用是提升代码效率和实现底层控制的常见手段。C166架构作为工业级微控制器的经典选择&#xff0c;其开发工具链对这类高级用法有着独特的处理方式。1.1 宏的基本工作原理宏在预处理器阶段进行文本替换&…

作者头像 李华