C 语言分支与循环语句总结

C 语言分支与循环语句总结

程序的三大基本结构为顺序结构、分支结构、循环结构,分支与循环是实现程序逻辑控制的核心,以下是核心知识点总结。

一、分支语句

分支语句根据条件判断结果,选择执行对应的代码块,包含if系列和switch两种。

1. if 语句

基础单分支

运行

scss 复制代码
if (条件表达式) {
    // 条件为真时执行
}

C 语言中,非 0 为真,0 为假。

if-else 二分支

运行

arduino 复制代码
#include <stdio.h>
int main() {
    int a = 10;
    if (a > 0) {
        printf("正数\n");
    } else {
        printf("非正数\n");
    }
    return 0;
}
else if 多分支

运行

arduino 复制代码
#include <stdio.h>
int main() {
    int score = 85;
    if (score >= 90)
        printf("A\n");
    else if (score >= 80)
        printf("B\n");
    else if (score >= 60)
        printf("C\n");
    else
        printf("D\n");
    return 0;
}

注意:else 永远与最近的未匹配 if 配对,建议统一加大括号避免悬空 else 问题。

2. switch 语句

适用于整型变量的多值等值判断。

运行

arduino 复制代码
#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;
        default: printf("输入错误\n"); break;
    }
    return 0;
}

注意:

  1. switch 后必须是整型表达式,case 后必须是整型常量
  2. break 用于跳出 switch,省略会发生 case 穿透,可利用穿透实现多值匹配同一逻辑
  3. default 用于处理所有 case 都不匹配的情况,非必须但建议添加

二、循环语句

循环语句用于重复执行一段代码,包含whilefordo-while三种。

1. while 循环

先判断条件,再执行循环体。

运行

arduino 复制代码
// 计算1-100的和
#include <stdio.h>
int main() {
    int i = 1, sum = 0;
    while (i <= 100) {
        sum += i;
        i++;
    }
    printf("和为%d\n", sum);
    return 0;
}

2. for 循环

将初始化、条件判断、变量更新集中书写,适合已知循环次数的场景。

运行

arduino 复制代码
// 打印1-10
#include <stdio.h>
int main() {
    for (int i = 1; i <= 10; i++) {
        printf("%d ", i);
    }
    return 0;
}

执行顺序:初始化 → 条件判断 → 执行循环体 → 更新变量 → 再次判断条件。

3. do-while 循环

先执行循环体,再判断条件,循环体至少执行一次。

运行

arduino 复制代码
#include <stdio.h>
int main() {
    int i = 1;
    do {
        printf("%d ", i);
        i++;
    } while (i <= 5);
    return 0;
}

4. break 与 continue

  • break:永久终止当前所在层的循环,直接跳出循环
  • continue:跳过本次循环后续代码,直接进入下一次条件判断

运行

ini 复制代码
// break示例:找到第一个能被7整除的数
for (int i = 1; i <= 20; i++) {
    if (i % 7 == 0) {
        printf("%d\n", i);
        break;
    }
}

// continue示例:打印1-10的奇数
for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0)
        continue;
    printf("%d ", i);
}

三、循环嵌套

循环内部可以再嵌套循环,外层循环执行一次,内层循环执行完整一轮。

运行

arduino 复制代码
// 九九乘法表
#include <stdio.h>
int main() {
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= i; j++) {
            printf("%d*%d=%-2d ", j, i, i*j);
        }
        printf("\n");
    }
    return 0;
}

四、综合练习:猜数字游戏

运行

arduino 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    srand((unsigned int)time(NULL));
    int target = rand() % 100 + 1;
    int guess, count = 0;
    
    printf("猜数字游戏(1-100)\n");
    while (1) {
        printf("请输入数字:");
        scanf("%d", &guess);
        count++;
        
        if (guess > target)
            printf("猜大了\n");
        else if (guess < target)
            printf("猜小了\n");
        else {
            printf("猜对了!答案是%d,共猜了%d次\n", target, count);
            break;
        }
    }
    return 0;
}

五、总结

  1. 分支选型:范围判断用if-else,多值等值判断用switch
  2. 循环选型:已知次数优先for,条件终止用while,需至少执行一次用do-while
  3. 注意事项:if 条件中==勿写成=;switch 勿忘 break;循环必须设置退出条件避免死循环
相关推荐
雪碧聊技术1 天前
Vue + Element Plus 实现文本溢出显示省略号及悬浮提示
前端·javascript·css·vue.js·文本溢出省略
小妖6661 天前
设置了 box-sizing: border-box; 不管用,下边框还是被挤压没了
前端·css·html
柚yuzumi1 天前
CSS 定位布局:让元素各就各位
前端·css
用户059540174461 天前
Qdrant 召回不一致踩坑实录:跑了 300 次测试才发现是索引没刷新
前端·css
用户059540174462 天前
AI Agent 上下文污染踩坑实录:用 pytest + Redis 揪出 3 类记忆串号 bug,排查 6 小时
前端·css
—Qeyser2 天前
html 可视化海报模板编辑器
css·html·js
我命由我123453 天前
CesiumJS 笔记 - 获取容器中心点、Cartesian3 clone 方法、修改 Cartesian3 对象的高度
前端·javascript·css·前端框架·html·html5·js
FFF_634560233 天前
简单的画板小工具,下载即用
前端·javascript·css
绝世唐门三哥4 天前
CSS 虚线下划线用法指南:text-decoration 完整解析
前端·javascript·css
DsirNg4 天前
用一个登录卡片讲清 CSS 盒模型:padding、border 与 box-sizing 到底如何影响布局
css·padding·box-sizing·表单布局·border·css 盒模型·登录卡片