“小朋友们,我们来总结一下这三种分支结构的特点和使用场景。” 我在黑板上画了一张表格:
| 结构类型 | 特点 | 适用场景 | 示例 |
| —————- | ———————– | ————————————————- | ————————— |
| if-else双分支 | 只有两种可能的情况 | 判断及格/不及格、是/否等二选一的情况 | 分数>=60判断及格 |
| if-else if多分支 | 多种可能,但只执行一种 | 成绩等级、年龄段、季节判断等多选一的情况 | 90分以上优秀,80分以上良好等 |
| 多if结构 | 多个独立判断,可能都执行 | 多个独立条件的检查,如多个优惠条件、多个错误检查等 | 同时判断语数英是否及格 |
##### 🔬 **实验十:分支结构对比**
题目描述:
编写一个程序,使用三种不同的分支结构(if-else双分支、if-else if多分支、多if结构)对同一个分数进行不同层次的判断。这个程序展示了三种分支结构的不同特点和适用场景。
输入格式:
一个整数score,表示考试分数
输出格式:
多行文本,包含:
– 双分支判断结果(及格与否)
– 多分支判断结果(成绩等级)
– 多个独立判断结果(特殊情况)
数据范围:
0 ≤ score ≤ 100
样例输入1:
“`
85
“`
样例输出1:
“`
双分支判断结果:及格
多分支判断结果:良好
获得奖学金资格
可以参加竞赛
“`
样例输入2:
“`
45
“`
样例输出2:
“`
双分支判断结果:不及格
多分支判断结果:需要补考
需要补习
建议参加辅导
“`
解题思路:
1. 使用三种不同的分支结构
2. 针对相同的分数做不同层次的判断
3. 展示每种结构的特点
4. 输出清晰的判断结果
代码实现:
“`cpp
#include
using namespace std;
int main() {
int score; // 存储考试分数
// 提示用户输入并获取分数
cout << "请输入成绩:";
cin >> score;
// 检查分数是否有效
if(score < 0 || score > 100) {
cout << "无效的分数!" << endl;
return 1;
}
cout << "=== 三种分支结构的判断结果 ===" << endl;
// 1. 双分支结构 - 只判断及格与否
cout << "双分支判断结果:";
if(score >= 60) {
cout << "及格" << endl;
} else {
cout << "不及格" << endl;
}
// 2. 多分支结构 - 判断成绩等级
cout << "多分支判断结果:";
if(score >= 90) {
cout << "优秀" << endl;
} else if(score >= 80) {
cout << "良好" << endl;
} else if(score >= 60) {
cout << "及格" << endl;
} else {
cout << "需要补考" << endl;
}
// 3. 多if结构 - 独立的多个判断
if(score >= 85) {
cout << "获得奖学金资格" << endl;
}
if(score >= 75) {
cout << "可以参加竞赛" << endl;
}
if(score < 60) {
cout << "需要补习" << endl;
}
if(score < 50) {
cout << "建议参加辅导" << endl;
}
return 0;
}
```
代码说明:
1. 使用三种不同的分支结构
2. 每种结构有不同的判断目的
3. 多if结构的判断互不影响
4. 输出结果分类清晰
注意事项:
1. 分数必须在0-100范围内
2. 三种结构各有特点
3. 判断条件要合理
4. 输出信息要有层次
##### 🔬 **实验十一:购物折扣计算**
题目描述:
编写一个购物折扣计算程序,使用三种不同的分支结构处理不同的折扣规则:
1. 是否满1000(满1000八折,否则九折)
2. 根据具体金额判断赠品(2000以上、1000以上、1000以下)
3. 多个独立优惠(VIP额外95折、满500参加抽奖、满100可用积分)
输入格式:
两行输入:
- 第一行:一个浮点数price表示商品价格
- 第二行:一个整数isVIP表示是否是VIP(1是0否)
输出格式:
多行文本,包含:
- 基础折扣信息
- 赠品信息
- 额外优惠信息
- 最终价格(保留2位小数)
数据范围:
0.0 ≤ price ≤ 10000.0
样例输入1:
```
2500 1
```
样例输出1:
```
满1000打8折
赠送购物袋和优惠券
VIP额外95折
可以参加抽奖
可以使用积分
最终价格:1900.00
```
样例输入2:
```
800 0
```
样例输出2:
```
不满1000打9折
无赠品
可以使用积分
最终价格:720.00
```
解题思路:
1. 使用if-else判断基础折扣
2. 使用if-else if判断赠品等级
3. 使用多个独立if判断额外优惠
4. 按顺序计算最终价格
代码实现:
```cpp
#include
#include
using namespace std;
int main() {
double price; // 存储商品价格
bool isVIP; // 存储是否是VIP
// 提示用户输入并获取数据
cout << "请输入商品价格:";
cin >> price;
cout << "是否是VIP(1是0否):";
cin >> isVIP;
// 检查价格是否有效
if(price < 0) {
cout << "价格不能为负数!" << endl;
return 1;
}
// 1. 双分支 - 判断基础折扣
if(price >= 1000) {
cout << "满1000打8折" << endl;
price *= 0.8;
} else {
cout << "不满1000打9折" << endl;
price *= 0.9;
}
// 2. 多分支 - 判断赠品
if(price >= 2000) {
cout << "赠送购物袋和优惠券" << endl;
} else if(price >= 1000) {
cout << "赠送购物袋" << endl;
} else {
cout << "无赠品" << endl;
}
// 3. 多if - 独立判断多个优惠
if(isVIP) {
cout << "VIP额外95折" << endl;
price *= 0.95;
}
if(price >= 500) {
cout << "可以参加抽奖" << endl;
}
if(price >= 100) {
cout << "可以使用积分" << endl;
}
// 输出最终价格
cout << "最终价格:" << fixed << setprecision(2)
<< price << endl;
return 0;
}
```
代码说明:
1. 使用不同分支结构处理不同优惠
2. 优惠计算按照合理顺序进行
3. 使用fixed和setprecision控制输出
4. 提供清晰的优惠说明
注意事项:
1. 价格必须是非负数
2. 折扣计算顺序要合理
3. 优惠信息要完整清晰
4. 最终价格保留两位小数
##### 🔬 **实验十二:学生评价系统**
题目描述:
编写一个学生综合评价系统,使用三种不同的分支结构处理不同的评价标准:
1. 判断是否合格(所有分数均需达到60分)
2. 根据平均分进行综合评级
3. 对各项分数不足的地方给出具体建议
输入格式:
三个整数,用空格分隔:
- attendance:出勤分数(0-100)
- homework:作业分数(0-100)
- exam:考试分数(0-100)
输出格式:
多行文本,包含:
- 课程是否合格
- 综合评级结果
- 具体改进建议(如果有)
- 平均分(保留2位小数)
数据范围:
0 ≤ 所有分数 ≤ 100
样例输入1:
```
95 88 92
```
样例输出1:
```
课程合格
优秀学生
平均分:91.67
```
样例输入2:
```
55 45 65
```
样例输出2:
```
课程不合格
需要努力
出勤需要改进
作业需要改进
平均分:55.00
```
解题思路:
1. 使用if-else判断是否合格
2. 使用if-else if进行评级
3. 使用多个if给出具体建议
4. 计算并显示平均分
代码实现:
```cpp
#include
#include
using namespace std;
int main() {
int attendance, homework, exam; // 存储三个分数
// 提示用户输入并获取分数
cout << "请输入出勤分数(0-100):";
cin >> attendance;
cout << "请输入作业分数(0-100):";
cin >> homework;
cout << "请输入考试分数(0-100):";
cin >> exam;
// 检查分数是否有效
if(attendance < 0 || attendance > 100 ||
homework < 0 || homework > 100 ||
exam < 0 || exam > 100) {
cout << "分数输入无效!" << endl;
return 1;
}
// 1. 双分支 - 判断是否合格
if(exam >= 60 && attendance >= 60 && homework >= 60) {
cout << "课程合格" << endl;
} else {
cout << "课程不合格" << endl;
}
// 2. 多分支 - 综合评级
double average = (attendance + homework + exam) / 3.0;
if(average >= 90) {
cout << "优秀学生" << endl;
} else if(average >= 80) {
cout << "良好学生" << endl;
} else if(average >= 60) {
cout << "及格学生" << endl;
} else {
cout << "需要努力" << endl;
}
// 3. 多if - 具体问题分析
if(attendance < 60) {
cout << "出勤需要改进" << endl;
}
if(homework < 60) {
cout << "作业需要改进" << endl;
}
if(exam < 60) {
cout << "考试需要补考" << endl;
}
// 输出平均分
cout << "平均分:" << fixed << setprecision(2)
<< average << endl;
return 0;
}
```
代码说明:
1. 三种分支结构各有用途
2. 加入了分数有效性检查
3. 使用多个独立判断给出建议
4. 平均分保留两位小数
注意事项:
1. 分数必须在0-100范围内
2. 合格条件要求所有分数达标
3. 建议要具体且有建设性
4. 评价用语要积极正面
##### 🔬 **实验十三:游戏角色状态**
题目描述:
编写一个游戏角色状态监控系统,使用三种不同的分支结构处理不同的状态判断:
1. 判断角色是否存活
2. 根据等级评定玩家级别
3. 判断多个独立状态并给出提示
输入格式:
三个整数,用空格分隔:
- health:生命值(0-100)
- level:等级(1-99)
- coins:金币数量(0-99999)
输出格式:
多行文本,包含:
- 角色存活状态
- 玩家级别评定
- 各种状态提示(如果有)
数据范围:
0 ≤ health ≤ 100
1 ≤ level ≤ 99
0 ≤ coins ≤ 99999
样例输入1:
```
85 82 5000
```
样例输出1:
```
角色存活
大师级玩家
可以购买高级装备
可以参加排位赛
```
样例输入2:
```
20 15 200
```
样例输出2:
```
角色存活
新手玩家
警告:生命值低
需要积攒更多金币
```
解题思路:
1. 使用if-else判断生存状态
2. 使用if-else if判断玩家级别
3. 使用多个if检查各种状态
4. 根据不同状态给出提示
代码实现:
```cpp
#include
using namespace std;
int main() {
int health, level, coins; // 存储角色状态数据
// 提示用户输入并获取数据
cout << "请输入生命值(0-100):";
cin >> health;
cout << "请输入等级(1-99):";
cin >> level;
cout << "请输入金币数:";
cin >> coins;
// 检查输入数据是否有效
if(health < 0 || health > 100 ||
level < 1 || level > 99 ||
coins < 0) {
cout << "输入数据无效!" << endl;
return 1;
}
// 1. 双分支 - 判断存活状态
if(health > 0) {
cout << "角色存活" << endl;
} else {
cout << "角色死亡" << endl;
return 0; // 如果角色死亡,直接结束程序
}
// 2. 多分支 - 评定玩家级别
if(level >= 80) {
cout << "大师级玩家" << endl;
} else if(level >= 50) {
cout << "高级玩家" << endl;
} else if(level >= 20) {
cout << "中级玩家" << endl;
} else {
cout << "新手玩家" << endl;
}
// 3. 多if - 状态检查
if(health < 30) {
cout << "警告:生命值低" << endl;
}
if(coins >= 1000) {
cout << "可以购买高级装备" << endl;
}
if(level >= 10) {
cout << "可以参加排位赛" << endl;
}
if(coins < 500) {
cout << "需要积攒更多金币" << endl;
}
return 0;
}
```
代码说明:
1. 首先检查角色是否存活
2. 根据等级划分玩家级别
3. 独立检查多个游戏状态
4. 给出适当的状态提示
注意事项:
1. 数据必须在有效范围内
2. 死亡状态要优先处理
3. 等级划分要合理
4. 提示信息要清晰有用
##### 🔬 **实验十四:天气预报系统**
题目描述:
编写一个简单的天气预报系统,使用三种不同的分支结构处理不同的天气判断:
1. 判断是否适合外出
2. 根据温度给出着装建议
3. 根据多个天气指标给出具体提醒
输入格式:
三个数据,用空格分隔:
- temperature:温度(浮点数,单位℃)
- humidity:湿度(整数,0-100)
- isRaining:是否下雨(1是0否)
输出格式:
多行文本,包含:
- 是否适合外出的判断
- 温度相关建议
- 具体的天气提醒
数据范围:
-20.0 ≤ temperature ≤ 45.0
0 ≤ humidity ≤ 100
样例输入1:
```
25.5 65 0
```
样例输出1:
```
适合外出
天气温暖
建议适量饮水
```
样例输入2:
```
35.5 85 1
```
样例输出2:
```
不适合外出
注意防暑
湿度较大
记得带伞
温度异常
```
解题思路:
1. 使用if-else判断是否适合外出
2. 使用if-else if给出温度建议
3. 使用多个if给出具体提醒
4. 考虑多个天气因素的综合影响
代码实现:
```cpp
#include
using namespace std;
int main() {
double temperature; // 存储温度
int humidity; // 存储湿度
bool isRaining; // 存储是否下雨
// 提示用户输入并获取数据
cout << "请输入温度(℃):";
cin >> temperature;
cout << "请输入湿度(0-100):";
cin >> humidity;
cout << "是否下雨(1是0否):";
cin >> isRaining;
// 检查输入数据是否有效
if(temperature < -20 || temperature > 45 ||
humidity < 0 || humidity > 100) {
cout << "输入数据无效!" << endl;
return 1;
}
// 1. 双分支 - 判断适合外出与否
if(!isRaining && temperature >= 15 && temperature <= 30) {
cout << "适合外出" << endl;
} else {
cout << "不适合外出" << endl;
}
// 2. 多分支 - 温度建议
if(temperature >= 35) {
cout << "注意防暑" << endl;
} else if(temperature >= 25) {
cout << "天气温暖" << endl;
} else if(temperature >= 15) {
cout << "天气舒适" << endl;
} else {
cout << "注意保暖" << endl;
}
// 3. 多if - 天气提醒
if(humidity >= 80) {
cout << "湿度较大" << endl;
}
if(isRaining) {
cout << "记得带伞" << endl;
}
if(temperature > 30 || temperature < 10) {
cout << "温度异常" << endl;
}
if(temperature >= 25 && !isRaining) {
cout << "建议适量饮水" << endl;
}
return 0;
}
```
代码说明:
1. 综合考虑温度、湿度和降雨
2. 使用不同分支结构给出建议
3. 添加了数据有效性检查
4. 提供多个角度的天气提醒
注意事项:
1. 输入数据必须在有效范围内
2. 温度区间划分要合理
3. 多个天气因素要综合考虑
4. 提示信息要实用准确