CC++ & Algorithm

if-else分支语句

简单6
语言版本:C++
概述:就像日常做选择一样,用if-else让程序根据条件执行不同任务。

if-else分支语句:让程序学会做选择

先讲个小故事:你每天都会做的选择

早上起床,你做的第一件事是什么?看窗外?想今天要不要带雨伞。
如果下雨 → 带伞
否则 → 不带伞

放学后,妈妈给你买了零食。你数了数手里的零花钱:
如果钱够买两包薯片 → 买两包
否则 → 只买一包

考试卷发下来,你偷偷看分数:
如果分数 ≥ 60 → 及格,可以玩游戏
否则 → 不及格,需要补习

这些“如果……否则……”的思考过程,在编程里就叫 分支语句。计算机没长眼睛不会自己判断,但我们可以教它:“先看一个条件,条件成立走一条路,不成立走另一条路。” 这条指令就是 if-else


一、if-else 长什么样?

最简单的格式是:

if (条件) {
    // 条件成立时执行的代码
} else {
    // 条件不成立时执行的代码
}
  • 条件:一个判断真假的问题,比如 分数 >= 60下雨 == true零花钱 >= 10
    条件里最常见的是关系表达式,像 ><>=<===(等于)、!=(不等于)。
  • if 后面必须有一对圆括号 () 把条件包起来,不能省略
  • 花括号 { } 表示“如果条件成立,我要干这一堆事;否则干另一堆事”。如果只有一行代码,花括号可以省略,但强烈建议初学者每次加上,这样代码更清楚,也不容易犯错。
  • else 不能单独存在,它必须跟在某个 if 后面,而且只能有一个 else。

二、第二个例子:判断考试成绩(课本原例)

#include <iostream>
using namespace std;

int main() {
    int score;                     // 定义整数变量,存分数
    cout << "请输入你的分数:";
    cin >> score;

    if (score >= 60) {             // 条件:分数 ≥ 60
        cout << "及格" << endl;
    } else {                       // 否则(分数 < 60)
        cout << "不及格" << endl;
    }

    return 0;
}

运行效果:

请输入你的分数:85
及格
请输入你的分数:45
不及格

你可以把 score >= 60 换成 score >= 90,就变成“优秀/没优秀”的判断了。条件随你改。


三、更多生活例子:买零食、看电影、判奇偶

例1:零花钱够不够买两包薯条?

#include <iostream>
using namespace std;

int main() {
    int money;                     // 定义整数变量,存零花钱
    cout << "你今天有多少零花钱?(元)";
    cin >> money;

    if (money >= 10) {             // 两包薯条需要10元
        cout << "可以买两包薯条!" << endl;
    } else {
        cout << "只够买一包薯条。" << endl;
    }

    return 0;
}

例2:判断年龄能不能看PG-13电影(13岁以上)

#include <iostream>
using namespace std;

int main() {
    int age;                       // 定义整数变量,存年龄
    cout << "你几岁了?";
    cin >> age;

    if (age >= 13) {
        cout << "可以看这部电影!" << endl;
    } else {
        cout << "对不起,需要家长陪同。" << endl;
    }

    return 0;
}

例3:判断一个整数是奇数还是偶数

#include <iostream>
using namespace std;

int main() {
    int num;                       // 定义整数变量,存待判断的数
    cout << "输入一个整数:";
    cin >> num;

    // 用 % 取余数,如果除以 2 余数为 0 就是偶数
    if (num % 2 == 0) {
        cout << num << " 是偶数" << endl;
    } else {
        cout << num << " 是奇数" << endl;
    }

    return 0;
}

四、使用布尔(bool)变量:让条件更直观

在判断天气的例子中,我们用了布尔变量 isRainy。布尔变量只能存两种值:true(真/1)或 false(假/0)。直接把布尔变量放在 if 的条件里,就像在问:“这句话是真的吗?”

#include <iostream>
using namespace std;

int main() {
    bool isRainy;                     // 定义布尔变量,表示是否下雨
    cout << "今天下雨吗?(1表示是,0表示否):";
    cin >> isRainy;

    if (isRainy) {                    // 相当于 if (isRainy == true)
        cout << "带上雨伞!" << endl;
    } else {
        cout << "不用带伞。" << endl;
    }

    return 0;
}

你也可以这样写:if (isRainy == true),但直接写 if (isRainy) 更常见、更简洁。

小技巧:如果条件写 if (isRainy == false),可以简化成 if (!isRainy)。感叹号 ! 表示“取反”,以后会学到更多逻辑运算符。


五、新手最容易犯的 5 个错误

  1. 条件忘了括号
    if score >= 60 // 编译错误!
    if (score >= 60)

  2. 在 if 条件后面加了分号
    if (score >= 60); // 分号结束语句,后面的 {} 跟 if 无关了
    if (score >= 60)

  3. 把赋值 = 当成等号 ==
    if (score = 60) // 这是把 60 赋值给 score,永远为真(C++认为非0为真)
    if (score == 60)

  4. else 单独出现,没有对应的 if

    else {
        cout << "错误";
    }
    

    ✅ else 必须跟在 if 后面(可以隔开一些代码,但不能没有 if)

  5. 花括号里有多条语句却忘了加花括号

    if (score >= 60)
        cout << "及格" << endl;    // 只有这一句属于 if
        cout << "恭喜!" << endl;  // 这句一定会执行(和if无关)
    

    ✅ 用花括号括起来:

    if (score >= 60) {
        cout << "及格" << endl;
        cout << "恭喜!" << endl;
    }
    

记住:花括号就是“一捆代码”,把它们绑在一起,都听 if 或 else 的指挥。


六、完整示例:判断年龄是否能看电影并区分价格

这个程序融合了以上所有知识点,你可以直接复制运行试试:

#include <iostream>
using namespace std;

int main() {
    int age;                          // 定义整数变量,存年龄
    cout << "请输入你的年龄:";
    cin >> age;

    // 判断能否看电影:13岁或以上可看
    if (age >= 13) {
        cout << "你可以观看这部电影。" << endl;
        // 再根据年龄判断票价优惠
        if (age >= 60) {              // 老人票优惠(嵌套if-else)
            cout << "票价:20元(老人优惠)" << endl;
        } else {
            cout << "票价:40元(全价)" << endl;
        }
    } else {
        cout << "对不起,你太小了,需要家长陪同。" << endl;
        // 儿童票价
        cout << "票价:20元(儿童票)" << endl;
    }

    return 0;
}

注意:if 里面还可以再放 if-else,这叫嵌套。别怕,一层套一层,逻辑和外面一样。


七、延伸思考:如果条件不止两个怎么办?

生活中经常有超过两种可能:

  • 分数 ≥ 90 → 优秀
  • 分数 ≥ 80 → 良好
  • 分数 ≥ 60 → 及格
  • 分数 < 60 → 不及格

这时候可以用 else if 来写多个分支,像这样:

if (score >= 90) {
    cout << "优秀";
} else if (score >= 80) {
    cout << "良好";
} else if (score >= 60) {
    cout << "及格";
} else {
    cout << "不及格";
}

每个条件按顺序检查,一旦找到成立的就跳过后面的。这就是 if-else if-else 结构,它是 if-else 的自然扩展。以后你还会学到 switch 语句,适合处理多个固定值的判断。


八、总结

  • if-else 是编程里最重要的“选择器”,让程序根据条件走不同路线。
  • 条件用关系表达式或布尔变量,写在 () 里。
  • { } 把要执行的代码打包。
  • 记得 === 的区别,别踩坑。
  • 多练习生活中的判断:零花钱、游戏胜负、温度高低……每个都能写成小程序。

试试看:写一个程序,判断今天是否要穿外套(温度小于 15 度就穿),运行起来,感受一下“你写规则,计算机照做”的乐趣吧!

相关知识点推荐:

  • 关系运算符(>, <, ==, >=, <=, !=
  • 逻辑运算符(&& 与、|| 或、! 非)
  • 多重分支:if-else if-else
  • 多路分支:switch 语句
  • 循环语句(whilefor)——学会判断后,下一步就是重复做判断。

例题精讲

1单选题

在C++中,若a为int类型变量,以下哪个代码片段能正确判断a是否为正数、负数或0?

Aif(a>0) cout<<"正数"; else if(a<0) cout<<"负数"; else cout<<"0";
Bif(a>0) cout<<"正数"; else cout<<"负数"; if(a==0) cout<<"0";
Cif(a>0) cout<<"正数"; else if(a<0) cout<<"负数";
Dif(a>0) cout<<"正数"; if(a<0) cout<<"负数"; else cout<<"0";
2判断题

在C++中,if语句后面的条件表达式必须用小括号括起来,否则编译会报错。

3填空题
以下程序判断年龄是否成年(>=18),若成年输出"Adult",否则输出"Minor"。请补全代码。
#include <iostream>
using namespace std;
int main() {
    int age;
    cin >> age;
    if (___)
        cout << "Adult";
    ___
        cout << "Minor";
    return 0;
}
4单选题

以下C++代码的输出是什么? int x = 10; if (x > 5) if (x > 15) cout << "A"; else cout << "B"; else cout << "C";

AA
BB
CC
D无输出
5填空题
以下程序判断输入的整数是否为偶数(能被2整除),是则输出"Even",否则输出"Odd"。请补全代码。
#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    if (___)
        cout << "Even";
    else
        cout << "Odd";
    return 0;
}