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 second1.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;}语法规则
- switch 括号内:只能是 整型、字符型(int /char),不能是浮点型、区间表达式
- case 后面:必须是常量,不能写变量、表达式
- break:跳出 switch,不加 break 会发生穿透(继续执行下一个 case)
- 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;}