1. if-else 条件语句
1.1 基本作用
根据条件真假 ,选择性执行代码。
C 语言规则:非 0 为真,0 为假。
1.2 三种基础格式
格式 1:单 if(满足条件才执行)
c
if(条件表达式)
{
// 条件为真时执行
}
c
#include <stdio.h>
int main()
{
int num = 90;
if(num >= 60)
{
printf("及格\n");
}
return 0;
}
格式 2:if-else(二选一)
c
if(条件表达式)
{
// 条件为真执行
}
else
{
// 条件为假执行
}
c
#include <stdio.h>
int main()
{
int num = 90;
if(num >= 60){
printf("good\n");
}else{
printf("not good\n");
}
return 0;
}
c
D:\cproject\cmake-build-debug\high.exe
good
格式 3:if-else if-else(多分支判断)
适合区间判断、多条件依次筛选。
c
if(条件1)
{
// 条件1成立
}
else if(条件2)
{
// 条件1不成立、条件2成立
}
else if(条件3)
{
// 条件1、2不成立、条件3成立
}
else
{
// 以上都不成立
}
c
#include <stdio.h>
int main()
{
int num = 88;
if(num >= 90){
printf("first\n");
}else if(num >= 80){
printf("second\n");
}else if(num >= 70){
printf("third\n");
}else{
printf("last\n");
}
return 0;
}
c
D:\cproject\cmake-build-debug\high.exe
second
1.3 嵌套 if-else
if /else 内部再写 if 判断,实现多层逻辑
c
#include <stdio.h>
int main()
{
int age = 20;
int sex = 1; // 1男 0女
if(age >= 18)
{
printf("成年\n");
if(sex == 1)
{
printf("男性\n");
}
else
{
printf("女性\n");
}
}
else
{
printf("未成年\n");
}
return 0;
}
2. switch-case 分支语句
2.1 适用场景
判断某个变量等于某个固定值 (等值判断),不适合区间判断。
相比多分支 if-else if,结构更清晰、执行效率更高。
2.2 标准语法
c
switch(表达式)
{
case 常量1:
语句;
break;
case 常量2:
语句;
break;
// 可写多个 case
default:
以上都不匹配时执行;
break;
}
语法规则
- switch 括号内:只能是 整型、字符型(int /char),不能是浮点型、区间表达式
- case 后面:必须是常量,不能写变量、表达式
- break:跳出 switch,不加 break 会发生穿透(继续执行下一个 case)
- default:可选,所有 case 都不匹配时执行,位置任意,一般放最后。
2.3 示例
数字匹配
c
#include <stdio.h>
int main()
{
int num = 2;
switch(num)
{
case 1:
printf("数字1\n");
break;
case 2:
printf("数字2\n");
break;
case 3:
printf("数字3\n");
break;
default:
printf("其他数字\n");
break;
}
return 0;
}
字符型 switch
c
#include <stdio.h>
int main()
{
char ch = 'B';
switch(ch)
{
case 'A':
printf("等级A\n");
break;
case 'B':
printf("等级B\n");
break;
case 'C':
printf("等级C\n");
break;
default:
printf("未知等级\n");
}
return 0;
}
经典用法:case 穿透(合理利用)
多个 case 执行同一段代码,可以省略中间的 break
c
#include <stdio.h>
int main()
{
int month = 3;
switch(month)
{
case 3:
case 4:
case 5:
printf("春季\n");
break;
case 6:
case 7:
case 8:
printf("夏季\n");
break;
case 9:
case 10:
case 11:
printf("秋季\n");
break;
case 12:
case 1:
case 2:
printf("冬季\n");
break;
default:
printf("月份错误\n");
}
return 0;
}
3. while、do-while、for
C 语言常用三种循环:while、do-while、for,配合 break、continue 实现跳转,核心作用:重复执行一段代码
cpp
通用规则:表达式结果 非 0 为真,0 为假,条件为真继续循环,条件为假退出循环
3.1 while 循环
c
while(条件表达式)
{
// 循环体:条件为真时重复执行
}
执行流程:
1.先判断条件表达式
2.条件为真 → 执行循环体,再回到步骤 1
3.条件为假 → 直接跳出循环
基础示例
c
#include <stdio.h>
int main()
{
int i = 1;
while(i <= 5)
{
printf("%d ", i);
i++; // 自增,避免死循环
}
return 0;
}
特点:
先判断,后执行:条件一开始就为假,循环体一次都不执行
适合循环次数不确定的场景
死循环(慎用)
c
while(1)
{
printf("死循环\n");
}
3.2 do-while 循环
c
do
{
// 循环体
}while(条件表达式); // 末尾必须加分号 ;
执行流程:
1.先执行一次循环体
2.再判断条件
3.条件为真继续循环,为假则退出
c
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
}while(i <= 5);
return 0;
}
核心特点:
先执行,后判断:无论条件真假,循环体至少执行 1 次
末尾 ; 不能漏,语法强制要求
常用场景:菜单交互、至少执行一次的业务逻辑
3.3 for 循环
c
for(表达式1; 表达式2; 表达式3)
{
// 循环体
}
表达式 1:初始化变量,只执行一次
表达式 2:循环条件判断(同 while)
表达式 3:每次循环结束后执行(一般做自增 / 自减)
执行流程:
1.执行 表达式 1 → 初始化
2.判断 表达式 2:
为真 → 执行循环体 → 执行表达式 3 → 回到步骤 2
为假 → 跳出循环
c
#include <stdio.h>
int main()
{
int i;
// 初始化i=1; 判断i<=5; 每次结束i++
for(i = 1; i <= 5; i++)
{
printf("%d ", i);
}
return 0;
}
for 循环灵活写法
写法 1:省略表达式 1(变量提前初始化)
c
int i = 1;
for(; i <= 5; i++)
{
printf("%d ", i);
}
写法 2:省略表达式 3(自增写在循环体内)
c
int i;
for(i = 1; i <= 5; )
{
printf("%d ", i);
i++;
}
写法 3:三个全省略 → 死循环
c
for(;;)
{
printf("死循环\n");
}
4. 循环跳转语句:break /continue
4.1 break
作用:直接跳出当前所在循环 /switch,终止整个循环。
c
#include <stdio.h>
int main()
{
int i;
for(i = 1; i <= 5; i++)
{
if(i == 3)
{
break; // 遇到i=3,直接跳出循环
}
printf("%d ", i);
}
return 0;
}
4.2 continue
作用:跳过本次循环剩余代码,直接进入下一次循环判断,不终止循环。
c
#include <stdio.h>
int main()
{
int i;
for(i = 1; i <= 5; i++)
{
if(i == 3)
{
continue; // i=3时,跳过本次输出,直接下一轮
}
printf("%d ", i);
}
return 0;
}
5. 循环嵌套(多层循环)
循环内部再写循环,常用场景:打印图形、二维数据遍历。
示例:九九乘法表
c
#include <stdio.h>
int main()
{
int i, j;
// 外层:行
for(i = 1; i <= 9; i++)
{
// 内层:列
for(j = 1; j <= i; j++)
{
printf("%d*%d=%d ", j, i, i*j);
}
printf("\n"); // 换行
}
return 0;
}
c
规则:break / continue 只作用于当前一层循环,不会影响外层
实战案例
c
#include <stdio.h>
int main()
{
int sum = 0;
int i;
for(i = 1; i <= 100; i++)
{
sum += i;
}
printf("总和 = %d\n", sum); // 输出 5050
return 0;
}