8 判断,分支,循环语句

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;
}

语法规则

  1. switch 括号内:只能是 整型、字符型(int /char),不能是浮点型、区间表达式
  2. case 后面:必须是常量,不能写变量、表达式
  3. break:跳出 switch,不加 break 会发生穿透(继续执行下一个 case)
  4. 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;
}
相关推荐
朔北之忘 Clancy1 小时前
2026 年 3 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·青少年编程·题解·考级
万法若空1 小时前
Libevent C语言开发完全教程:从入门到实战
c语言·网络
kkeeper~2 小时前
0基础C语言积跬步之自定义类型结构体
c语言·开发语言
小何code4 小时前
C语言【初阶】第1节,初识C语言
c语言·开发语言
莫陌尛.4 小时前
Fuzzy C-Mean Clustering (FCM)
c语言·开发语言
飞天狗1116 小时前
2025第十六届蓝桥杯c/c++B组国赛题解
c语言·c++·算法·蓝桥杯
mN9B2uk176 小时前
MySQL命令行导出数据库
c语言·数据库·mysql
zlinear数据采集卡6 小时前
电源纹波无处遁形!工业采集卡电源去耦与滤波电路深度解析
c语言·嵌入式硬件·fpga开发·自动化·硬件架构
QiLinkOS7 小时前
合肥气链科技有限公司创办与未来技术应用
c语言·数据结构·c++·人工智能·单片机·嵌入式硬件·算法