Files

258 lines
9.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## **C++ 分支结构综合 练习题**
## **姓名:\_\_\_\_\_\_\_\_\_\_** **成绩:\_\_\_\_\_\_\_\_\_\_**
#### **一、 填空题 (每空 2 分,共 14 分)**
1. 在 `switch` 语句中,如果所有 `case` 标签都未匹配成功,程序将执行 \_\_\_\_\_\_\_\_\_\_\_\_\_ 标签后的代码(如果存在)。
2. 要在一个 `if` 或者 `else` 代码块中执行多条指令,必须使用一对 \_\_\_\_\_\_\_\_\_\_\_\_\_ 将它们包裹起来。
3. 在 `switch(c)` 语句中,变量`c`的类型不能是 `double` 或者 \_\_\_\_\_\_\_\_\_\_\_\_\_ 类型。
4. 要判断一个年份 `year` 是“闰年”(能被4整除但不能被100整除,或者能被400整除),其完整的 C++ 逻辑表达式为 \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
5. 在C++中,用于判断“不等于”的关系运算符是 \_\_\_\_\_\_\_\_\_\_\_\_\_。
6. `if-else if-else` 结构特别适合用于处理多个互斥的条件分支,当其中某一个条件满足后,其余的 \_\_\_\_\_\_\_\_\_\_\_\_\_ 将不会再被判断。
7. 表达式 `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 分)**
请直接在代码下方的横线处写出代码运行后的输出结果(如果程序没有任何输出,则写“无输出”)。
1. **字符与整数运算**
```cpp
int main() {
char c = 'C'; // 'C'的ASCII码是67
c = c + 3;
cout << c << endl;
return 0;
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
2. **多分支逻辑**
```cpp
int main() {
int temperature = -5;
if (temperature > 30) {
cout << "炎热";
} else if (temperature > 15) {
cout << "温暖";
} else if (temperature > 0) {
cout << "寒冷";
} else {
cout << "冰冻";
}
return 0;
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
3. **switch**
```cpp
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;
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
4. **嵌套if**
```cpp
int main() {
bool logged_in = true;
bool is_admin = false;
if (logged_in) {
if (is_admin) {
cout << "欢迎管理员";
} else {
cout << "欢迎普通用户";
}
} else {
cout << "请先登录";
}
return 0;
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
#### **五、 程序填空题(本大题共 30 分)**
1. **题目:成绩等级转换 (共 8 分)**
要求:输入一个整数 `score` 代表成绩。根据以下规则使用 `if-else if-else` 结构输出对应的等级。
* 90 ~ 100分: "A"
* 80 ~ 89分: "B"
* 70 ~ 79分: "C"
* 60 ~ 69分: "D"
* 60分以下: "F"
```cpp
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;
}
```
2. **题目:星期转换器(共 8 分)**
要求:输入一个1-7的整数 `day`,使用 `switch` 语句输出对应的英文星期(1对应"Monday",2对应"Tuesday" ... 7对应"Sunday")。如果输入其他数字,输出"Invalid day"。
```cpp
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;
}
```
3. **题目:商场折扣计算器**
要求:根据顾客的消费金额 `amount` 和他是否为VIP会员 `is_vip` 来计算最终需要支付的金额。
* **折扣规则**:
* VIP会员(`is_vip`为`true`)可以享受折扣。折扣力度取决于消费金额:
* 如果消费金额 `amount` **大于500元**,VIP会员享受 **8折** 优惠。
* 如果消费金额**小于或等于500元**,VIP会员享受 **9折** 优惠。
* 非VIP会员(`is_vip`为`false`)**不享受任何折扣**。
**请根据以上规则,完成代码,计算完最终应付金后直接输出即可。**
```cpp
int main() {
double amount;
bool is_vip;
cout << "请输入消费金额和是否为VIP(1是/0否): ";
cin >> amount >> is_vip;
// 请自行使用合适的分支结构,来根据 消费金额 和 是否为VIP会员 计算总运费(本大题按完成度与步骤给分,请将完整的解题代码写在下方,本题答案不唯一,代码实现能达到题目要求即可)
return 0;
}
```