Initial commit: C++ courseware

This commit is contained in:
xiaolinquan committed 2026-11-05 22:51:02 +08:00
commit 4a4ee7c287
1789 files changed
+373489

No files matched your search

@@ -0,0 +1,258 @@
## **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;
}
```