Initial commit: C++ courseware
This commit is contained in:
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;
|
||||
}
|
||||
```
|
||||
Binary file not shown.
Reference in new issue
Block a user