258 lines
9.5 KiB
Markdown
258 lines
9.5 KiB
Markdown
## **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;
|
||
}
|
||
``` |