C语言流程控制:if判断语句全解析

✅ C语言流程控制:if判断语句全解析

C语言流程控制:if判断语句全解析


🌟 一、单分支 if

📌 条件成立则执行,否则跳过。

c 复制代码
#include <stdio.h>
int main() {
    int age;
    printf("请输入年龄:");
    scanf("%d", &age);

    if (age >= 18) {
        printf("已成年,可以独立行为!\n");
    }

    return 0;
}

🌟 二、if...else(二选一结构)

c 复制代码
#include <stdio.h>
int main() {
    int num;
    printf("请输入一个整数:");
    scanf("%d", &num);

    if (num % 2 == 0) {
        printf("偶数\n");
    } else {
        printf("奇数\n");
    }

    return 0;
}

🌟 三、if...else if...else(多分支结构)

c 复制代码
#include <stdio.h>
int main() {
    float score;
    printf("请输入成绩:");
    scanf("%f", &score);

    if (score >= 90) {
        printf("优秀(A)\n");
    } else if (score >= 80) {
        printf("良好(B)\n");
    } else if (score >= 70) {
        printf("中等(C)\n");
    } else if (score >= 60) {
        printf("及格(D)\n");
    } else {
        printf("不及格(F)\n");
    }

    return 0;
}

🌟 四、嵌套 if(条件中再判断)

c 复制代码
#include <stdio.h>
int main() {
    int year;
    printf("请输入年份:");
    scanf("%d", &year);

    if (year % 4 == 0) {
        if (year % 100 != 0) {
            printf("闰年\n");
        } else {
            if (year % 400 == 0)
                printf("闰年\n");
            else
                printf("平年\n");
        }
    } else {
        printf("平年\n");
    }

    return 0;
}

⚠️ 建议写法(更简洁):

c 复制代码
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

✅ 五、综合示例:多条件判断

📌 输入身高和体重,判断是否标准体重

  • 标准体重 ≈ 身高cm - 110
  • 允许误差 ±5kg
c 复制代码
#include <stdio.h>
int main() {
    int height, weight, standard;
    printf("请输入身高(cm)和体重(kg):");
    scanf("%d %d", &height, &weight);

    standard = height - 110;

    if (weight > standard + 5) {
        printf("偏重\n");
    } else if (weight < standard - 5) {
        printf("偏轻\n");
    } else {
        printf("标准体重\n");
    }

    return 0;
}

🧠 六、常见错误总结

错误写法 原因
if(x = 5) = 是赋值,应使用 ==
if x > 0 条件必须加括号 ()
多语句不加 {} 可能造成逻辑错误
缩进混乱 可读性差,易错

✅ 建议:每次都写 {},培养规范思维


🧪 七、课堂练习


📝 练习1:判断是否正数

c 复制代码
#include <stdio.h>
int main() {
    int n;
    printf("请输入一个整数:");
    scanf("%d", &n);

    if (n > 0)
        printf("正数\n");
    else
        printf("非正数\n");

    return 0;
}

📝 练习2:最高分判断(两者比较)

c 复制代码
#include <stdio.h>
int main() {
    float a, b;
    printf("请输入两个分数:");
    scanf("%f %f", &a, &b);

    if (a > b)
        printf("第一个更高:%.2f\n", a);
    else
        printf("第二个更高:%.2f\n", b);

    return 0;
}

📝 练习3:三角形合法性判断

任意两边之和大于第三边 👉 才能构成三角形

c 复制代码
#include <stdio.h>
int main() {
    int a, b, c;
    printf("请输入三条边长:");
    scanf("%d %d %d", &a, &b, &c);

    if (a + b > c && a + c > b && b + c > a)
        printf("可以构成三角形\n");
    else
        printf("不能构成三角形\n");

    return 0;
}

🔜 下一节预告

C语言多分支结构 ------ switch语句全解析

对菜单选择、分类判断特别好用 ✅


相关推荐
啟明起鸣1 分钟前
【Linux 项目管理工具】GDB 调试是现成 C/C++ 项目的 “造影剂”,用来分析项目的架构原理
linux·c语言·c++
Sylvia-girl4 分钟前
Lambda表达式
java·开发语言
softshow10265 分钟前
html2canvas + jspdf实现页面导出成pdf
开发语言·javascript·pdf
Java程序员威哥15 分钟前
Java应用容器化最佳实践:Docker镜像构建+K8s滚动更新(生产级完整模板+避坑指南)
java·开发语言·后端·python·docker·kubernetes·c#
qq_21539789719 分钟前
python环境无网络环境导入依赖
开发语言·python
小范馆21 分钟前
C++ 编译方法对比:分步编译 vs 一步到位
java·开发语言·c++
垂葛酒肝汤22 分钟前
C#的const和static的问题
开发语言·c#
福娃筱欢25 分钟前
通用机KESV8R2-3节点集群缩容为2节点
java·开发语言
云泽80827 分钟前
C++ 继承进阶:默认成员函数、多继承问题与继承组合选型
开发语言·c++
源代码•宸33 分钟前
Golang原理剖析(defer、defer面试与分析)
开发语言·经验分享·后端·面试·golang·defer·开放编码