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 都不匹配的情况,非必须但建议添加

二、循环语句

循环语句用于重复执行一段代码,包含while、for、do-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;循环必须设置退出条件避免死循环
相关推荐
ShineWinsu17 小时前
对于CSS:弹性布局(Flexbox)的解析
前端·css·面试·浏览器·web·网页·弹性布局
云老大-阿里云国际站代理商18 小时前
华为云国际站渠道代理商:CSS查询很慢但CPU不高?磁盘I/O、JVM与分片问题怎么排查
css·jvm·华为云
定栓1 天前
Webpack迁到Vite第三节:Less 与 CSS 处理
css·webpack·less
ShineWinsu1 天前
对于JavaScript:初识JavaScript以及输入输出
java·开发语言·前端·javascript·css·面试·html
码银1 天前
【web】基于HTML/CSS,JavaScript + Three.js做3D流程图
前端·css·html
keyipatience1 天前
JavaScript学习(1)书写位置,变量、数据类型、运算符
开发语言·前端·javascript·css·学习
酷炫码神2 天前
Day 2|CSS 盒模型:把昨天的骨架,变成能看的页面
前端·css
oicola2 天前
Ant Design v5 vs Tailwind CSS:组件库与样式框架的终极对决
前端·css
软件技术NINI2 天前
美妆商城html+Css+js 4页
javascript·css·html
2603_965896623 天前
Grid 网格布局|CSS 二维页面排版体系
前端·css