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;循环必须设置退出条件避免死循环
相关推荐
寒水馨2 小时前
macOS下载、安装 Tailwind CSS-v4.3.3(附安装包tailwindcss-macos-arm64)
前端·css·macos·tailwind css·utility-first·css 框架·实用优先
朕的剑还未配妥20 小时前
CSS 实现渐变毛玻璃:从 backdrop-filter 到多层 mask
前端·css
nicole bai2 天前
手写tab选中
前端·javascript·css
用户059540174462 天前
用了3年Redis,才发现我一直没搞懂缓存一致性测试
前端·css
muddjsv2 天前
CSS选择器体系精讲:按身份、结构、状态精准匹配元素(零基础吃透)
前端·css
用户059540174463 天前
LLM对话记忆测试踩坑实录:手工回归30分钟,自动化后2分钟发现3个隐藏Bug
前端·css
Web - Anonymous3 天前
CSS+Vue3 + TS + Setup 10种生产级可视化循环动效合集(大屏高端交互、开箱复用)-附完整示例
前端·css·信息可视化
blns_yxl3 天前
正则驱动实时表单验证(HTML+CSS+JS+正则)
javascript·css·html
思码梁田4 天前
CSS cursor 属性全解析:从“小手“开始,玩转鼠标光标
前端·css·计算机外设·cursor·pointer