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 跳过本次,进入下一次循环
相关推荐
长不胖的路人甲1 小时前
斐波那契查找Java 实现 + 完整思路
java·开发语言
待磨的钝刨2 小时前
深入理解主成分分析(PCA)
人工智能·线性代数·算法·机器学习
星恒随风2 小时前
C++ 继承进阶:默认成员函数、多继承、虚继承与组合设计
开发语言·c++·笔记·学习
Yeauty2 小时前
用 Whisper 转录前,你不用再离开 Rust
开发语言·rust·ffmpeg·音视频·视频
电子云与长程纠缠2 小时前
UE中使用TGuardValue与TInlineComponentArray数据结构
开发语言·数据结构·学习·ue5·游戏引擎
呜喵王阿尔萨斯2 小时前
C/C++ const -- 多义混乱
c语言·开发语言·c++
__log2 小时前
幂等性设计:从“重复提交“到“稳如磐石“的系统防护
java·开发语言·spring boot
spider_xcxc2 小时前
Helm 部署 K8s 集群完整笔记
java·开发语言·kubernetes
海清河晏1112 小时前
Qt实战:从零构建美化登录界面
开发语言·c++·qt