C++ if-else 语句基础
简单37二选一的决断: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;
}
新手最容易犯的错误
-
else 后面加了条件
if (x > 0) { // ... } else (x <= 0) { // 错误!else后面不能有括号和条件 // ... }正确写法:
else后面直接跟花括号,或者无条件。如果还想判断其他情况,要用else if。 -
忘记花括号,导致分支只包含一行
if (score >= 60) cout << "及格" << endl; cout << "继续加油" << endl; // 这行不在if分支中!永远会执行如果分支里有多条语句,必须用花括号括起来。
-
if 条件后加了分号
if (a == b); // 错误!分号让if语句结束,后面的else成为了孤立的 cout << "相等" << endl; else cout << "不相等" << endl; // 编译错误分号表示语句结束,if 后面加
;等于 if 什么都不做。 -
混淆赋值
=和判等==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 解决它们吧!
例题精讲
以下关于 C++ if-else 语句的写法,哪一个是正确的?
分析以下 C++ 代码,运行后的输出是什么? int age = 18; if (age >= 18) { cout << "成年人"; } else { cout << "未成年人"; }
在 C++ 中,if-else 语句的 else 部分后面如果只有一条语句,可以不使用花括号。
以下程序用于判断输入的整数是否为偶数,如果是则输出"偶数",否则输出"奇数"。请补全 if-else 结构。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
if (___)
cout << "偶数";
else
cout << "奇数";
return 0;
}以下程序输出两个整数 a 和 b 中的较大值。请补全代码。
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
if (___)
cout << a;
else
cout << b;
return 0;
}