Initial commit: C++ courseware
This commit is contained in:
commit
4a4ee7c287
1789 files changed
+373489
No files matched your search
@@ -0,0 +1,126 @@
|
||||
### C++ 综合测试卷(七) 参考答案
|
||||
|
||||
**一、 填空题 (每空 2 分,共 16 分)**
|
||||
|
||||
1. `break`
|
||||
2. `else`
|
||||
3. `default`
|
||||
4. `score >= 80 && score < 90`
|
||||
5. `char`、`bool`
|
||||
6. 缩进
|
||||
7. `score >= 60`
|
||||
|
||||
**二、 单项选择题 (每题 2 分,共 20 分)**
|
||||
|
||||
1. B
|
||||
2. C
|
||||
3. B
|
||||
4. C
|
||||
5. B
|
||||
6. B
|
||||
7. A
|
||||
8. C
|
||||
9. B
|
||||
10. D
|
||||
|
||||
**三、 判断题 (每题 2 分,共 20 分)**
|
||||
|
||||
1. ×
|
||||
2. √
|
||||
3. ×
|
||||
4. √
|
||||
5. ×
|
||||
6. √
|
||||
7. √
|
||||
8. ×
|
||||
9. ×
|
||||
10. √
|
||||
|
||||
**四、 代码阅读与分析题 (每题 4 分,共 16 分)**
|
||||
|
||||
1. **3** (过程: `a`被赋值`10.5`后截断为`10` -> `a + 5.5` 的结果`15.5`赋值给`a`后截断为`15` -> `15 % 4` 的结果为`3`)
|
||||
2. **无输出** (65不满足任何`if`/`else if`的条件,且没有`else`块,所以无任何输出)
|
||||
3. **白银 黄金 王者** (从`case 2`开始执行,因没有`break`,发生穿透,一直执行到`switch`结束)
|
||||
4. **潜在VIP客户** (`is_vip`为`false`,执行`else`块;在`else`块内,`money_spent > 100`为`true`,执行嵌套的`if`块)
|
||||
|
||||
**五、 程序填空题 (本大题共 30 分)**
|
||||
|
||||
1. **题目:月份与季节 (共 8 分)**
|
||||
1. `month >= 3 && month <= 5` (或 `month == 3 || month == 4 || month == 5`)
|
||||
2. `month >= 6 && month <= 8` (或 `month == 6 || month == 7 || month == 8`)
|
||||
3. `month >= 9 && month <= 11` (或 `month == 9 || month == 10 || month == 11`)
|
||||
4. `else`
|
||||
|
||||
2. **题目:简易计算器 (共 8 分)**
|
||||
5. `op`
|
||||
6. `break`
|
||||
7. `'*'`
|
||||
8. `default`
|
||||
|
||||
3. **题目:运费计算器 (共 14 分)**
|
||||
*(注意:以下为参考实现,可以使用不同的逻辑结构,只要结果正确即可得分)*
|
||||
|
||||
```cpp
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
double weight;
|
||||
bool is_urgent;
|
||||
cout << "请输入包裹重量(kg) 和 是否加急(1是/0否): ";
|
||||
cin >> weight >> is_urgent;
|
||||
|
||||
double final_cost = 20.0; // 定义基础运费的变量
|
||||
|
||||
// 第一步:判断并累加超重费
|
||||
if (weight > 10) {
|
||||
final_cost = final_cost + 10;
|
||||
}
|
||||
|
||||
// 第二步:判断并累加加急费
|
||||
if (is_urgent == true) {
|
||||
// 嵌套判断,根据是否超重决定加急费金额
|
||||
if (weight > 10) {
|
||||
final_cost = final_cost + 20; // 超重情况的加急费
|
||||
} else {
|
||||
final_cost = final_cost + 5; // 不超重情况的加急费
|
||||
}
|
||||
}
|
||||
|
||||
// 输出运费
|
||||
cout << final_cost;
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
*(其他的正确解法,例如将所有情况分开判断)*
|
||||
|
||||
```cpp
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
double weight;
|
||||
bool is_urgent;
|
||||
cout << "请输入包裹重量(kg) 和 是否加急(1是/0否): ";
|
||||
cin >> weight >> is_urgent;
|
||||
|
||||
double final_cost = 0; // 定义运费的变量
|
||||
|
||||
if (is_urgent == true && weight > 10) { // 情况1:加急且超重
|
||||
final_cost = 20 + 10 + 20;
|
||||
} else if (is_urgent == true && weight <= 10) { // 情况2:加急但不超重
|
||||
final_cost = 20 + 5;
|
||||
} else if (is_urgent == false && weight > 10) { // 情况3:不加急但超重
|
||||
final_cost = 20 + 10;
|
||||
} else { // 情况4:不加急且不超重
|
||||
final_cost = 20;
|
||||
}
|
||||
|
||||
// 输出运费
|
||||
cout << final_cost;
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,252 @@
|
||||
## **C++ 综合测试卷(七)**
|
||||
|
||||
### **姓名:\_\_\_\_\_\_\_\_\_\_** **成绩:\_\_\_\_\_\_\_\_\_\_**
|
||||
|
||||
#### **一、 填空题 (每空 2 分,共 14 分)**
|
||||
|
||||
1. 在 `switch` 语句中,用于结束当前 `case` 并跳出整个 `switch` 结构的关键字是 \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
|
||||
2. 多分支结构 `if ... else if ... else` 中,如果前面的所有条件都不满足,程序最终会执行 \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_块中的代码。
|
||||
3. 在 `switch` 语句中,如果没有任何 `case` 后面的值与变量匹配,系统会默认执行 \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 分支(如果存在的话)。
|
||||
4. 要判断一个学生的分数 `score` 处于 80 到 90 之间(包含 80,但不包含 90),正确的 C++ 逻辑表达式为 \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
|
||||
5. `switch` 语句的括号内,可以放 `int` 类型或 \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_(请填写两种数据类型) 类型的表达式。
|
||||
6. 在 `if` 或 `else` 后面,如果希望控制多于一条的语句,这些语句必须被一对大括号包围起来形成一个整体代码块;同时,为了代码清晰、易于阅读,块内的代码通常需要进行 \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_处理。
|
||||
2. 在逻辑上,条件 `score < 60` 与条件 `!(__________________)` 是等价的。
|
||||
|
||||
#### **二、 单项选择题 (每题 2 分,共 20 分)**
|
||||
|
||||
( ) 1. C++中用于输出数据到屏幕的工具是?
|
||||
A. `cin` B. `cout` C. `if` D. `scanf`
|
||||
|
||||
( ) 2. 如果要根据学生的成绩划分为“优、良、中、差”四个等级并进行不同的输出,最适合的语句结构是?
|
||||
A. 一个单分支 `if` B. 简单的 `if-else` C. `if ... else if ... else` D. 顺序执行结构
|
||||
|
||||
( ) 3. 在 `switch` 语句中,`case` 后面跟的值必须是?
|
||||
A. 变量 B. 常量 C. 浮点数 D. 逻辑表达式
|
||||
|
||||
( ) 4. 如果在一个 `case` 块的末尾漏写了 `break;`,程序会发生什么现象?
|
||||
A. 编译直接报错 B. 程序停止运行 C. 发生“穿透”,继续执行下一个case的代码 D. 自动跳出整个switch
|
||||
|
||||
( ) 5. 如果有定义 `int x = 5;`,表达式 `!(x > 3)` 的计算结果是?
|
||||
A. `true` B. `false` C. 1 D. 5
|
||||
|
||||
( ) 6. 在条件分支语句中,对于需要判断“**对方的身高在大于 `1.6m` 的前提下,再继续判断去判断他是否成年**”的逻辑,最适合的代码结构是?
|
||||
A. 单独的 `if` B. 嵌套的 `if` C. `switch` D. 强制类型转换
|
||||
|
||||
( ) 7. 分析下面的代码,若 `x = 12`,程序会执行哪个分支?
|
||||
`if (x > 10) { ... } else if (x > 5) { ... } else { ... }`
|
||||
A. 仅执行 `x > 10` 的分支 B. 仅执行 `x > 5` 的分支
|
||||
C. 两个 `if` 都会被执行 D. 执行 `else` 分支
|
||||
|
||||
( ) 8. 下列变量名在C++中合法的是?
|
||||
A. `1st_place` B. `my name` C. `_age` D. `switch`
|
||||
|
||||
( ) 9. 表达式 `15 % 4` 和 `15 / 4` 的结果分别是?
|
||||
A. 3.75 和 3 B. 3 和 3 C. 3 和 3.75 D. 4 和 3
|
||||
|
||||
( ) 10. 判断一个数 `num` 是偶数,正确的 C++ 表达式是?
|
||||
A. `num % 2 == 1` B. `num / 2 == 0` C. `num % 2 != 0` D. `num % 2 == 0`
|
||||
|
||||
|
||||
#### **三、 判断题 (每题 2 分,共 20 分,对的打“√”,错的打“×”)**
|
||||
|
||||
( ) 1. 在 `if ... else if ... else` 结构中,有可能出现两个分支的代码同时被执行的情况。
|
||||
( ) 2. `switch` 语句只能用于判断整数类型或字符类型,不能用于判断小数。
|
||||
( ) 3. 在 `switch` 语句中,`default` 分支是必须要写的,不写会导致编译报错。
|
||||
( ) 4. 嵌套 `if` 也就是在 `if` 或 `else` 的大括号代码块内部,再写一层 `if` 语句。
|
||||
( ) 5. 表达式 `10 < x < 20` 在C++中是完全合法的,并且能准确判断 `x` 是否在10到20之间。
|
||||
( ) 6. `break` 语句可以用来跳出 `switch` 分支结构。
|
||||
( ) 7. 在 `if` 语句后面如果不加大括号 `{}`,那么它只能控制紧跟在它后面的一行代码。
|
||||
( ) 8. 表达式 `true && false` 的结果是 `true`。
|
||||
( ) 9. 如果要判断两个变量 `a` 和 `b` 是否相等,在 `if` 中应该写成 `if (a = b)`。
|
||||
( ) 10. 逻辑运算符 `||` 表示“或者”,只要其左右两边的条件有一个为真,整个表达式的结果就是真。
|
||||
|
||||
|
||||
#### **四、 代码阅读与分析题 (每题 4 分,共 16 分)**
|
||||
请直接在代码下方的横线处写出代码运行后的输出结果(如果程序没有任何输出,则写“无输出”)。
|
||||
|
||||
1. **整型赋值与运算**
|
||||
```cpp
|
||||
int main() {
|
||||
int a = 10.5;
|
||||
a = a + 5.5;
|
||||
a = a % 4;
|
||||
cout << a << endl;
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
2. **多分支**
|
||||
```cpp
|
||||
int main() {
|
||||
int score = 65;
|
||||
if (score >= 90) {
|
||||
cout << "A";
|
||||
} else if (score >= 80) {
|
||||
cout << "B";
|
||||
} else if (score >= 70) {
|
||||
cout << "C";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
3. **switch语句**
|
||||
|
||||
```cpp
|
||||
int main() {
|
||||
int level = 2;
|
||||
switch (level) {
|
||||
case 1: cout << "青铜 ";
|
||||
case 2: cout << "白银 ";
|
||||
case 3: cout << "黄金 ";
|
||||
default: cout << "王者 ";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
4. **嵌套if结构**
|
||||
|
||||
```cpp
|
||||
int main() {
|
||||
bool is_vip = false;
|
||||
int money_spent = 120;
|
||||
if (is_vip) {
|
||||
cout << "VIP客户";
|
||||
} else {
|
||||
if (money_spent > 100) {
|
||||
cout << "潜在VIP客户";
|
||||
} else {
|
||||
cout << "普通客户";
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
|
||||
#### **五、 程序填空题 (本大题共 30 分)**
|
||||
|
||||
1. **题目:月份与季节 (共 8 分)**
|
||||
要求:输入一个表示月份的整数 `month`。
|
||||
如果是 3、4、5,输出 "Spring";如果是 6、7、8,输出 "Summer";如果是 9、10、11,输出 "Autumn";
|
||||
其他情况,输出 "Winter"。
|
||||
(请使用 `if ... else if ... else` 结构补全代码)
|
||||
|
||||
```cpp
|
||||
int main() {
|
||||
int month;
|
||||
cout << "请输入月份(1-12): ";
|
||||
cin >> month;
|
||||
|
||||
// 1. 判断春季 (3, 4, 5)
|
||||
if (__________________________________________________) {
|
||||
cout << "Spring" << endl;
|
||||
}
|
||||
// 2. 判断夏季 (6, 7, 8)
|
||||
else if (__________________________________________________) {
|
||||
cout << "Summer" << endl;
|
||||
}
|
||||
// 3. 判断秋季 (9, 10, 11)
|
||||
else if (__________________________________________________) {
|
||||
cout << "Autumn" << endl;
|
||||
}
|
||||
// 4. 其他情况都是冬季
|
||||
________________ {
|
||||
cout << "Winter" << endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
2. **题目:简易计算器 (共 8 分)**
|
||||
要求:输入两个整数和一个字符(代表运算符 `+`, `-`, `*`),使用 `switch` 语句计算结果并输出。
|
||||
|
||||
```cpp
|
||||
int main() {
|
||||
int num1, num2;
|
||||
char op;
|
||||
cout << "请输入 数字1 运算符 数字2 (如 5 + 3): ";
|
||||
cin >> num1 >> op >> num2;
|
||||
|
||||
// 5. switch 括号中需要判断什么?
|
||||
switch (________________) {
|
||||
case '+':
|
||||
cout << num1 + num2;
|
||||
// 6. 此处需要填写什么?
|
||||
________________;
|
||||
case '-':
|
||||
cout << num1 - num2;
|
||||
break;
|
||||
// 7. 处理乘法的情况
|
||||
case ________________:
|
||||
cout << num1 * num2;
|
||||
break;
|
||||
// 8. 当输入的运算符都不是以上三种时
|
||||
________________:
|
||||
cout << "无效的运算符";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
3. **题目:运费计算器 (共 14 分)**
|
||||
要求:根据包裹的重量 `weight` 和是否加急 `is_urgent` 计算总运费。
|
||||
|
||||
- **基础运费(不管怎么样都要收取)**:20元。
|
||||
- **超重费**:如果重量 `weight` **大于10kg**,额外加收10元。
|
||||
- **加急费**:
|
||||
- 如果选择加急(`is_urgent` 为 `true`),需要额外收费。
|
||||
- 并且这笔加急费的金额是**动态的**:如果包裹本身超重(`weight` > 10kg),则加急费为20元;如果不超重,则加急费为5元。
|
||||
|
||||
**请根据以上规则,完成代码,计算完最终运费后直接输出即可。**
|
||||
|
||||
**【计算样例】**
|
||||
|
||||
* **例1:重量30kg,需要加急。**
|
||||
运费 = 20 (基础) + 10 (超重费) + 20 (超重情况的加急费) = **50元**。
|
||||
* **例2:重量5kg,需要加急。**
|
||||
运费 = 20 (基础) + 0 (未超重) + 5 (不超重情况的加急费) = **25元**。
|
||||
* **例3:重量15kg,不加急。**
|
||||
运费 = 20 (基础) + 10 (超重费) + 0 (不加急) = **30元**。
|
||||
* **例4:重量8kg,不加急。**
|
||||
运费 = 20 (基础) + 0 (未超重) + 0 (不加急) = **20元**。
|
||||
|
||||
```cpp
|
||||
int main() {
|
||||
double weight;
|
||||
bool is_urgent;
|
||||
cout << "请输入包裹重量(kg) 和 是否加急(1是/0否): ";
|
||||
cin >> weight >> is_urgent;
|
||||
// 请自行使用合适的分支结构,来根据包裹的重量 weight 和是否加急 is_urgent 计算总运费(本大题按完成度与步骤给分,请将完整的解题写在下方,本题答案不唯一,代码实现能达到题目要求即可)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
Binary file not shown.
Reference in new issue
Block a user