CC++ & Algorithm

C++ if-else 语句基础

简单37
语言版本:C++Python
概述:学会在条件成立和不成立时分别执行不同任务的写法,就像选择题二选一。

二选一的决断:C++ if-else 语句

生活中,我们经常面对“二选一”的情况:

  • 如果今天完成了作业,就可以玩游戏;否则,要被禁止玩手机。
  • 如果考试及格了,妈妈奖励冰淇淋;否则,就要罚做家务。

在 C++ 里,这样的“二选一”用 if-else 语句 来实现。它让程序在条件成立时执行一组代码,条件不成立时执行另一组代码,两条路只能选一条。


什么是 if-else 语句

if-else 就像一道选择题,题目只有一个,答案只有“是”或“否”。

  • 如果答案是“是”(条件为真),执行 if 后面的代码块。
  • 如果答案是“否”(条件为假),执行 else 后面的代码块。

语法格式

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

注意:else 后面不需要写条件,它直接对应前面 if 条件不成立的情况。else 也有自己的花括号,里面放条件为假时要做的事情。两个分支只会执行其中一个。


生活中的例子:判断偶数还是奇数

写一个程序,输入一个整数,判断它是偶数还是奇数。

#include <iostream>
using namespace std;
int main() {
    int n;                      // 输入的整数
    cout << "请输入一个整数:";
    cin >> n;
    if (n % 2 == 0) {           // 如果n除以2余数为0,说明是偶数
        cout << "偶数" << endl;
    } else {                    // 否则就是奇数
        cout << "奇数" << endl;
    }
    return 0;
}

这里的条件 n % 2 == 0 意思是“n 除以 2 的余数等于 0”。如果 n 是 4,条件为真,输出“偶数”;如果 n 是 7,条件为假,输出“奇数”。两个结果只会出现一个。


生活中的例子:密码判断

输入密码,如果等于 123456,输出“密码正确”,否则输出“密码错误”。

#include <iostream>
using namespace std;
int main() {
    int password;               // 输入的密码
    cin >> password;
    if (password == 123456) {   // 注意:判断相等要用 ==
        cout << "密码正确" << endl;
    } else {
        cout << "密码错误" << endl;
    }
    return 0;
}

注意:判断相等要用 ==(两个等号),而不是一个等号 =(一个等号是赋值)。


生活中的例子:检查年龄是否成年

很多游戏规定未满 18 岁不能玩。我们可以用 if-else 来判断:

#include <iostream>
using namespace std;
int main() {
    int age;                    // 年龄
    cout << "请输入你的年龄:";
    cin >> age;
    if (age >= 18) {            // 如果年龄大于等于18
        cout << "你已成年,可以玩这个游戏。" << endl;
    } else {                    // 否则未满18岁
        cout << "你未满18岁,不能玩这个游戏。" << endl;
    }
    return 0;
}

新手最容易犯的错误

  1. else 后面加了条件

    if (x > 0) {
        // ...
    } else (x <= 0) {   // 错误!else后面不能有括号和条件
        // ...
    }
    

    正确写法:else 后面直接跟花括号,或者无条件。如果还想判断其他情况,要用 else if

  2. 忘记花括号,导致分支只包含一行

    if (score >= 60)
        cout << "及格" << endl;
        cout << "继续加油" << endl;   // 这行不在if分支中!永远会执行
    

    如果分支里有多条语句,必须用花括号括起来。

  3. if 条件后加了分号

    if (a == b);   // 错误!分号让if语句结束,后面的else成为了孤立的
        cout << "相等" << endl;
    else
        cout << "不相等" << endl;   // 编译错误
    

    分号表示语句结束,if 后面加 ; 等于 if 什么都不做。

  4. 混淆赋值 = 和判等 ==

    if (password = 123456)   // 错误!这是赋值,永远为真(非0)
    

    赋值表达式的值是被赋的值(比如 123456),因为 123456 不是 0,所以条件总为真。一定要用 ==


完整可运行的示例:成绩等级判断

写一个程序,输入成绩(0~100),输出“及格”或“不及格”:

#include <iostream>
using namespace std;
int main() {
    int score;                  // 成绩
    cout << "请输入你的成绩(0~100):";
    cin >> score;
    if (score >= 60) {          // 如果成绩大于等于60
        cout << "恭喜你,及格了!" << endl;
    } else {                    // 否则
        cout << "很遗憾,没及格,继续努力!" << endl;
    }
    return 0;
}

再举一个复杂点的例子:判断一个数是不是正数、负数或零(这个用 if-else 只能二选一,所以需要嵌套 if-else,但未学,这里只展示 if-else 的局限):

  • 其实“正、负、零”是三选一,需要用到 if-else if。这里先埋个伏笔。

相关知识点指引

  • if 语句:只处理条件成立的情况,没有 else 分支。适合“做或者不做”的选择。
  • else if 语句:用于处理多个条件(三选一、多选一),比如根据成绩输出 A、B、C、D、F。
  • 逻辑运算符&&(与)、||(或)、!(非),可以把多个条件组合成一个,例如 if (age >= 18 && money >= 100)
  • 条件表达式(三目运算符):一种简短的写法,适合简单的二选一赋值,比如 max = (a > b) ? a : b;

掌握 if-else,你的程序就开始拥有“判断力”了。接下来试试更多的题目:输入一个年份,判断是否为闰年?输入两个数,输出较大的那个?试试用 if-else 解决它们吧!

例题精讲

1单选题

以下关于 C++ if-else 语句的写法,哪一个是正确的?

Aif (x > 0) cout << "正数"; else cout << "非正数";
Bif (x > 0) { cout << "正数"; } else { cout << "非正数"; }
Cif (x > 0) { cout << "正数"; } else cout << "非正数";
D以上都是正确的
2单选题

分析以下 C++ 代码,运行后的输出是什么? int age = 18; if (age >= 18) { cout << "成年人"; } else { cout << "未成年人"; }

A成年人
B未成年人
C成年人未成年人
D无输出
3判断题

在 C++ 中,if-else 语句的 else 部分后面如果只有一条语句,可以不使用花括号。

4填空题
以下程序用于判断输入的整数是否为偶数,如果是则输出"偶数",否则输出"奇数"。请补全 if-else 结构。

#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    if (___)
        cout << "偶数";
    else
        cout << "奇数";
    return 0;
}
5填空题
以下程序输出两个整数 a 和 b 中的较大值。请补全代码。

#include <iostream>
using namespace std;
int main() {
    int a, b;
    cin >> a >> b;
    if (___)
        cout << a;
    else
        cout << b;
    return 0;
}