if-else分支语句
简单6if-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 个错误
-
条件忘了括号
❌if score >= 60// 编译错误!
✅if (score >= 60) -
在 if 条件后面加了分号
❌if (score >= 60);// 分号结束语句,后面的 {} 跟 if 无关了
✅if (score >= 60) -
把赋值
=当成等号==
❌if (score = 60)// 这是把 60 赋值给 score,永远为真(C++认为非0为真)
✅if (score == 60) -
else 单独出现,没有对应的 if
❌else { cout << "错误"; }✅ else 必须跟在 if 后面(可以隔开一些代码,但不能没有 if)
-
花括号里有多条语句却忘了加花括号
❌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语句- 循环语句(
while、for)——学会判断后,下一步就是重复做判断。
例题精讲
在C++中,若a为int类型变量,以下哪个代码片段能正确判断a是否为正数、负数或0?
在C++中,if语句后面的条件表达式必须用小括号括起来,否则编译会报错。
以下程序判断年龄是否成年(>=18),若成年输出"Adult",否则输出"Minor"。请补全代码。
#include <iostream>
using namespace std;
int main() {
int age;
cin >> age;
if (___)
cout << "Adult";
___
cout << "Minor";
return 0;
}以下C++代码的输出是什么? int x = 10; if (x > 5) if (x > 15) cout << "A"; else cout << "B"; else cout << "C";
以下程序判断输入的整数是否为偶数(能被2整除),是则输出"Even",否则输出"Odd"。请补全代码。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
if (___)
cout << "Even";
else
cout << "Odd";
return 0;
}