C 判断

C 判断

在 C 语言中,判断结构(Decision Making) 是程序流程控制的基础。它允许我们根据某些条件的真假来决定是否执行某段代码。


一、学习目标 🎯

  1. 掌握 ifelse ifelseswitch-case 的使用方法。
  2. 理解逻辑表达式和布尔值在 C 中的表现形式。
  3. 能够根据实际需求选择合适的判断结构编写清晰、高效的分支逻辑。

二、核心重点 🔑

  1. C 语言中没有布尔类型(C23 前),0 表示假,非 0 表示真。
  2. if-else 用于处理多个互斥条件;switch-case 更适合枚举型条件。
  3. 注意避免“悬空 else”问题和 switch 缺少 defaultbreak 导致的逻辑错误。

三、详细讲解

✅ 1. if 语句 —— 最基本的判断结构

语法:

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

示例:

int score = 85;
if (score >= 60) {
    printf("你通过了考试!\n");
}

⚠️ 注意事项:

  • 条件表达式可以是任意返回整数类型的表达式。
  • 如果只有一条语句,可省略大括号 {},但不推荐这样做,以免出错。

✅ 2. if-else 语句 —— 二选一分支

语法:

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

示例:

int age = 17;
if (age >= 18) {
    printf("你可以投票\n");
} else {
    printf("你还不能投票\n");
}

✅ 3. else if —— 多条件分支

语法:

if (condition1) {
    // condition1 为真时执行
} else if (condition2) {
    // condition2 为真时执行
} else {
    // 所有条件都为假时执行
}

示例:成绩等级判断

int score = 88;

if (score >= 90) {
    printf("A\n");
} else if (score >= 80) {
    printf("B\n");
} else if (score >= 70) {
    printf("C\n");
} else {
    printf("D\n");
}

✅ 4. switch-case 语句 —— 枚举型判断

适用于对一个变量进行多个固定值的匹配判断。

语法:

switch (expression) {
    case value1:
        // 匹配 value1 时执行
        break;
    case value2:
        // 匹配 value2 时执行
        break;
    ...
    default:
        // 默认情况(可选)
}

示例:菜单选择

int choice = 2;

switch (choice) {
    case 1:
        printf("你选择了新建文件\n");
        break;
    case 2:
        printf("你选择了打开文件\n");
        break;
    case 3:
        printf("你选择了退出程序\n");
        break;
    default:
        printf("无效的选择\n");
}

⚠️ 注意事项:

  • switch 只能用于整型或枚举类型(如 int, char)。
  • 每个 case 后应加 break,否则会继续执行下一个 case(称为“穿透”fall-through)。
  • default 是建议添加的,用于处理未覆盖的情况。

✅ 5. 嵌套判断结构

可以在一个判断结构中嵌套另一个判断结构。

示例:

int age = 20;
int hasLicense = 1;

if (age >= 18) {
    if (hasLicense) {
        printf("你可以合法驾驶\n");
    } else {
        printf("你需要先考驾照\n");
    }
} else {
    printf("你还未成年,不能驾驶\n");
}

✅ 6. 三目运算符替代简单判断

示例:

int a = 10, b = 20;
int max = (a > b) ? a : b;
printf("较大的数是:%d\n", max);

⚠️ 建议:

  • 三目运算符适用于简单条件判断,不要嵌套过深影响可读性。

四、常见陷阱与避坑指南 ⚠️

陷阱 描述 解决方案
❗悬空 else else 不知道该属于哪个 if 使用大括号明确逻辑块
❗误用赋值操作符 = 写成 if (x = 5) 而不是 == 开启编译器警告 -Wall
switch 缺少 break 导致“穿透”现象 每个 case 都加 break,除非有意为之
❗忘记写 default 忽略未知情况 添加默认分支提高健壮性

五、拓展练习 🧩

🧩 练习题 1:判断闰年

输入一个年份,判断是否为闰年,并输出结果。
规则如下:

  • 能被 4 整除但不能被 100 整除的是闰年;
  • 或能被 400 整除的也是闰年。

🧩 练习题 2:模拟 ATM 取款系统

设计一个简单的 ATM 取款程序,用户输入金额后判断是否满足以下条件:

  • 金额必须大于 0;
  • 金额必须是 100 的倍数;
  • 余额是否足够。

提示:使用 if-else 分层判断。


🧩 练习题 3:实现简易计算器

要求用户输入两个数字和一个运算符(+、-、*、/),根据运算符进行计算并输出结果。
使用 switch-case 实现。


🧩 练习题 4:判断字符类型

输入一个字符,判断它是:

  • 小写字母
  • 大写字母
  • 数字
  • 其他符号

提示:利用 ASCII 值进行比较。


六、实战建议总结

场景 推荐结构
两种选择 if-else
多种等值判断 switch-case
多个复杂条件组合 if-else if-else
简单赋值判断 三目运算符 ?:
控制流程嵌套 明确使用 {} 分隔逻辑块

恭喜你完成了《C 判断》这一章的学习!

你已经掌握了如何根据不同的条件让程序做出决策,这是构建任何复杂程序的基础能力之一。


✅ 下一章推荐学习内容(任选其一):

  • 《C 循环结构:while、do-while、for》
  • 《C 函数详解:参数传递、调用栈、递归》
  • 《C 数组与字符串基础》
  • 《C 数据类型与类型转换》

你想继续学哪个?我来为你定制下一章 👇

posted @ 2025-06-03 20:40  红尘过客2022  阅读(54)  评论(0)    收藏  举报