返回 课程

模板 信奥AC之路(第一级)

0% 完成
0/0 步骤
  1. 第一课 开发环境与基础输出
    4 主题|小节
  2. 第二课 算数运算符
    6 主题|小节
  3. 第三课 输入与运算
    3 主题|小节
  4. 第四课 数值操作
    4 主题|小节
  5. 第五课 表达式与运算符
    3 主题|小节
  6. 第六课 三目运算与双分支(缺导语+本课目标)
    2 主题|小节
  7. 第七课 多分支结构(缺导语+本课目标)
    1 主题|小节
  8. 第八课 多if语句
    1 主题|小节
  9. 第九课 三种分支结构的比较
    1 主题|小节
  10. 第十课 巩固学习分支结构
    1 主题|小节
  11. 第十一课 switch与复合语句
    3 主题|小节
  12. 第十二课 while循环
    2 主题|小节
  13. 第十三课 while循环的简单条件输出
    1 主题|小节
  14. 第十四课 while循环的输入序列处理
    1 主题|小节
  15. 第十五课 while循环的复杂条件输出
    2 主题|小节
  16. 第十六课 while循环与数据统计
    1 主题|小节
  17. 第十七课 for循环结构
    3 主题|小节
  18. 第十八课 for循环的输入序列处理)
    1 主题|小节
  19. 第十九课 深入探索for循环
    2 主题|小节
  20. 第二十课 三种循环的对比
    2 主题|小节
  21. 第二十一课 程序调试(一)
    3 主题|小节
  22. 第二十二课 调试工具的使用
    2 主题|小节
  23. 第二十三课 综合复习
    2 主题|小节
  24. 第二十四课 学习评估
    1 主题|小节
课 9, 主题|小节 1
进行中

9 三种分支结构的比较

2025年4月20日
课 进展
0% 完成

“小朋友们,我们来总结一下这三种分支结构的特点和使用场景。” 我在黑板上画了一张表格:

| 结构类型 | 特点 | 适用场景 | 示例 |
| —————- | ———————– | ————————————————- | ————————— |
| 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. 提示信息要实用准确