CC++ & Algorithm

C++ if-else 语句

中等14
语言版本:C++Python
概述:学会if-else语句,让程序在条件成立和不成立时分别做不同的事情,就像“如果下雨就带伞,否则戴帽子”。

二选一的魔法:C++ if-else 语句

生活中,我们经常要面对“如果……就……否则……”的选择。比如:如果明天有雨,我就带伞;否则我就戴帽子。 在C++程序里,我们也想让电脑像人一样根据条件做出不同的反应。这时候就要用到 if-else 语句,它让程序在条件成立时做一件事,条件不成立时做另一件事——就像有两个备选方案,程序只执行其中一组。

1. if-else 语句长什么样?

它的基本格式就像一副天平:

if (条件) {
    // 条件成立(为真)时,执行的代码块
} else {
    // 条件不成立(为假)时,执行的代码块
}
  • 条件 是一个判断式,通常用关系运算符(比如 ><==!=)或者逻辑运算符(&&||!)组成,结果要么是“真”(true),要么是“假”(false)。
  • 如果条件为真,程序会跳过 else 部分,只执行 if 后面花括号里的内容。
  • 如果条件为假,程序会跳过 if 的花括号,只执行 else 后面的花括号。
  • 两边的花括号可以只写一条语句,但建议总是加上花括号,这样代码更清晰,也不容易出错。

小窍门:可以把花括号看作“小房间”,每个房间只放一类任务。程序根据判断结果决定走进哪个房间。

2. 一个最常用的例子:判断奇偶

原来的例子已经很棒啦,我们给它加上清晰的中文注释,再深入看看:

#include <iostream>
using namespace std;

int main() {
    int num;                         // 定义整数变量 num,用来存用户输入的数字
    cout << "请输入一个整数:";
    cin >> num;                      // 从键盘读取用户输入的数

    if (num % 2 == 0) {              // 条件:num 除以 2 的余数等于 0 吗?
        cout << num << " 是偶数" << endl;   // 是偶数
    } else {
        cout << num << " 是奇数" << endl;   // 否则就是奇数
    }

    return 0;
}

运行这段代码:

  • 输入 7 → 输出 7 是奇数
  • 输入 8 → 输出 8 是偶数

为什么 %2 能判断奇偶?
% 是取余运算符,比如 7 % 2 结果是 1(因为 7 ÷ 2 = 3 余 1),8 % 2 结果是 0。余数为 0 说明能被 2 整除,就是偶数。

3. 更多贴近生活的例子

例子1:考试分数是否及格

假设你考了数学,满分100分,60分及以上算及格。程序可以这样判断:

int score;                          // 定义分数变量
cout << "请输入你的数学成绩:";
cin >> score;

if (score >= 60) {
    cout << "恭喜你,及格了!继续加油!" << endl;
} else {
    cout << "不及格,下次要更努力哦!" << endl;
}

例子2:零花钱够不够买零食

你每周有20元零花钱,想买一包8元的薯片。如果剩余的钱足够,就买;否则就攒着。

int pocket_money = 20;              // 当前零花钱 20 元
int chip_price = 8;                 // 薯片价格 8 元

if (pocket_money >= chip_price) {
    cout << "买一包薯片!" << endl;
    pocket_money = pocket_money - chip_price;   // 剩余的钱更新
} else {
    cout << "钱不够,再攒攒吧。" << endl;
}

例子3:排队是否轮到你

操场上大家按1、2、3……编号排队,你排在3号。当叫到你的号码时就可以上场。

int my_number = 3;                  // 你的排队编号
int called_number;                  // 当前叫到的号码
cout << "请输入当前叫到的号码:";
cin >> called_number;

if (called_number == my_number) {
    cout << "轮到你了!快上场!" << endl;
} else {
    cout << "还没轮到你,耐心等待。" << endl;
}

4. 新手最容易犯的4个错误

  • ❌ 把赋值 = 当成判断相等 ==
    比如写成 if (score = 60),这会把 60 赋值给 score,然后整个表达式结果就是 60(非0为真),条件永远成立!正确写法是 score == 60

  • ❌ 忘记花括号导致逻辑错误
    如果 if 或 else 后面只有一条语句,可以省略花括号,但新手容易忘记缩进和逻辑对应。比如:

    if (score >= 60)
        cout << "及格" << endl;
    else
        cout << "不及格" << endl;
        cout << "下次加油" << endl;   // 这行不属于else,会永远执行!
    

    正确的做法:哪怕只有一条语句,也加上花括号,养成好习惯。

  • ❌ 条件写反了
    比如“如果下雨带伞,否则戴帽子”,条件写成了 if (不下雨),然后 else 里带伞……检查条件是否符合日常逻辑。

  • ❌ 忘了加分号
    在 if 条件后面加 ; 是个大坑:if (score >= 60); 语法上没问题,但分号结束了整个if语句,后面的花括号就成了普通代码块,永远执行。

5. 完整的课堂示例:判断年份是平年还是闰年?

闰年的规则:能被4整除但不能被100整除,或者能被400整除。用 if-else 可以简洁判断。

#include <iostream>
using namespace std;

int main() {
    int year;                       // 定义年份变量
    cout << "请输入一个年份(如2024):";
    cin >> year;

    // 判断闰年条件
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
        cout << year << " 年是闰年,有366天。" << endl;
    } else {
        cout << year << " 年是平年,有365天。" << endl;
    }

    return 0;
}

输入 2024,输出 2024 年是闰年,有366天。
输入 2023,输出 2023 年是平年,有365天。

6. 学完if-else,接下来可以学什么?

  • if-else if-else 多分支:当有多个条件需要依次判断时,比如根据分数评等级(90分以上优秀,80-89良好……)。
  • 嵌套的if-else:在一个 if 或 else 的代码块里再写 if-else,用于更复杂的组合判断。
  • switch语句:针对单个变量的多个固定值(比如星期几)做选择,有时比 if-else 更清晰。

记住,if-else 是 C++ 中最基础、最常用的分支结构。掌握好它,写出来的程序就不再是死板的“一条路走到黑”,而是能根据实际情况灵活变化的“智能”程序了!

例题精讲

1单选题

以下哪个if-else语句的写法在C++中是合法的?

Aif (a>b) { cout << "larger"; } else { cout << "smaller"; }
Bif a>b cout << "larger"; else cout << "smaller";
Cif (a>b) then cout << "larger"; else cout << "smaller";
Dif (a>b) { cout << "larger"; } else ( cout << "smaller"; )
2单选题

执行以下代码后,输出是什么? int x = 4; if (x % 2 == 1) { cout << "奇数"; } else { cout << "偶数"; }

A奇数
B偶数
C无输出
D编译错误
3判断题

在if-else语句中,如果条件表达式的值为假,则执行else后面的语句块。

4判断题

在C++中,if-else语句可以嵌套使用,即在if或else分支中再写另一个if-else语句。

5填空题
以下程序判断输入的整数是否能被3整除,请补全if条件。

int num;
cin >> num;
if (___) {
    cout << "能被3整除";
} else {
    cout << "不能被3整除";
}