C 判断

C语言判断知识点大全 – 小白友好版
if () { }

C语言判断知识点大全

编程小白也能理解的详细解析 – 知识点、示例代码与常见问题

判断结构基础概念

在编程中,判断结构就像是生活中的选择:如果下雨,我就带伞;否则,我就不带。在C语言中,我们使用判断结构让程序根据不同情况执行不同代码。

核心概念:条件表达式

所有判断都基于条件表达式:这些表达式会返回真(true)假(false)

C语言中,0 表示假(false),任何非0值表示真(true)

if语句 – 最基本的判断

if语句用于在条件为真时执行一段代码,就像做决定:”如果条件成立,那么执行某些操作”

if语句基本语法
if (条件) {
    // 条件为真时执行的代码
}
实际例子:判断年龄是否成年
int age = 20;

if (age >= 18) {
    printf("您已成年!\n");
}

注意事项:

1. 条件表达式必须放在圆括号()中

2. 如果只有一行代码,{}可以省略(但强烈建议始终使用{})

3. 条件表达式可以是变量、比较运算的结果或逻辑运算的结果

if-else语句 – 二选一

当需要根据条件执行不同代码块时使用,就像”如果否则…”的选择

if-else基本语法
if (条件) {
    // 条件为真时执行
} else {
    // 条件为假时执行
}
实际例子:判断数字奇偶
int number = 7;

if (number % 2 == 0) {
    printf("%d是偶数\n", number);
} else {
    printf("%d是奇数\n", number);
}

else if语句 – 多条件选择

当需要检查多个条件时使用,就像考试评分:90以上优秀、80-89良好、70-79中等…

else if基本语法
if (条件1) {
    // 条件1为真时执行
} else if (条件2) {
    // 条件2为真时执行
} else if (条件3) {
    // 条件3为真时执行
} else {
    // 以上条件都不满足时执行
}
实际例子:成绩等级评定
int score = 85;

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");
}

重要提示:

1. 条件是从上到下依次检查的,一旦某个条件满足,就会执行对应的代码块,然后跳过其他所有条件

2. else是可选的,但如果有else,它必须是最后一个

嵌套if语句 – 判断中的判断

在一个if语句内部再使用if语句,就像做决策时需要满足多个条件:

“如果天气好,我们就去公园;如果天气好且是周末,我们就去野餐”

嵌套if基本结构
if (条件1) {
    // 条件1为真时执行
    
    if (条件2) {
        // 条件1和条件2都为真时执行
    }
}
实际例子:登录系统验证
char username[20] = "admin";
char password[20] = "123456";

if (strcmp(input_username, username) == 0) {
    // 用户名正确
    if (strcmp(input_password, password) == 0) {
        printf("登录成功!\n");
    } else {
        printf("密码错误!\n");
    }
} else {
    printf("用户名不存在!\n");
}

switch语句 – 多分支选择

当一个变量可能有多个不同的值,需要根据不同值执行不同操作时使用,就像选择菜单:

“按1查询余额,按2存款,按3取款,按0退出”

switch基本语法
switch (表达式) {
    case 值1:
        // 当表达式等于值1时执行
        break; // 跳出switch
    case 值2:
        // 当表达式等于值2时执行
        break;
    case 值3:
        // 当表达式等于值3时执行
        break;
    default:
        // 当表达式不等于任何case值时执行
}
实际例子:星期判断
int day = 3; // 假设3代表星期三

switch (day) {
    case 1:
        printf("星期一\n");
        break;
    case 2:
        printf("星期二\n");
        break;
    case 3:
        printf("星期三\n");
        break;
    case 4:
        printf("星期四\n");
        break;
    case 5:
        printf("星期五\n");
        break;
    case 6:
        printf("星期六\n");
        break;
    case 7:
        printf("星期日\n");
        break;
    default:
        printf("无效的星期数!\n");
}

重要细节:

1. switch的表达式结果必须是整型或字符型

2. case后面的值必须是常量,不能是变量

3. break语句非常重要!如果省略break,程序会继续执行下一个case(称为”贯穿”)

4. default是可选的,用于处理未匹配到任何case的情况

三元运算符 – 简洁的条件表达式

三元运算符是if-else的简写形式,适用于简单的条件判断和赋值,格式为:

条件 ? 表达式1 : 表达式2

如果条件为真,整个表达式取表达式1的值,否则取表达式2的值

三元运算符基本语法
变量 = (条件) ? 值1 : 值2;
实际例子:求最大值
int a = 10, b = 20;
int max;

// 使用三元运算符找出较大值
max = (a > b) ? a : b;

printf("最大值是:%d\n", max);

使用建议:

1. 只适用于简单的条件判断

2. 复杂的逻辑判断还是使用if-else更清晰

3. 不要嵌套太多层三元运算符,会降低可读性

判断结构对比总结

判断结构 适用场景 优点 注意事项
if语句 单一条件判断 简单直观 不要省略{},即使只有一行代码
if-else 二选一情况 明确处理两种可能性 else必须与最近的if匹配
else if 多条件分支(3种以上) 结构清晰,避免深层嵌套 条件顺序很重要
嵌套if 复杂条件判断 可以处理多层级条件 嵌套过深会降低可读性
switch 单一变量多值匹配 高效,可读性好 不要忘记break
三元运算符 简单条件赋值 代码简洁 不适合复杂逻辑

判断结构流程可视化

?

if语句流程

开始 → 检查条件 → 条件为真:执行代码块 → 结束

↗️

if-else流程

开始 → 检查条件 → 真:执行if块 ↗️ 假:执行else块 ↘️ → 结束

switch流程

开始 → 评估表达式 → 匹配case → 执行代码 → break → 结束

常见错误与避坑指南

1. 混淆赋值(=)和相等(==)

错误写法:if (x = 5) { … } // 这其实是赋值,不是比较

正确写法:if (x == 5) { … }

2. 忘记写break导致switch贯穿

错误写法:

case 1:
    printf("One");
    // 缺少break!
case 2:
    printf("Two");
    break;

当输入1时,会输出”OneTwo”

3. 错误使用浮点数比较

浮点数有精度问题,不要直接比较相等:

错误:if (f == 0.7) { … }

正确:if (fabs(f – 0.7) < 0.000001) { ... }

4. 复杂的嵌套if导致混乱

嵌套过深会使代码难以理解,尽量使用else if或重构代码

© 2023 C语言判断知识大全 – 编程小白必备指南 | 知识总结与示例代码

温馨提示:学习编程最好的方式是动手实践,尝试修改示例代码并观察结果!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部