9.5 KiB
C++ 分支结构综合 练习题
姓名:__________ 成绩:__________
一、 填空题 (每空 2 分,共 14 分)
- 在
switch语句中,如果所有case标签都未匹配成功,程序将执行 _____________ 标签后的代码(如果存在)。 - 要在一个
if或者else代码块中执行多条指令,必须使用一对 _____________ 将它们包裹起来。 - 在
switch(c)语句中,变量c的类型不能是double或者 _____________ 类型。 - 要判断一个年份
year是“闰年”(能被4整除但不能被100整除,或者能被400整除),其完整的 C++ 逻辑表达式为 ________________________________________________________________________________________。 - 在C++中,用于判断“不等于”的关系运算符是 _____________。
if-else if-else结构特别适合用于处理多个互斥的条件分支,当其中某一个条件满足后,其余的 _____________ 将不会再被判断。- 表达式
x > 10的逻辑非形式是!(__________________)。
二、 单项选择题 (每题 2 分,共 20 分)
( ) 1. C++ 中用于从键盘读取用户输入的工具是?
A. cout B. main C. cin D. return
( ) 2. 根据年龄 age 来决定不同的票价:儿童(<12岁)半价,老人(>=60岁)7折,其他人全价。这个逻辑最适合用什么结构实现?
A. 顺序执行 B. if...else if...else C. 单个 if D. switch
( ) 3. switch 语句的括号里,不可以放入哪种类型的变量?
A. int B. char C. bool D. double
( ) 4. 对于 switch 语句,下列说法正确的是?
A. default 语句是必须的
B. case 后面可以跟一个变量,如 case x:
C. break 的作用是防止穿透到下一个 case
D. switch 语句可以判断一个浮点数的范围
( ) 5. 如果有定义 int score = 85;,表达式 score >= 60 && score < 90 的结果是?
A. true B. false C. 85 D. 60
( ) 6. 判断“如果今天是周末,再进一步判断天气是否晴朗”这样的逻辑,最适合用什么结构?
A. switch B. 多个独立的 if C. if-else D. 嵌套的 if
( ) 7. 分析代码,若 score = 50,程序会执行哪个分支?
if (score >= 60) { ... } else if (score >= 80) { ... } else { ... }
A. 执行 score >= 60 的分支 B. 执行 score >= 80 的分支
C. 执行 else 分支 D. 没有任何分支被执行
( ) 8. 下列哪个不是C++的关键字,可以作为变量名?
A. double B. total_Count C. if D. case
( ) 9. 表达式 20 / 3 和 20 % 3 的结果分别是?
A. 6.67 和 2 B. 6 和 2 C. 6 和 1 D. 7 和 2
( ) 10. 判断一个整数 num 是奇数,正确的 C++ 表达式是?
A. num % 2 == 0 B. num % 2 == 1 C. num / 2 == 1 D. num / 2 != 0
三、 判断题 (每题 2 分,共 20 分,对的打“√”,错的打“×”)
( ) 1. 在 if-else 结构中,if 代码块和 else 代码块有可能同时被执行。
( ) 2. 赋值运算符 = 和关系运算符 == 在 if 条件中作用相同,可以混用。
( ) 3. 在 if (A || B) 这个条件中,如果 A 的结果已经是 true,那么程序将不再去判断 B 的真假。
( ) 4. switch 语句的每个 case 分支都必须以 break 结尾。
( ) 5. 一个 if 语句可以不包含 else if 或 else 部分。
( ) 6. 在C++中,书写 if (x > 10 && < 20) 是一个合法且正确的判断 x 范围的方式。
( ) 7. else 总是与和它在同一代码块中,且离它最近的那个未配对的 if 结合。
( ) 8. 表达式 !false || false 的结果是 true。
( ) 9. 在 switch 语句中,可以合并多个 case来执行相同的代码块。
( ) 10. if...else if...else 结构中,只会有一个代码块被执行。
四、 代码阅读与分析题 (每题 4 分,共 16 分)
请直接在代码下方的横线处写出代码运行后的输出结果(如果程序没有任何输出,则写“无输出”)。
-
字符与整数运算
int main() { char c = 'C'; // 'C'的ASCII码是67 c = c + 3; cout << c << endl; return 0; }输出结果:____________________
-
多分支逻辑
int main() { int temperature = -5; if (temperature > 30) { cout << "炎热"; } else if (temperature > 15) { cout << "温暖"; } else if (temperature > 0) { cout << "寒冷"; } else { cout << "冰冻"; } return 0; }输出结果:____________________
-
switch
int main() { char grade = 'B'; switch (grade) { case 'A': cout << "优秀 "; break; case 'B': cout << "良好 "; case 'C': cout << "中等 "; break; case 'D': cout << "及格 "; default: cout << "需努力"; } return 0; }输出结果:____________________
-
嵌套if
int main() { bool logged_in = true; bool is_admin = false; if (logged_in) { if (is_admin) { cout << "欢迎管理员"; } else { cout << "欢迎普通用户"; } } else { cout << "请先登录"; } return 0; }输出结果:____________________
五、 程序填空题(本大题共 30 分)
-
题目:成绩等级转换 (共 8 分) 要求:输入一个整数
score代表成绩。根据以下规则使用if-else if-else结构输出对应的等级。- 90 ~ 100分: "A"
- 80 ~ 89分: "B"
- 70 ~ 79分: "C"
- 60 ~ 69分: "D"
- 60分以下: "F"
int main() { int score; cout << "请输入学生成绩: "; cin >> score; if (score >= 90) { cout << "A"; } // 1. 判断 B 等级 (80 ~ 89) else if (__________________________) { cout << "B"; } // 2. 判断 C 等级 (70 ~ 79) else if (__________________________) { cout << "C"; } // 3. 判断 D 等级 (60 ~ 69) else if (__________________________) { cout << "D"; } // 4. 其他情况都为 F ________________ { cout << "F"; } return 0; } -
题目:星期转换器(共 8 分) 要求:输入一个1-7的整数
day,使用switch语句输出对应的英文星期(1对应"Monday",2对应"Tuesday" ... 7对应"Sunday")。如果输入其他数字,输出"Invalid day"。int main() { int day; cout << "请输入1-7的数字: "; cin >> day; // 1. 请根据题意在此处填写一种分支结构类型进行判断 ________________{ case 1: cout << "Monday"; // 2.此处应填写? ________________; case 2: cout << "Tuesday"; break; // 3. 请补充星期三(Wednesday)的判断 ________________: cout << "Wednesday"; break; case 4: cout << "Thursday"; break; case 5: cout << "Friday"; break; case 6: cout << "Saturday"; break; case 7: cout << "Sunday"; break; // 4. 处理无效输入的情况 ________________: cout << "Invalid day"; } return 0; } -
题目:商场折扣计算器 要求:根据顾客的消费金额
amount和他是否为VIP会员is_vip来计算最终需要支付的金额。- 折扣规则:
- VIP会员(
is_vip为true)可以享受折扣。折扣力度取决于消费金额:- 如果消费金额
amount大于500元,VIP会员享受 8折 优惠。 - 如果消费金额小于或等于500元,VIP会员享受 9折 优惠。
- 如果消费金额
- 非VIP会员(
is_vip为false)不享受任何折扣。
- VIP会员(
请根据以上规则,完成代码,计算完最终应付金后直接输出即可。
int main() { double amount; bool is_vip; cout << "请输入消费金额和是否为VIP(1是/0否): "; cin >> amount >> is_vip; // 请自行使用合适的分支结构,来根据 消费金额 和 是否为VIP会员 计算总运费(本大题按完成度与步骤给分,请将完整的解题代码写在下方,本题答案不唯一,代码实现能达到题目要求即可) return 0; } - 折扣规则: