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 跳过本次,进入下一次循环
相关推荐
乐观勇敢坚强的老彭31 分钟前
C++ 竞赛常用算法模板速查表
开发语言·c++·算法
高洁0136 分钟前
工信部教考中心证书
人工智能·深度学习·算法·机器学习·知识图谱
离陌在学C#1 小时前
C# 泛型:从基础到高级应用
开发语言·c#
ly76891 小时前
Java 设计模式详解:从原则到 23 种经典模式
java·开发语言·设计模式
SomeB1oody1 小时前
【RustyML入门】2.13. 孤立森林
开发语言·后端·机器学习·rust·教程
我变成萤火虫1 小时前
河南萌新联赛2026第(三)场:郑州轻工业大学
数据结构·c++·算法·贪心算法·stl·深度优先·哈希算法
Dr.kangder1 小时前
嵌入式面试总结(十九)——内存泄露
单片机·算法·面试·职场和发展·架构·硬件架构
萧瑟余晖1 小时前
Java深入解析篇三十之Java日志框架
java·开发语言
Herbert_hwt1 小时前
【C语言基础】常量、选择结构与运算符全解析
c语言·开发语言·算法
AI视觉网奇2 小时前
动作识别 视频理解大模型
开发语言·python·音视频