### **C++ (分支结构综合) 模拟练习题 - 参考答案** #### **一、 填空题** 1. `default` 2. `大括号` (或 `{}`) 3. `string` (或 `float`, `double` 等其他非整型) 4. `(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)` 5. `!=` 6. `分支` (或 `条件`, `else if`/`else`) 7. `x <= 10` #### **二、 单项选择题** 1. **C** (cin 用于输入) 2. **B** (if-else if-else 用于多区间判断) 3. **D** (switch 不支持浮点数) 4. **C** (break 用于防止 case 穿透) 5. **A** (85 大于等于60且小于90,为真) 6. **D** (前置条件下的再判断,是典型的嵌套逻辑) 7. **C** (50不满足前两个条件,执行 else) 8. **B** (total\_Count 是合法的变量名) 9. **B** (整数除法 `20/3` 得 6,取余 `20%3` 得 2) 10. **B** (奇数除以2余数为1) #### **三、 判断题** 1. **×** (if-else 结构是互斥的) 2. **×** (`=` 是赋值,`==` 是比较) 3. **√** (逻辑或 || 的短路特性) 4. **×** (break 不是必须的,但是省略会产生穿透效果) 5. **√** (if 可以独立存在) 6. **×** (语法错误,应写为 `x > 10 && x < 20`) 7. **√** (这是多分支 "else" 问题的配对规则) 8. **√** (`!false` 是 `true`,`true || false` 结果为 `true`) 9. **√** (可以将多个 case 标签写在一起,共用一个执行块) 10. **√** (该结构具有排他性,最多只有一个分支被执行) #### **四、 代码阅读与分析题** 1. **F** (字符'C'的ASCII码67, 67+3=70, 70对应的ASCII字符是'F') 2. **冰冻** (-5不满足前三个条件,执行最后的 else) 3. **良好 中等** (匹配 `case 'B'`,输出"良好 ",因无break,穿透到`case 'C'`,输出"中等 ",遇到break结束) 4. **欢迎普通用户** (`logged_in`为真,执行外层if;`is_admin`为假,执行内层else) #### **五、 程序填空题** 1. **题目:成绩等级转换** 1. `score >= 80` 2. `score >= 70` 3. `score >= 60` 4. `else` 2. **题目:星期转换器** 1. `switch(day)` 2. `break` 3. `case 3` 4. `default` 3. **题目:商场折扣计算器** *(注意:这是一个开放性编程题,以下为标准参考答案,学生的实现逻辑正确即可)* ```cpp #include using namespace std; int main() { double amount; bool is_vip; cout << "请输入消费金额和是否为VIP(1是/0否): "; cin >> amount >> is_vip; double final_payment = amount; // 默认应付金额为原始金额 // 8. 外层首先判断是否为VIP会员 if (is_vip == true) { // 或者直接 if (is_vip) // 是VIP会员,进入嵌套判断来决定折扣力度 // 9. 嵌套判断:消费金额是否大于500 if (amount > 500) { // 享受8折 final_payment = amount * 0.8; } else { // 10. 享受9折 final_payment = amount * 0.9; } } // 如果不是VIP,final_payment保持原值,无需else cout << final_payment << endl; return 0; } ```