楼主: 轩辕宸风
222 0

[其他] C语言分支与循环语句详解:编程世界的决策与重复 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
2
精华
0
在线时间
0 小时
注册时间
2018-9-21
最后登录
2018-9-21

楼主
轩辕宸风 发表于 2025-11-28 14:34:41 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

前言:程序如何做出选择与重复执行?

在日常生活中,我们每天都在做决定和重复动作:

  • 分支场景:如果天气下雨,就带上雨伞;否则空手出门。
  • 循环场景:每日三餐、工作、休息,周而复始。

编程中的逻辑也遵循同样的规律。通过分支结构,程序可以根据不同条件执行不同的代码路径;借助循环机制,可以反复运行某段代码,避免冗余书写。这两种控制流程的语句构成了几乎所有程序的核心骨架。

一、分支语句:让程序具备判断能力

分支语句允许程序依据特定条件选择执行哪一部分代码。

1. if 语句 —— 最基础的选择结构

当某个条件成立时,执行相应操作。

if (条件) {
    // 条件为真时执行的代码
}

例如:只有温度高于30度才开启空调。

#include <stdio.h>

int main() {
    int money = 100;
    
    if (money >= 50) {
        printf("我可以买这本书!\n");
    }
    
    return 0;
}

2. if-else 语句 —— 二选一决策

提供两种互斥的执行路径:条件成立走一条,不成立走另一条。

if (条件) {
    // 条件为真时执行
} else {
    // 条件为假时执行
}

实际应用场景如用户登录验证:密码正确进入系统,错误则提示重试。

#include <stdio.h>

int main() {
    int score = 85;
    
    if (score >= 60) {
        printf("恭喜,考试及格!\n");
    } else {
        printf("很遗憾,需要继续努力\n");
    }
    
    return 0;
}

3. if-else if-else 结构 —— 多种情况判断

适用于多个条件依次判断的情形。

if (条件1) {
    // 条件1为真时执行
} else if (条件2) {
    // 条件2为真时执行
} else if (条件3) {
    // 条件3为真时执行
} else {
    // 所有条件都为假时执行
}

比如根据考试成绩划分等级:

  • 90分以上为A
  • 80~89为B
  • 依此类推...
#include <stdio.h>

int main() {
    int score;
    printf("请输入成绩:");
    scanf("%d", &score);
    
    if (score >= 90) {
        printf("优秀!\n");
    } else if (score >= 80) {
        printf("良好\n");
    } else if (score >= 70) {
        printf("中等\n");
    } else if (score >= 60) {
        printf("及格\n");
    } else {
        printf("不及格\n");
    }
    
    return 0;
}

4. switch 语句 —— 多路跳转的高效方式

特别适合对单一变量进行多种值匹配的情况。

switch (表达式) {
    case 值1:
        // 代码块1
        break;
    case 值2:
        // 代码块2
        break;
    default:
        // 默认代码块
}

以输入数字判断星期为例,简洁明了地实现七种输出。

#include <stdio.h>

int main() {
    int day;
    printf("请输入星期(1-7):");
    scanf("%d", &day);
    
    switch (day) {
        case 1:
            printf("星期一:新的开始!\n");
            break;
        case 2:
        case 3:
        case 4:
        case 5:
            printf("工作日,加油!\n");
            break;
        case 6:
        case 7:
            printf("周末,好好休息!\n");
            break;
        default:
            printf("输入错误!\n");
    }
    
    return 0;
}

注意事项

  • 每个 case 后建议使用 break,防止“穿透”到下一个分支。
  • case 标签后只能是整型或字符型常量,不能是表达式或变量。

二、循环语句:实现重复执行的关键工具

当需要多次运行相同或相似代码块时,循环语句极大提升了效率。

1. for 循环 —— 适用于已知次数的循环

常用于计数循环,结构清晰,初始化、条件、迭代一步到位。

for (初始化; 循环条件; 更新) {
    // 循环体
}

示例:打印从1到10的所有整数。

#include <stdio.h>

int main() {
    int i;
    
    for (i = 1; i <= 10; i++) {
        printf("%d ", i);
    }
    printf("\n");
    
    return 0;
}

其执行流程包括初始化 → 判断条件 → 执行循环体 → 更新变量 → 再次判断。

text
1. i=1 → 1<=10成立 → 输出1 → i++变成2
2. i=2 → 2<=10成立 → 输出2 → i++变成3
...
10. i=10 → 10<=10成立 → 输出10 → i++变成11
11. i=11 → 11<=10不成立 → 循环结束

实用功能扩展:计算1加到100的总和。

#include <stdio.h>

int main() {
    int sum = 0;
    int i;
    
    for (i = 1; i <= 100; i++) {
        sum += i;  // 相当于 sum = sum + i
    }
    
    printf("1到100的和是:%d\n", sum);
    return 0;
}

2. while 循环 —— 条件驱动型循环

只要指定条件为真,就持续执行循环体。

while (条件) {
    // 循环体
}

典型应用:模拟密码输入过程,直到输入正确为止。

#include <stdio.h>

int main() {
    int password = 123456;
    int input;
    int attempts = 0;
    
    printf("请输入密码:");
    scanf("%d", &input);
    
    while (input != password && attempts < 2) {
        attempts++;
        printf("密码错误,还有%d次机会:", 3 - attempts);
        scanf("%d", &input);
    }
    
    if (input == password) {
        printf("登录成功!\n");
    } else {
        printf("登录失败!\n");
    }
    
    return 0;
}

3. do-while 循环 —— 至少执行一次的循环

先执行循环内容,再判断是否继续,确保至少运行一遍。

do {
    // 循环体
} while (条件);

常见于菜单系统设计中,比如主界面选项选择。

#include <stdio.h>

int main() {
    int choice;
    
    do {
        printf("\n=== 菜单 ===\n");
        printf("1. 开始游戏\n");
        printf("2. 设置\n");
        printf("3. 退出\n");
        printf("请选择:");
        scanf("%d", &choice);
        
        switch (choice) {
            case 1:
                printf("游戏开始!\n");
                break;
            case 2:
                printf("进入设置\n");
                break;
            case 3:
                printf("再见!\n");
                break;
            default:
                printf("无效选择!\n");
        }
    } while (choice != 3);  // 只要不是退出选项,就继续显示菜单
    
    return 0;
}

三、循环控制语句:精准调控循环行为

在复杂逻辑中,仅靠基本循环不够灵活,需配合控制关键字。

1. break —— 立即终止当前循环

一旦触发,跳出整个循环结构,不再进行后续迭代。

#include <stdio.h>

int main() {
    int i;
    
    for (i = 1; i <= 10; i++) {
        if (i == 5) {
            break;  // 当i等于5时立即退出循环
        }
        printf("%d ", i);
    }
    // 输出:1 2 3 4
    
    return 0;
}

2. continue —— 跳过本次剩余步骤

结束当前轮次,直接进入下一轮判断。

#include <stdio.h>

int main() {
    int i;
    
    for (i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            continue;  // 如果是偶数,跳过本次循环
        }
        printf("%d ", i);
    }
    // 输出:1 3 5 7 9(只输出奇数)
    
    return 0;
}

四、综合实战演练

结合所学知识解决真实问题。

案例1:判断一个数是否为素数

利用循环配合条件判断,检测是否存在除1和自身外的因子。

#include <stdio.h>
#include <math.h>

int main() {
    int num, i;
    int is_prime = 1;  // 1表示是素数,0表示不是
    
    printf("请输入一个正整数:");
    scanf("%d", &num);
    
    // 处理特殊情况
    if (num <= 1) {
        is_prime = 0;
    } else {
        // 检查从2到sqrt(num)是否有因子
        for (i = 2; i <= sqrt(num); i++) {
            if (num % i == 0) {
                is_prime = 0;
                break;
            }
        }
    }
    
    if (is_prime) {
        printf("%d 是素数\n", num);
    } else {
        printf("%d 不是素数\n", num);
    }
    
    return 0;
}

案例2:输出九九乘法表

嵌套循环的经典应用,展示双重 for 的强大表现力。

#include <stdio.h>

int main() {
    int i, j;
    
    printf("九九乘法表:\n");
    
    for (i = 1; i <= 9; i++) {          // 外层循环控制行
        for (j = 1; j <= i; j++) {      // 内层循环控制列
            printf("%d×%d=%-2d  ", j, i, i * j);
        }
        printf("\n");
    }
    
    return 0;
}

五、使用建议:如何选择合适的结构?

合理选用语句类型能提升代码可读性和效率。

分支结构选择参考:

  • if-else:适用于条件数量较少(2~3个),或逻辑较复杂的判断。
  • switch:当有四个及以上固定值比较时更高效,尤其适合枚举类场景。

循环结构选择参考:

  • for:循环次数明确,如遍历数组、计数任务。
  • while:依赖动态条件决定是否继续,适合不确定循环次数的场景。
  • do-while:要求至少执行一次的操作,如交互式菜单系统。

六、常见错误与调试策略

初学者容易踩坑的地方及应对方法。

常见错误清单:

  1. 在 switch 中遗漏 break 导致多个 case 被连续执行。
  2. 编写出无限循环,通常是循环条件始终为真。
  3. 误将赋值运算符 = 写成相等比较 ==,如 if (a = 5) 应为 if (a == 5)。
  4. 忘记更新循环变量,造成无法退出循环。

掌握这些陷阱有助于快速定位问题。

// 添加调试输出
for (i = 0; i < 10; i++) {
    printf("调试:i=%d\n", i);  // 查看循环执行情况
    // 你的代码
}

总结

分支与循环是C语言中最核心的流程控制手段,理解并熟练运用它们意味着掌握了编程的基本思维方式。

  • 分支赋予程序智能,使其能够根据不同数据做出响应。
  • 循环赋予程序耐力,自动完成重复性高但规则明确的任务。
  • 控制语句(break、continue)增强了程序的灵活性与精确度。

唯有通过不断练习、深入思考与反复调试,才能真正驾驭这些关键结构。

实践建议

尝试用今天学习的内容编写一个简易计算器程序,支持加减乘除四种运算,并允许用户连续计算,直到主动选择退出程序为止。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:循环语句 C语言 include Default RETURN
相关内容:C语言语句循环

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-9 17:35