条件分支结构的作用:
条件分支结构用于控制程序的执行流程,根据特定条件决定执行不同的代码块。
C++ 提供了以下五种条件分支结构:
if
语句(单分支结构)if-else
语句(双分支结构)if-else if-else
语句(多分支结构)switch
语句(多分支选择结构)- 三元运算符
?:
(简化条件判断)
一、if
语句
作用:
if
语句用于判断条件是否成立,如果条件为 true
,则执行代码块,否则跳过。
语法:
if (条件表达式) {
// 代码块(条件为 true 时执行)
}
示例:
#include <iostream>
using namespace std;
int main() {
int num;
cout << "输入一个整数: ";
cin >> num;
if (num > 0) { // 判断是否大于 0
cout << "该数是正数" << endl;
}
system("pause");
return 0;
}
二、if-else
语句
作用:
if-else
语句用于处理两种情况:如果 if
条件成立,执行 if
代码块,否则执行 else
代码块。
语法:
if (条件表达式) {
// 代码块(条件为 true 时执行)
}
else {
// 代码块(条件为 false 时执行)
}
示例:
#include <iostream>
using namespace std;
int main() {
int num;
cout << "输入一个整数: ";
cin >> num;
if (num % 2 == 0) {
cout << "该数是偶数" << endl;
}
else {
cout << "该数是奇数" << endl;
}
system("pause");
return 0;
}
三、 if-else if-else
语句
作用:
用于多个条件的判断:按顺序依次判断,第一个满足条件的代码块执行后,后续分支不再执行。
语法:
if (条件1) {
// 代码块(条件1为 true 时执行)
}
else if (条件2) {
// 代码块(条件2为 true 时执行)
}
else {
// 代码块(以上条件都不满足时执行)
}
示例:
#include <iostream>
using namespace std;
int main() {
int score;
cout << "输入成绩: ";
cin >> score;
if (score >= 90) {
cout << "优秀" << endl;
}
else if (score >= 80) {
cout << "良好" << endl;
}
else if (score >= 60) {
cout << "及格" << endl;
}
else {
cout << "不及格" << endl;
}
system("pause");
return 0;
}
4. switch
语句
作用:
switch
语句用于处理多个离散值的情况,适用于变量值固定的判断(如整数、字符)。
语法:
switch (表达式) {
case 值1:
// 代码块
break;
case 值2:
// 代码块
break;
default:
// 代码块(所有 case 都不匹配时执行)
}
注意:
break
语句防止代码穿透,执行完case
语句后退出switch
结构(不再执行下一个case
语句)。default
语句(可选)用于所有case
都不匹配时执行。
示例:
#include <iostream>
using namespace std;
int main() {
char grade;
cout << "输入成绩等级 (A, B, C, D, F): ";
cin >> grade;
switch (grade) {
case 'A':
cout << "优秀" << endl;
break;
case 'B':
cout << "良好" << endl;
break;
case 'C':
cout << "一般" << endl;
break;
case 'D':
cout << "及格" << endl;
break;
case 'F':
cout << "不及格" << endl;
break;
default:
cout << "输入错误" << endl;
}
system("pause");
return 0;
}
五、 三元运算符 (?:
)
作用:
三元运算符用于简化 if-else
语句,适用于简单的条件判断。
语法:
条件 ? 表达式1 : 表达式2;
- 若
条件
为true
,执行表达式1
; - 否则,执行
表达式2
。
示例:
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 20;
int max = (a > b) ? a : b; // 选出较大的数
cout << "较大的数是: " << max << endl;
system("pause");
return 0;
}
等价于:
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 20;
int max;
if (a > b)
max = a;
else
max = b;
cout << "较大的数是: " << max << endl;
system("pause");
return 0;
}
六、 if-else
与 switch
选择
if-else
与 switch
的比较:
适用场景 | if-else | switch |
---|---|---|
适用于范围判断 | ✅ | ❌ |
适用于多个离散值 | ✅ | ✅ |
适用于字符串判断 | ✅ | ❌(C++17 以前不支持 switch 处理 std::string ) |
代码可读性 | 一般 | 更清晰 |
执行效率 | 一般 | 更快(部分情况) |
示例:
#include <iostream>
using namespace std;
int main() {
int num;
cout << "输入一个整数: ";
cin >> num;
if (num >= 1 && num <= 10) { // 适合 if-else
cout << "if-else: 范围合法" << endl;
}
else
{
cout << "if-else: 范围不合法" << endl;
}
switch (num) { // 适合 switch
case 1:
case 2:
cout << "switch:数字是 1 或 2" << endl;
break;
default:
cout << "switch:其他情况" << endl;
}
system("pause");
return 0;
}