第五课 分支结构
除了顺序结构,程序还有分支结构,根据条件选择不同的执行路径。C++中分支结构主要有if语句和switch语句。
一、分支结构特点
- 根据条件判断结果,选择执行不同的程序路径
- 程序不再只是直线执行,而是出现”岔路口”
- 每次只会执行其中一个分支
二、if语句基本语法
if (条件) {
// 条件为真时执行
}
#include <iostream>
using namespace std;
int main() {
int age = 18;
// 简单if语句
if (age >= 18) {
cout << "成年人" << endl;
}
// if-else语句
if (age % 2 == 0) {
cout << "偶数" << endl;
} else {
cout << "奇数" << endl;
}
return 0;
}
三、if-else语句
if (条件) {
// 条件为真时执行
} else {
// 条件为假时执行
}
#include <iostream>
using namespace std;
int main() {
int score = 85;
if (score >= 90) {
cout << "优秀" << endl;
} else if (score >= 80) {
cout << "良好" << endl; // 输出:良好
} else if (score >= 70) {
cout << "中等" << endl;
} else if (score >= 60) {
cout << "及格" << endl;
} else {
cout << "不及格" << endl;
}
return 0;
}
四、多重if-else
if (条件1) {
// 条件1为真时执行
} else if (条件2) {
// 条件2为真时执行
} else {
// 所有条件为假时执行
}
#include <iostream>
using namespace std;
int main() {
int age = 20;
bool isStudent = true;
if (age >= 18) {
if (isStudent) {
cout << "成人学生票" << endl;
} else {
cout << "成人票" << endl;
}
} else {
if (isStudent) {
cout << "学生票" << endl;
} else {
cout << "儿童票" << endl;
}
}
return 0;
}
五、switch语句基本语法
switch (表达式) {
case 值1:
// 表达式等于值1时执行
break; // 跳出switch
case 值2:
// 表达式等于值2时执行
break;
// ... 更多case
default:
// 所有case都不匹配时执行
}
switch语句示例:
#include <iostream>
using namespace std;
int main() {
int day = 3;
switch (day) {
case 1:
cout << "星期一" << endl;
break;
case 2:
cout << "星期二" << endl;
break;
case 3:
cout << "星期三" << endl; // 输出:星期三
break;
case 4:
cout << "星期四" << endl;
break;
case 5:
cout << "星期五" << endl;
break;
case 6:
cout << "星期六" << endl;
break;
case 7:
cout << "星期日" << endl;
break;
default:
cout << "无效的星期" << endl;
}
return 0;
}
switch不加break的效果(case穿透):
#include <iostream>
using namespace std;
int main() {
int month = 3;
switch (month) {
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
cout << "31天" << endl; // 3月输出31天
break;
case 4: case 6: case 9: case 11:
cout << "30天" << endl;
break;
case 2:
cout << "28天(闰年29天)" << endl;
break;
}
return 0;
}
六、三元运算符(简洁的if-else)
#include <iostream>
using namespace std;
int main() {
int a = 5, b = 10;
int max = (a > b) ? a : b; // 如果a>b则max=a,否则max=b
cout << "最大值:" << max << endl; // 输出10
return 0;
}
