C语言分支与循环语句

C语言分支与循环语句

一、if-else 分支

if-else 是最基本的条件判断语句,根据表达式的真假决定执行哪段代码。

c 复制代码
#include <stdio.h>

int main() {
    int score = 78;

    if (score >= 90) {
        printf("优秀\n");
    } else if (score >= 80) {
        printf("良好\n");
    } else if (score >= 60) {
        printf("及格\n");
    } else {
        printf("不及格\n");
    }

    return 0;
}

输出:及格

if 后面的括号里放的是判断条件,条件为真(非0)就执行对应的代码块。else if 可以加多个,else 是兜底的,前面都不满足就走这里。


二、switch 语句

switch 适合对一个变量的多个固定值做判断,比一长串 if-else 看着清爽。

c 复制代码
#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;
        default:
            printf("其他\n");
            break;
    }

    return 0;
}

输出:星期三

注意每个 case 后面要加 break,不然会"穿透"继续往下执行。比如去掉上面 case 3 的 break,程序会把 case 4 也打印出来。default 相当于 else,前面都没匹配上就走这里。


三、for 循环

for 循环用得最多,一般当你明确知道要循环几次的时候用它。

c 复制代码
#include <stdio.h>

int main() {
    for (int i = 0; i < 5; i++) {
        printf("第 %d 次循环\n", i);
    }

    return 0;
}

输出:

第 0 次循环

第 1 次循环

第 2 次循环

第 3 次循环

第 4 次循环

for 括号里分三部分:初始化; 条件; 更新。i 从 0 开始,每次加 1,到 i 等于 5 的时候条件不成立,循环结束。


四、while 循环

while 循环适合不知道要循环几次,只关心条件是否满足的场景。

c 复制代码
#include <stdio.h>

int main() {
    int num = 1;

    while (num <= 100) {
        printf("%d ", num);
        num *= 2;
    }

    return 0;
}

输出:1 2 4 8 16 32 64

每次循环判断 num 是否小于等于 100,是就继续。一旦条件不满足就跳出。

还有一种 do-while,不管条件成不成立,先执行一次再说:

c 复制代码
#include <stdio.h>

int main() {
    int i = 10;

    do {
        printf("%d ", i);
        i--;
    } while (i > 0);

    return 0;
}

输出:10 9 8 7 6 5 4 3 2 1


五、break 和 continue

这两个关键字用来控制循环的执行流程。

break:直接跳出循环

执行到 break 的时候,不管循环条件还成不成立,直接结束整个循环。

c 复制代码
#include <stdio.h>

int main() {
    for (int i = 0; i < 10; i++) {
        if (i == 5) {
            break;
        }
        printf("%d ", i);
    }

    return 0;
}

输出:0 1 2 3 4

本来要循环 10 次,但 i 等于 5 的时候 break 了,后面的 5、6、7、8、9 全跳过了。

continue:跳过本次,继续下一次

continue 不会结束整个循环,只是跳过当前这一次的剩余代码,直接进入下一次循环。

c 复制代码
#include <stdio.h>

int main() {
    for (int i = 0; i < 10; i++) {
        if (i % 2 == 0) {
            continue;
        }
        printf("%d ", i);
    }

    return 0;
}

输出:1 3 5 7 9

偶数的时候 continue 了,后面那行 printf 没执行,直接跳到 i++ 然后下一轮。所以最后只打印了奇数。

在嵌套循环中

break 只能跳出它所在的那层循环,外面那层照常跑:

c 复制代码
#include <stdio.h>

int main() {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 5; j++) {
            if (j == 3) {
                break;  // 只跳出内层循环
            }
            printf("(%d,%d) ", i, j);
        }
        printf("\n");
    }

    return 0;
}

输出:

(0,0) (0,1) (0,2)

(1,0) (1,1) (1,2)

(2,0) (2,1) (2,2)

每次内层循环到 j==3 就 break,但外层循环不受影响,照常进入下一轮。


六、实际用法举例

找到第一个能被 7 整除的数

c 复制代码
#include <stdio.h>

int main() {
    int arr[] = {12, 35, 8, 49, 21, 63};
    int len = sizeof(arr) / sizeof(arr[0]);

    for (int i = 0; i < len; i++) {
        if (arr[i] % 7 == 0) {
            printf("第一个能被7整除的数是 %d,下标是 %d\n", arr[i], i);
            break;
        }
    }

    return 0;
}

跳过负数,只处理正数

c 复制代码
#include <stdio.h>

int main() {
    int nums[] = {3, -1, 7, -4, 9, 0, 2};
    int len = sizeof(nums) / sizeof(nums[0]);

    for (int i = 0; i < len; i++) {
        if (nums[i] <= 0) {
            continue;
        }
        printf("%d ", nums[i]);
    }

    return 0;
}

输出:3 7 9 2


总结

语句 用途
if-else 条件分支,二选一或多选一
switch 值匹配,适合固定枚举值判断
for 明确循环次数时使用
while 只关心条件,不确定次数时使用
break 立刻终止当前循环
continue 跳过本次,进入下一次循环
相关推荐
阳明山水6 小时前
销量预测2025—2026:从模型竞赛到系统融合的范式转型
人工智能·深度学习·算法·机器学习·架构
16月6日-晴6 小时前
Java面向对象——接口
java·开发语言
桐盛科技6 小时前
拒绝“漂绿”风险:基于边缘计算的碳排放数据清洗算法与实时校验逻辑
人工智能·算法·边缘计算
wuyk5556 小时前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
geovindu7 小时前
CSharp: Wordcloud
开发语言·后端·c#·.net·.netcore·词云
Tongzhi20267 小时前
通芝科技考勤软件三大发展趋势:AI大模型、无感识别与数据底座
大数据·科技·算法·爬山算法
Java小白笔记7 小时前
Java 实现 ZIP 压缩包生成方案
java·开发语言·网络·7-zip
Persistent的粽子!7 小时前
C++:类与对象(一)
开发语言·c++·经验分享·笔记
eBest数字化转型方案7 小时前
Route Optimization for FMCG:多目标排线算法的工程实现
大数据·人工智能·算法
weixin_440730507 小时前
使用pytest中方法控制执行步骤(test_begin.py、test_end.py,@pytest.mark.run(order=1))
开发语言·python·pytest