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,70 @@
### C++ 综合测试卷(八) 参考答案
#### **一、 填空题 (每空 2 分,共 14 分)**
1. `double money = 50.5;`
2. `printf`
3. `\n`
4. `1`
5. `x > 5 && x < 10`
6. `(int)x` (或 `int(x)`)
7. `if`
#### **二、 单项选择题 (每题 2 分,共 20 分)**
1. **C** (变量名只能包含字母、数字和下划线,且不能以数字开头。A错在数字开头,B是关键字,D包含减号)
2. **C** (逻辑非 `!` 属于单目运算符,优先级最高)
3. **C** (整数相除结果取整 `7/2=3`,有浮点数参与运算结果为浮点数 `7.0/2=3.5`)
4. **A**
5. **C** (`'A'` 的 ASCII 码强转为 int 后输出 65)
6. **B** (`x += 6` 等同于 `x = x + 6`,即 5 + 6 = 11)
7. **D**
8. **C**
9. **A** (`&&` 具有短路特性,因为 `x > 10` 为假,右侧的 `x++` 根本不会被执行,`x` 的值依然为 5)
10. **B** (任何变量自身不可能不等于自身)
#### **三、 判断题 (每题 2 分,共 20 分)**
1. **√**
2. **√**
3. **×** (`if` 可以单独存在,不需要强行搭配 `else`)
4. **√**
5. **×** (`switch` 的 `case` 后面只能是整型或字符型常量表达式,不能是浮点数)
6. **√** (连续赋值在C++中是合法的,从右向左执行)
7. **×** (`!true` 结果为假,`false || false` 的结果仍为 `false`)
8. **×** (字符 `'1'` 在内存中存储的是其 ASCII 码 49,而整数 `1` 存储的是数值 1)
9. **√**
10. **×** (在 `printf` 中,保留5位小数应该用 `%.5f`,而 `%5f` 表示的是总宽度为5)
#### **四、 代码阅读与分析题 (每题 4 分,共 16 分)**
1. **`2,2.5`**
2. **`E`** (解析:'b'的ASCII码为98,98 - 32 + 3 = 69,69对应的字符是大写字母 'E')
3. **`B`**
4. **`ThreeZero`** (解析:case 3 匹配成功输出 Three,但由于没有写 break,引发了 switch 穿透效应,继续执行 default 输出了 Zero)
#### **五、 程序填空题 (本大题共 30 分)**
**第1题 (8分)**
1. `cstdio`
2. `const double PI = 3.14159;`
3. `printf("%.2f", area)` (或者 `printf("%.2f\n", area)`)
**第2题 (8分)**
1. `switch`
2. `break`
3. `default`
**第3题 (14分)**
*(参考代码实现,逻辑正确即可满分。分支结构完整得6分,条件判断和计算逻辑正确得6分,格式化输出正确得2分)*
```cpp
// 1. 判断并计算总费用
if (distance <= 0) {
cost = 0; // 容错处理
} else if (distance <= 3.0) {
cost = 10.0;
} else {
cost = 10.0 + (distance - 3.0) * 2.5;
}
// 2. 格式化输出最终费用 (保留1位小数)
cout << "总费用为:" << fixed << setprecision(1) << cost << "元" << endl;
// 若使用 printf 则写: printf("总费用为:%.1f元\n", cost);
```
@@ -0,0 +1,210 @@
## **C++ 综合测试卷(八)**
### **姓名:\_\_\_\_\_\_\_\_\_\_** **成绩:\_\_\_\_\_\_\_\_\_\_**
#### **一、 填空题 (每空 2 分,共 14 分)**
1. 在C++中,声明浮点类型的变量 `money` 并将其初始化为 `50.5` 的格式是 \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
2. 要保留浮点数两位小数输出,需使用\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_工具来进行输出 。
3. C++中表示“换行”的转义字符是 \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
4. 表达式 `10 % 3` 的运算结果是\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
5. 数学上的不等式 $5 < x < 10$,在C++中应写成合法的逻辑表达式:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
6. 强制将浮点数变量 `x` 转换为整数类型的语法结构是\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
7. 在条件分支语句中,`else` 总是与它上方且离它最近的未配对的 \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_ 语句结合。
#### **二、 单项选择题 (每题 2 分,共 20 分)**
( ) 1. 以下哪个是C++中合法的变量名?
A. `2ndNumber` B. `int` C. `_score` D. `my-name`
( ) 2. 下列运算符中,优先级最高的是?
A. `&&` B. `||` C. `!` D. `==`
( ) 3. 表达式 `7 / 2` 和 `7.0 / 2` 的结果分别是?
A. 3.5 和 3.5 B. 3 和 3.5 C. 3 和 3 D. 3.5 和 3
( ) 4. 以下哪个语句可以正确地从键盘读取两个整数分别给变量 `a` 和 `b`?
A. `cin >> a >> b;` B. `cin << a << b;` C. `cin >> a, b;` D. `scanf >> a >> b;`
( ) 5. 如果有定义 `char c = 'A';`,执行 `cout << (int)c;` 会输出?(注:'A'的ASCII码为65)
A. A B. a C. 65 D. 97
( ) 6. 执行下面代码段后,`x` 的值是? `int x = 5; x += 3 * 2;`
A. 16 B. 11 C. 10 D. 30
( ) 7. `switch` 语句中用于结束当前 `case` 并跳出整个 `switch` 结构的关键字是?
A. `continue` B. `stop` C. `return` D. `break`
( ) 8. 判断变量 `a` 和 `b` 是否不相等的正确写法是?
A. `if (a =! b)` B. `if (a == b)` C. `if (a != b)` D. `if (a <> b)`
( ) 9. 如果 `x = 5`,那么逻辑表达式 `x > 10 && x++ > 0` 执行完毕后,`x` 的值是?
A. 5 B. 6 C. 0 D. 1
( ) 10. 下面哪个逻辑表达式的值永远为 `false`?
A. `a == a` B. `a != a` C. `a >= a` D. `a <= a`
#### **三、 判断题 (每题 2 分,共 20 分,对的打“√”,错的打“×”)**
( ) 1. 常量一旦被初始化,在程序的运行过程中其值就不能再被改变。
( ) 2. `cin` 输入字符串或数字时,会自动跳过前导的空格和换行符。
( ) 3. `if` 语句后面必须跟 `else` 语句才能构成完整的语法。
( ) 4. 逻辑与运算符 `&&` 具有短路特性:如果左侧条件为 `false`,则不再计算右侧条件。
( ) 5. `switch` 的 `case` 后面可以跟浮点数,例如 `case 3.14:`。
( ) 6. 赋值语句 `a = b = 5;` 在C++中是合法的,执行后a和b的值都是5。
( ) 7. 表达式 `!true || false` 的计算结果为 `true`。
( ) 8. 字符 `'1'` 和整数 `1` 在计算机内存中的存储的值是完全相同的。
( ) 9. 如果 `x = 3`,那么表达式 `x > 2 && x < 5` 的结果为 `true`。
( ) 10. 使用 `printf` 进行格式化输出时,格式说明符 `%5f` 可以用于保留 `5` 位小数。
#### **四、 代码阅读与分析题 (每题 4 分,共 16 分)**
请直接在代码下方的横线处写出代码运行后的输出结果(如果程序没有任何输出,则写“无输出”)。
1. **算术运算与类型转换**
```cpp
int main() {
int a = 10;
double b = 4.0;
cout << a / 4 << "," << a / b;
return 0;
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
2. **字符与转义符**
```cpp
int main() {
char c = 'b'; // 提示:b 的 ASCII码为98,小写字母比对应大写字母的ASCII码大32
c = c - 32 + 3;
cout << c;
return 0;
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
3. **条件嵌套语句**
```cpp
int main() {
int x = 5, y = 10;
if (x > 0) {
if (y < 5) {
cout << "A";
} else {
cout << "B";
}
} else {
cout << "C";
}
return 0;
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
4. **switch 语句**
```cpp
int main() {
int n = 3;
switch(n) {
case 1: cout << "One";
case 2: cout << "Two";
case 3: cout << "Three";
default: cout << "Zero";
}
return 0;
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
#### **五、 程序填空题 (本大题共 30 分)**
1. **题目:圆的面积计算与格式化输出 (共 8 分)**
要求:输入圆的半径 `r`,计算并输出圆的面积,结果保留2位小数。(提示:面积 = π * r * r,π取3.14159)
```cpp
#include <iostream>
// 1. 引入使用 printf/scanf 所需要的头文件
#include <________________>
using namespace std;
int main() {
// 2. 定义双精度浮点型常量 PI
________________________________________________
double r, area;
cin >> r;
area = PI * r * r;
// 3. 格式化输出圆的面积,要求保留2位小数
________________________________________________;
return 0;
}
```
2. **题目:简易计算器 (共 8 分)**
要求:输入两个浮点数和一个字符类型的四则运算符(`+`, `-`, `*`, `/`),根据运算符输出结果。若除数为0或输入了无效运算符,输出对应提示。
```cpp
int main() {
double num1, num2;
char op;
cout << "请输入数字1、操作符、数字2:";
cin >> num1 >> op >> num2;
// 1. 填入适当的关键字进行多分支选择
________________ (op) {
case '+':
cout << num1 + num2;
// 2. 填一个关键字
________________;
case '-':
cout << num1 - num2;
break;
case '*':
cout << num1 * num2;
break;
case '/':
if (num2 != 0) cout << num1 / num2;
else cout << "除数不能为0";
break;
// 3. 处理其他无效运算符的情况
________________:
cout << "无效的运算符";
}
return 0;
}
```
3. **题目:出租车计费系统 (共 14 分)**
要求:根据乘客行驶的公里数 `distance`(可能包含小数)计算打车费用。
* **计费规则**:
* 起步价:3公里以内(包含3公里),收费 **10元**。
* 超出部分:超出3公里的部分,每公里收费 **2.5元**。
* 例如:行驶 5 公里,费用为 10 + (5 - 3) * 2.5 = 15 元。
**请根据规则完成代码,注意判断逻辑,最终的结果要求保留1位小数后输出。**(本题答案不唯一,代码实现能达到题目要求即可)
```cpp
int main() {
double distance;
cout << "请输入行驶里程(公里):";
cin >> distance;
// 请自行使用合适的分支结构计算最终的打车费用并保留1位小数后进行输出
return 0;
}
```