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,51 @@
### 阶段测试题目1 参考答案与评分标准
**第一部分(12分)**
1. A, B, C, B, B (每空2分)
2. A (2分)
**第二部分(14分)**
3. (每项2分:找出错误1分,原因1分)
* `3rd_place`: 数字开头 `money$`: 含特殊符号 `double`: 关键字
4. (每题2分,少分号扣1分)
* `int age = 10;` `char grade = 'B';` `double pi = 3.14;` `int a, b;`
**第三部分(16分)**
5. (每空2.5分)
* 2 2.5 2 2
6. (每空2分)
* 15 30 0
**第四部分(12分)**
7. (每空2分)
`>>` `cin` `*` `<<`
8. (4分,全对才得分)
* 4, 1, 3, 2 (正确顺序:声明 -> 提示 -> 输入 -> 计算输出)
**第五部分(5分)**
9. 正确的选项:D (2分)
* 错误分析 (3分): A: 应用单引号包裹 B: int 存小数会丢失精度(或逻辑错误) C: endl 前箭头反了/字符串后箭头反了
**第六部分(20分)**
10. (每空2分)
* `#include <iostream>` `using namespace std;` `int main()` `return 0;`
11. (每题4分)
* `double weight;` `cin >> weight;` `cout << weight;`
**第七部分(9分)**
12. `cout` 用 `<<`,`cin` 用 `>>` (3分)
13. 换行 (3分)
14. 不参与运行。为了解释代码,方便人阅读。(3分)
**第八部分(12分)**
15. (每空3分)
* `3.14` `>> r` (只写 `>>` 扣1分) `pi * r * r` (写 `3.14 * r * r` 也算对) `area`
@@ -0,0 +1,219 @@
# C++ 编程阶段测试卷 1
​ **姓名:_____________________________________ 得分: **
## 第一部分:数据类型(共 12 分)
**Q1. 连线填空(每空 2 分,共 10 分)**
请把左边的**现实生活数据**与右边最合适的**C++变量类型**进行匹配,填写 A、B 或 C。
1. 班级的人数 ---> ( )
2. 超市里一斤半苹果的价格 ---> ( )
3. 一个空格 ---> ( )
4. 今天的气温 ---> ( )
5. 圆周率 ---> ( )
* **选项**:
* A. `int` B. `double` C. `char`
**Q2. 单项选择(2 分)**
在 C++ 中, 如果想要输出一句话(例如:你好),那么必须用什么符号包裹起来? ( )
* A. 双引号 `"` B. 单引号 `'` C. 不需要符号 D. 括号 `()`
---
## 第二部分:变量命名与声明(共 14 分)
**Q3. 找错题(每处 2 分,共 6 分)**
下列变量名中,有 **3个** 是错误的,请将错误的变量名写在横线上并说明原因。
`apple_count` / `3rd_place` / `money$` / `myHeight` / `double` / `score_math`
* 错误1:\_\_\_\_\_\__\_\___\_\_(原因:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_)
* 错误2:\_\_\_\_\_\__\_\___\_\_(原因:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_)
* 错误3:\_\_\_\_\_\__\_\___\_\_(原因:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_)
**Q4. 代码填空(每题 2 分,共 8 分)**
请根据注释的要求,在下划线位置写出**完整**的一行变量定义的代码。
```cpp
// 1. 定义一个整数变量 age,并赋值为 10
____________________
// 2. 定义一个字符变量 grade,赋值为 B
____________________
// 3. 定义一个小数变量 pi,赋值为 3.14
____________________
// 4. 定义两个整数变量 a 和 b (不赋值)
____________________
```
---
## 第三部分:预测输出(共 16 分)
**Q5. 计算结果预测(每空 2.5 分,共 10 分)**
请写出下列代码执行后的输出结果。
* **代码 A**
```cpp
int a = 5;
int b = 2;
cout << a / b << endl;
```
**输出:**\_\_\_\_\_\_\_\_\_\_
* **代码 B**
```cpp
double a = 5;
int b = 2;
cout << a / b << endl;
```
**输出:** \_\_\_\_\_\_\_\_\_\_
* **代码 C**
```cpp
int a = 10;
cout << a / 4 << endl;
cout << a % 4 << endl;
```
**输出:**\_\_\_\_\_\_\_\_\_\_ 和 \_\_\_\_\_\_\_\_\_\_
**Q6. 变量追踪(每空 2 分,共 6 分)**
写出下列代码每一部分执行完那一刻,`box` 的值是多少。
```cpp
int box = 10;
box = box + 5; // 1. 此时 box 是多少?
box = box * 2; // 2. 此时 box 是多少?
box = 0; // 3. 此时 box 是多少?
cout << box << endl;
```
**结果:** 1. \_\_\_\_\_\_\_\_\_\_ 2. \_\_\_\_\_\_\_\_\_\_ 3. \_\_\_\_\_\_\_\_\_\_
---
## 第四部分:填空与排序(共 12 分)
**Q7. 程序补全(每空 2 分,共 8 分)**
这是一个计算长方形面积的程序,请在下划线位置补全代码。
```cpp
int main() {
double width;
double height;
cout << "请输入长方形的宽:";
cin ____ width;
cout << "请输入长方形的高:";
____ >> height;
// 计算面积公式
double area = width ____ height;
cout << "面积是:" ____ area << endl;
return 0;
}
```
**Q8. 代码排序(4 分)**
假设用户想输入两个数字计算和。请给下列代码行排序(在括号里按顺序填 1, 2, 3, 4)。
( ) `cout << "两个数的和是:" << a + b << endl;`
( ) `int a, b;`
( ) `cin >> a >> b;`
( ) `cout << "请输入两个整数:";`
---
## 第五部分:找问题(共 5 分)
**Q9. 分辨正确与错误的代码(可能有多个正确/错误选项)**
A. `char c = H;` B. `int x = 3.14;`
C. `cout << "Hello" >> endl;` D. `double price = 10.5;`
* **正确的是**(2分): __\_\_\_\_\_\_\_\_\_\___
* **错误分析**(3分):请任选一个错误的选项,说明它错在哪里。
选项 \_\_\_\_\_\_\_\_\_\_错误,原因是:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
---
## 第六部分:代码默写(共 20 分)
**Q10. 默写 C++ 程序骨架(每空 2 分,共 8 分)**
请在下方的横杠处默写出一个最简单的 C++ 程序框架。
```cpp
// 1. 引入头文件 (工具箱)
__________________________
// 2. 使用标准命名空间
__________________________
// 3. 主函数 (程序的入口)
__________________________ {
// (需要完成的代码逻辑写在这里,此处略)
// 4. 程序结束返回值
______________
}
```
**Q11. 翻译代码(每题 4 分,共 12 分)**
**场景**:我们需要记录一位同学的体重(小数),请根据题意将自然语言翻译为合适的代码。
1. **定义变量**:声明一个名为 `weight` 的小数类型变量。
代码:________________________________________________________________________
2. **输入**:从键盘读取数据存入 `weight`。
代码:________________________________________________________________________
3. **输出**:在屏幕上打印出这个变量的值。
代码:________________________________________________________________________
---
## 第七部分:简答题(共 9 分)
**Q12. 箭头的方向(3 分)**
`cout` 后面应该用什么符号?`cin` 后面应该用什么符号?
* 答:_____________________________________________________________________________________________________
**Q13. `endl` 的作用(3 分)**
`cout << ... << endl;` 中的 `endl` 有什么作用?
* 答:_____________________________________________________________________________________________________
**Q14. 注释的作用(3 分)**
注释会参与程序的运行吗?为什么我们要写注释?
* 答:_____________________________________________________________________________________________________
---
## 第八部分:综合题(共 12 分)
**Q15. 将数学公式翻译成代码(每空 3 分,共 12 分)**
**场景**:手动输入半径(取3.14),计算圆的面积,并在下方的横杠处填写正确的代码。
已知圆的面积公式:$area(面积) = \pi(3.14) \times r(半径) \times r(半径)$
```cpp
// 省略头文件
int main() {
double pi = _______;
double r;
double area;
cout << "请输入圆的半径:";
___________;
area = ______________________________;
cout << "面积是:" << _______;
return 0;
}
```
@@ -0,0 +1,217 @@
# **C++ 综合测试卷(二) - 答案**
**一、单项选择题(每题 2 分,共 30 分)**
1. 在基本程序结构中,其中第二行的代码是什么?( **D** )
A. `#include <iosream>`
B. `use namespace std; `
C. `using name std;`
D. `using namespace std;`
2. 下列关于程序中 `int main()` 函数的说法,正确的是:( **B** )
A. 一个程序可以有多个 `int main()`
B. 程序执行时,总是从 `int main()` 开始
C. `int main()` 必须放在程序的第一行
D. `int main()` 不写后面的 `()` 也可以
3. 若要使用 `cout` 进行输出,下列语句中**漏掉**的部分是:( **B** )
`cout << "Hello World" _____ endl;`
A. `>>`
B. `<<`
C. `,`
D. `;`
4. 下列变量名的标识符中,**不合法**的是:( **C** )
A. `student_name`
B. `_temp`
C. `3days`
D. `INT`
5. 在 C++ 中,`char` 字符和 `int` 整数之间可以进行运算或相互赋值,它们是通过下列哪一项来实现一一对应关系的?( **A** )
A. ASCII码
B. 内存地址
C. 机器码
D. 转义字符
6. 表达式 `7 / 2` 的值是:( **B** )
A. 3.5
B. 3
C. 4
D. 1
7. 表达式 `7 % 2` 的值是:( **D** )
A. 3.5
B. 3
C. 4
D. 1
8. 若有定义 `int a = 10;`,执行 `a = a + 5.5;` 后,`a` 的值是:( **B** )
A. 10
B. 15
C. 15.5
D. 16
9. 下列哪个转义字符表示“双引号”本身?( **B** )
A. `\'`
B. `\"`
C. `\?`
D. `\\`
10. 字符 `'A'` 的 ASCII 码是 65,则字符 `'C'` 的 ASCII 码是:( **C** )
A. 63
B. 66
C. 67
D. 97
11. 关于注释,下列说法**错误**的是:( **D** )
A. 编译器会忽略注释内容,不将其编译为机器码
B. `//` 用于单行注释
C. `/*` 和 `*/` 必须成对出现
D. 注释会增加生成的可执行文件的大小
12. 下列代码中,`input` 变量最终的值是:( **B** )
`int input; cin >> input;` (假设用户在键盘输入了 `3.14` 并按下了回车)
A. 3.14
B. 3
C. 0
D. 程序报错
13. 如果想要交换两个已经存入了数据的整型变量 `a` 和 `b` 的值,必须借助:( **C** )
A. `cin`
B. `cout`
C. 第三个变量
D. `main` 函数
14. `(int)3.99 + (int)2.99` 的结果是:( **D** )
A. 7
B. 6
C. 6.98
D. 5
15. 若 `int n = 123;`,则表达式 `n % 100` 的结果是:( **D** )
A. 1
B. 3
C. 12
D. 23
---
**二、判断题(每题 1 分,共 10 分,对的打√,错的打×)**
1. C++ 语言是区分大小写的,`Main` 和 `main` 是两个不同的名字。 ( **√** )
2. `double` 类型的变量可以精确存储任意小数。 ( **×** )
3. 变量定义 `int a = 10, b = 10;` 是合法的。 ( **√** )
4. `cout << "3 + 2";` 这行代码会在屏幕上输出 `5`。 ( **×** )
5. `cin` 输入数据时,默认使用空格、回车作为分隔符。 ( **√** )
6. 所有的变量在使用之前都必须先定义。 ( **√** )
7. 表达式 `5 / 0` 的结果是 0。 ( **×** )
8. 字符使用单引号 `' '`,字符串使用双引号 `" "`。 ( **√** )
9. `\t` 和 `endl` 都可以用来换行。 ( **×** )
10. 只有 `int` 类型的变量才能进行强制类型转换,其他类型不可以。 ( **×** )
---
**三、基础填空题(每题 4 分,共 20 分)**
1. 在 C++ 中,定义整数变量,使用 **int** 表示;定义小数变量,使用 **double** (或 float) 表示。
2. 若 `int x = 5;`,则 `cout << x * x;` 的输出结果是 **25**。
3. 假设 `char c = '0';` (ASCII码为48),那么表达式 `(int)c + 2` 的值是 **50**,若强制转换为字符 `(char)(c + 2)`,则对应的字符是 **'2'**。
4. 想要定义一个**小数**变量,变量名字为: `radius` 并初始化为 1.5,语句是:**double radius = 1.5;**。
5. 表达式 `1234 / 1000` 的结果是 **1**,这个运算常用来获取四位数的 **千** 位数字。
---
**四、代码阅读与分析题(每题 5 分,共 20 分)**
**请直接写出代码运行后的输出结果。**
1. **类型转换与算术**
```cpp
int a = 7;
int b = 2;
double ans = a / b;
cout << ans << endl;
```
**输出结果:** **3**
2. **数位运算**
```cpp
int n = 456;
int y = n / 10 % 10;
int z = n / 100;
cout << y * 2 + z * 4 << endl;
```
**输出结果:** **26**
3. **字符与转义**
```cpp
cout << "小明说\:\"我喜欢学习\"";
```
**输出结果:** **小明说:"我喜欢学习"**
4. **整数除法**
```cpp
int total = 100;
int part = 30;
double percentage = (part / total) * 100;
cout << percentage << endl;
```
**输出结果:** **0**
---
**五、程序填空题(每空 4 分,共 20 分)**
**1. 题目:数字反转**
**要求:** 输入一个三位整数(例如 386),将其个位、十位、百位分离出来,并按“个位 十位 百位”的顺序输出(例如输出 `6 8 3`)。请在横线上填入正确的代码。
```cpp
int main() {
int num;
cout << "请输入一个三位数: ";
cin >> num;
// 1. 获取个位数字
int ones = num % 10;
// 2. 获取十位数字
int tens = num / 10 % 10;
// 3. 获取百位数字
int hundreds = num / 100;
// 4. 输出结果
cout << ones << " " << tens << " " << hundreds << endl;
return 0;
}
```
**2. 题目:华氏温度转摄氏温度**
**要求:** 输入一个华氏温度 $F$,根据公式 $C = \frac{5}{9} \times (F - 32)$ 计算摄氏温度 $C$。(在公式中 $F$ 代表的是华氏温度,$C$ 代表的是摄氏温度),请填空完成程序。
```cpp
int main() {
double F; // 用来储存输入的华氏温度
cout << "请输入华氏温度: ";
// 请在下方填空,用于输入华氏温度
cin >> F;
// 请在下方填空,根据题干的公式,计算摄氏温度,且公式逻辑正确
// 注意:必须使用 5.0 / 9 或 5.0 / 9.0,避免整数除法
double C = 5.0 / 9 * (F - 32);
cout << "对应的摄氏温度是: " << C << endl;
return 0;
}
```
@@ -0,0 +1,214 @@
* # **C++ 综合测试卷(二)**
## **姓名:_\_\_\_\_\_\_\_\_\_ ** **成绩:_\_\_\_\_\_\_\_\_\_**
**一、单项选择题(每题 2 分,共 30 分)**
1. 在基本程序结构中,其中第二行的代码是什么?( )
A. `#include <iosream>`
B. `use namespace std; `
C. `using name std;`
D. `using namespace std;`
2. 下列关于程序中 `int main()` 函数的说法,正确的是:( )
A. 一个程序可以有多个 `int main()`
B. 程序执行时,总是从 `int main()` 开始
C. `int main()` 必须放在程序的第一行
D. `int main()` 不写后面的 `()` 也可以
3. 若要使用 `cout` 进行输出,下列语句中**漏掉**的部分是:( )
`cout << "Hello World" _____ endl;`
A. `>>`
B. `<<`
C. `,`
D. `;`
4. 下列变量名的标识符中,**不合法**的是:( )
A. `student_name`
B. `_temp`
C. `3days`
D. `INT`
5. 在 C++ 中,`char` 字符和 `int` 整数之间可以进行运算或相互赋值,它们是通过下列哪一项来实现一一对应关系的?( )
A. ASCII码
B. 内存地址
C. 机器码
D. 转义字符
6. 表达式 `7 / 2` 的值是:( )
A. 3.5
B. 3
C. 4
D. 1
7. 表达式 `7 % 2` 的值是:( )
A. 3.5
B. 3
C. 4
D. 1
8. 若有定义 `int a = 10;`,执行 `a = a + 5.5;` 后,`a` 的值是:( )
A. 10
B. 15
C. 15.5
D. 16
9. 下列哪个转义字符表示“双引号”本身?( )
A. `\'`
B. `\"`
C. `\?`
D. `\\`
10. 字符 `'A'` 的 ASCII 码是 65,则字符 `'C'` 的 ASCII 码是:( )
A. 63
B. 66
C. 67
D. 97
11. 关于注释,下列说法**错误**的是:( )
A. 编译器会忽略注释内容,不将其编译为机器码
B. `//` 用于单行注释
C. `/*` 和 `*/` 必须成对出现
D. 注释会增加生成的可执行文件的大小
12. 下列代码中,`input` 变量最终的值是:( )
`int input; cin >> input;` (假设用户在键盘输入了 `3.14` 并按下了回车)
A. 3.14
B. 3
C. 0
D. 程序报错
13. 如果想要交换两个已经存入了数据的整型变量 `a` 和 `b` 的值,必须借助:( )
A. `cin`
B. `cout`
C. 第三个变量
D. `main` 函数
14. `(int)3.99 + (int)2.99` 的结果是:( )
A. 7
B. 6
C. 6.98
D. 5
15. 若 `int n = 123;`,则表达式 `n % 100` 的结果是:( )
A. 1
B. 3
C. 12
D. 23
---
**二、判断题(每题 1 分,共 10 分,对的打√,错的打×)**
1. C++ 语言是区分大小写的,`Main` 和 `main` 是两个不同的名字。 ( )
2. `double` 类型的变量可以精确存储任意小数。 ( )
3. 变量定义 `int a = 10, b = 10;` 是合法的。 ( )
4. `cout << "3 + 2";` 这行代码会在屏幕上输出 `5`。 ( )
5. `cin` 输入数据时,默认使用空格、回车作为分隔符。 ( )
6. 所有的变量在使用之前都必须先定义。 ( )
7. 表达式 `5 / 0` 的结果是 0。 ( )
8. 字符使用单引号 `' '`,字符串使用双引号 `" "`。 ( )
9. `\t` 和 `endl` 都可以用来换行。 ( )
10. 只有 `int` 类型的变量才能进行强制类型转换,其他类型不可以。 ( )
---
**三、基础填空题(每题 4 分,共 20 分)**
1. 在 C++ 中,定义整数变量,使用 \_\_\_\_\_\_\_\_\_\_(填一种数据类型) 表示;定义小数变量,使用 \_\_\_\_\_\_\_\_\_\_(填一种数据类型) 表示。
2. 若 `int x = 5;`,则 `cout << x * x;` 的输出结果是 \_\_\_\_\_\_\_\_\_\_。
3. 假设 `char c = '0';` (ASCII码为48),那么表达式 `(int)c + 2` 的值是 \_\_\_\_\_\_\_\_\_\_,若强制转换为字符 `(char)(c + 2)`,则对应的字符是 \_\_\_\_\_\_\_\_\_\_。
4. 想要定义一个**小数**变量,变量名字为: `radius` 并初始化为 1.5,语句是:\_\_\_\_\_\_\_\_\_\_\_\__\_\_\_\_\_\_\_\_\_\_\_。
5. 表达式 `1234 / 1000` 的结果是 \_\_\_\_\_\_\_\_\_\_,这个运算常用来获取四位数的 \_\_\_\_\_\_\_\_\_\_位数字。
---
**四、代码阅读与分析题(每题 5 分,共 20 分)**
**请直接写出代码运行后的输出结果。**
1. **类型转换与算术**
```cpp
int a = 7;
int b = 2;
double ans = a / b;
cout << ans << endl;
```
**输出结果:**\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
2. **数位运算**
```cpp
int n = 456;
int y = n / 10 % 10;
int z = n / 100;
cout << y * 2 + z * 4 << endl;
```
**输出结果:** \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
3. **字符与转义**
```cpp
cout << "小明说\:\"我喜欢学习\"";
```
**输出结果:**\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
4. **整数除法**
```cpp
int total = 100;
int part = 30;
double percentage = (part / total) * 100;
cout << percentage << endl;
```
**输出结果:** \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
---
**五、程序填空题(每空 4 分,共 20 分)**
**1. 题目:数字反转**
**要求:** 输入一个三位整数(例如 386),将其个位、十位、百位分离出来,并按“个位 十位 百位”的顺序输出(例如输出 `6 8 3`)。请在横线上填入正确的代码。
```cpp
int main() {
int num;
cout << "请输入一个三位数: ";
cin >> num;
// 1. 获取个位数字
int ones = ____________________;
// 2. 获取十位数字
int tens = ____________________;
// 3. 获取百位数字
int hundreds = ____________________;
// 4. 输出结果
cout << ones << " " << tens << " " << hundreds << endl;
return 0;
}
```
**2. 题目:华氏温度转摄氏温度**
**要求:** 输入一个华氏温度 $F$,根据公式 $C = \frac{5}{9} \times (F - 32)$ 计算摄氏温度 $C$。(在公式中 $F$ 代表的是华氏温度,$C$ 代表的是摄氏温度),请填空完成程序。
```cpp
int main() {
double F; // 用来储存输入的华氏温度
cout << "请输入华氏温度: ";
// 请在下方填空,用于输入华氏温度
________________
// 请在下方填空,根据题干的公式,计算摄氏温度,且公式逻辑正确
double C = ____________________ * (F - 32);
cout << "对应的摄氏温度是: " << C << endl;
return 0;
}
```
@@ -0,0 +1,287 @@
## **C++ 综合测试卷(三)**
### **姓名:_\_\_\_\_\_\_\_\_\_ ** **成绩:_\_\_\_\_\_\_\_\_\_**
**一、单项选择题(每题 2 分,共 30 分)**
1. C++程序的主函数(从这里开始执行程序)的正确写法是? ( **B** )
A. `void main()`
B. `int main()`
C. `Main()`
D. `function main()`
2. 若要使用 `cin` 和 `cout`,在第一行必须包含的头文件(工具箱)是? ( **A** )
A. `<iostream>`
B. `<string>`
C. `<cmath>`
D. `<stdio.h>`
3. 执行 `cout << "Hello" << endl;` 语句时,`endl` 的主要作用是? ( **C** )
A. 输出一个空格
B. 产生一个错误
C. 输出换行
D. 什么也不做
4. 下列哪个是 C++ 中的合法变量名? ( **D** )
A. `int`
B. `2ndValue`
C. `my-var`
D. `_myVar`
5. 在 C++ 中,`double` 类型通常用于表示? ( **B** )
A. 整数
B. 浮点数(小数)
C. 字符
D. 字符串
6. 表达式 `9 / 4` 的计算结果是? ( **C** )
A. 2.25
B. 3
C. 2
D. 1
7. 表达式 `9 % 4` 的计算结果是? ( **A** )
A. 1
B. 2
C. 3
D. 0
8. 若有定义 `double x = 5; int y = 2;`,表达式 `x / y` 的值是? ( **D** )
A. 2
B. 3
C. 2.0
D. 2.5
9. 下列哪个转义字符表示换行? ( **A** )
A. `\n`
B. `\\`
C. `\t`
D. `\r`
10. 已知字符 `'a'` 的ASCII码是 97,那么字符 `'d'` 的ASCII码是? ( **B** )
A. 99
B. 100
C. 101
D. 68
11. 在 C++ 中,`/* ... */` 这种形式表示什么? ( **B** )
A. 单行注释
B. 多行注释
C. 数据类型
D. 预处理指令
12. 用户通过键盘输入 `10 20` 并按回车,下面代码中变量 `a` 和 `b` 的值分别是? `int a, b; cin >> a >> b;` ( **A** )
A. a=10, b=20
B. a=1020, b=0
C. a=10, b=0
D. 程序出错
13. 若要定义一个整数变量,名字为: `MAX_COUNT`,值为100,正确的定义方式是? ( **D** )
A. `int MAX_COUNT;`
B. `MAX_COUNT = 100;`
C. `char MAX_COUNT = 100;`
D. `int MAX_COUNT = 100;`
14. 表达式 `(double)9 / 2` 的结果是? ( **C** )
A. 4
B. 5
C. 4.5
D. 5.0
15. 若 `int n = 789;`,则表达式 `n / 10 % 10` 的结果是? ( **B** )
A. 7
B. 8
C. 9
D. 78
**二、判断题(每题 2 分,共 20 分,对的打√,错的打×)**
1. 在 C++ 中,`int` 是一种数据类型。 ( **√** )
2. `#include <iostream>` 是一条注释,编译器会忽略它。 ( **×** )
3. 变量在定义时必须进行初始化(赋值)。 ( **×** )
4. `cout << 100 / 2;` 会在屏幕上输出 `50`。 ( **√** )
5. `cin` 语句可以一次性读取多个用空格隔开的数据。 ( **√** )
7. 表达式 `10 / 4` 和 `10 % 4` 的结果是相同的。 ( **√** )
**三、基础填空题(每空 2.5 分,共 20 分)**
1. C++ 中用于单行注释的符号是 **`//`**,用于多行注释的符号是 **`/* */`**。
2. 若 `int a = 3, b = 4;`,则 `cout << a * b;` 的输出结果是 **`12`**。
3. 若 `char ch = 'X';` (ASCII码为88),则表达式 `ch + 1` 的计算结果(整数值)是 **`89`**,如果将这个结果强制转换为字符,对应的字符是 **`'Y'`**。
4. 定义一个浮点型变量 `price` 并赋值为 99.9,其 C++ 语句是:**`double price = 99.9;`**。
5. 表达式 `(5 + 3) * 2` 的结果是 **`16`**,而表达式 `5 + 3 * 2` 的结果是 **`11`**。
**四、代码阅读与分析题(每题 3 分,共 12 分)**
请直接写出代码运行后的输出结果。
1. **算术与赋值**
```cpp
int x = 10;
x = x + 5;
x = x / 2;
cout << x << endl;
```
输出结果:**`7`**
2. **字符与整数**
```cpp
char c1 = 'A';
int num = c1 + 1;
char c2 = num;
cout << c2 << endl;
```
输出结果:**`B`**
3. **浮点数与整数除法**
```cpp
double a = 5;
int b = 2;
cout << a / b << endl;
```
输出结果:**`2.5`**
4. **数位操作**
```cpp
int n = 987;
int ge = n % 10;
int bai = n / 100;
cout << ge * 100 + bai << endl;
```
输出结果:**`709`**
**五、程序填空题(每空 3 分,共 18 分)**
1. **题目:计算长方形的周长和面积**
要求:输入一个长方形的长(length)和宽(width),计算并输出它的周长(perimeter)和面积(area)。请在横线上填入正确的代码。
```cpp
#include <iostream>
using namespace std;
int main() {
double length, width;
cout << "请输入长方形的长和宽: ";
// 1. 输入长和宽
cin >> length >> width;
// 2. 计算面积
double area = length * width;
// 3. 计算周长
double perimeter = 2 * (length + width);
cout << "面积是: " << area << endl;
// 4. 输出周长
cout << "周长是: " << perimeter << endl;
return 0;
}
```
2. **题目:三科成绩平均分**
要求:输入数学(math)、英语(english)、科学(science)三门课的成绩,计算并输出它们的平均分。
```cpp
#include <iostream>
using namespace std;
int main() {
int math, english, science;
cout << "请输入三门课的成绩: ";
cin >> math >> english >> science;
// 5. 计算总分并求平均分 (注意: 为得到小数结果,需要进行浮点数除法)
double average = (math + english + science) / 3.0;
// 6. 输出它们的平均分
cout << "平均分是: " << average << endl;
return 0;
}
```
---
### **答案解析**
**一、单项选择题**
1. **B**: 基本程序结构
2. **A**: `<iostream>` 头文件包含了输入 (`cin`) 和输出 (`cout`) 的功能。
3. **C**: `endl` 是 `end line` 的缩写,用于换行。
4. **D**: C++ 变量名可以由字母、数字和下划线组成,但不能以数字开头,也不能使用 `-` 符号或关键字(如 `int`)。`_myVar` 是合法的。
5. **B**: `double`(双精度浮点型)是用来存储带有小数点的数字的。
6. **C**: 在 C++ 中,两个整数相除,结果仍然是整数,小数部分会被直接舍去。`9 / 4` 的商是 2。
7. **A**: `%` 是取余(取模)运算符,计算两个整数相除后的余数。`9 % 4` 的余数是 1。
8. **D**: 当一个 `double` 类型的数和一个 `int` 类型的数进行运算时,`int` 类型会自动提升为 `double` 类型,然后进行浮点数运算。`5.0 / 2` 结果是 `2.5`。
9. **A**: `\n` 是换行符(New Line)。`\\` 表示反斜杠本身,`\t` 是制表符(Tab)。
10. **B**: 字符在计算机中以 ASCII 码存储,'a'、'b'、'c'、'd' 是连续的。'a' 是 97,'b' 是 98,'c' 是 99,所以 'd' 是 100。
11. **B**: `/*` 和 `*/` 之间的所有内容,即使跨越多行,也会被编译器当作注释忽略。
12. **A**: `cin` 使用空格、Tab或回车作为不同输入值之间的分隔符。所以 `10` 被赋给 `a`,`20` 被赋给 `b`。
13. **D**: 该语句正确地定义了一个名为 `MAX_COUNT` 的 `int` 类型变量,并将其初始化为 100。
14. **C**: `(double)9` 将整数 `9` 强制转换为浮点数 `9.0`。`9.0 / 2` 进行的是浮点数除法,结果是 `4.5`。
15. **B**: `n / 10` (即 `789 / 10`) 结果是整数 `78`。`78 % 10` 的结果是 `8`。这个操作是用来取一个三位数的十位。
**二、判断题**
1. **√**: `int` 是 C++ 中用于表示整数的基本数据类型之一。
2. **×**: `#include` 是预处理指令,它告诉编译器在编译前把 `iostream` 文件的内容和工具包含进来,而不是注释。
3. **×**: 变量在定义时可以只定义不进行初始化,例如:`int arr;`。
4. **√**: 编译器会先计算 `100 / 2` 得到 `50`,然后 `cout` 将 `50` 输出到屏幕上。
5. **√**: `cin` 可以连续读取,并以空白符(空格、回车等)作为数据之间的分隔。
6. **×**: C++ 是大小写敏感的语言,例如 `main` 和 `Main` 会被认为是两个不同的标识符。
7. **√**: 这是一个具体的计算。`10 / 4` 进行整数除法,结果是 `2`。`10 % 4` 计算除法的余数,结果也是 `2`。所以对于 `10` 和 `4` 这两个数,它们的结果是相同的。
8. **×**: 每一个 C++ 可执行程序都必须有一个 `int main()` 函数作为程序的入口点。
9. **√**: `//` 是单行注释,从 `//` 开始到该行的末尾都会被当作注释。
10. **√**: `char` 数据类型就是被设计用来存储单个字符的。
**三、基础填空题**
1. **答案**: `//`,`/* */`
**解析**: C++ 中用于单行注释的符号是 `//`,用于多行注释的符号是 `/*` 和 `*/` 包围。
2. **答案**: `12`
**解析**: `a * b` 就是 `3 * 4`,结果是 `12`。
3. **答案**: `89`,`'Y'`
**解析**: 字符 `'X'` 加上 `1`,计算机会使用它的 ASCII 码 `88` 来运算,`88 + 1 = 89`。ASCII 码为 `89` 的字符是 `'Y'`。
4. **答案**: `double price = 99.9;`
**解析**: 定义浮点数变量使用 `double` 或 `float` 关键字,然后是变量名和赋值。
5. **答案**: `16`,`11`
**解析**: `(5 + 3) * 2` 中,括号有更高的优先级,先算 `5 + 3` 得 `8`,再乘以 `2` 得 `16`。`5 + 3 * 2` 中乘法优先级更高,先算 `3 * 2` 得 `6`,再加 `5` 得 `11`。
**四、代码阅读与分析题**
1. **答案**: `7`
**解析**: `x` 初始为 `10`。`x = x + 5` 后 `x` 变为 `15`。`x = x / 2` 进行整数除法,`15 / 2` 结果是 `7`。
2. **答案**: `B`
**解析**: `c1` 是 `'A'`。`num = c1 + 1` 时,'A' 的 ASCII 码 65 会被用来计算,所以 `num` 变为 `66`。`c2 = num` 时,`c2` 被赋值为整数 `66`,它对应的字符是 `'B'`。
3. **答案**: `2.5`
**解析**: `a` 是 `double` 型的 `5.0`,`b` 是 `int` 型的 `2`。当 `double` 和 `int` 一起运算时,`int` 会被提升为 `double`,所以 `a / b` 会进行浮点数除法,`5.0 / 2.0` 结果是 `2.5`。
4. **答案**: `709`
**解析**: `n` 是 `987`。`ge = n % 10` 取余得到个位数 `7`。`bai = n / 100` 整除得到百位数 `9`。`ge * 100 + bai` 即 `7 * 100 + 9`,结果是 `709`。
**五、程序填空题**
1. **计算长方形的周长和面积**:
1. **答案**: `cin >> length >> width;`
**解析**: 用 `cin` 读取用户的输入到 `length` 和 `width` 变量。
2. **答案**: `length * width`
**解析**: 面积公式是 `长 * 宽`。
3. **答案**: `2 * (length + width)`
**解析**: 周长公式是 `2 * (长 + 宽)`。
4. **答案**: `perimeter`
**解析**: 直接将计算好的周长变量 `perimeter` 输出。
2. **三科成绩平均分**:
5. **答案**: `(math + english + science) / 3.0`
**解析**: 先将三科成绩相加,然后除以 `3.0`(而不是 `3`),确保进行浮点数除法以得到可能的小数结果。也可以写成 `(double)(math + english + science) / 3`。
6. **答案**: `average`
**解析**: 将上一步计算出的平均分变量 `average` 输出。
@@ -0,0 +1,196 @@
## **C++ 综合测试卷(三)**
### **姓名:_\_\_\_\_\_\_\_\_\_** **成绩:_\_\_\_\_\_\_\_\_\_**
**一、单项选择题(每题 2 分,共 30 分)**
1. ( ) C++**程序的起点**(程序从这里开始执行代码)的正确写法是?
A. `void main()`        B. `int main()`
C. `Main()`         D. `function main()`
2. ( ) 若要使用 `cin` 和 `cout`,在第一行必须包含的头文件(工具箱)是?
A. `<iostream>` B. `<string>` C. `<cmath>` D. `<stdio.h>`
3. ( ) 执行 `cout << "Hello" << endl;` 语句时,`endl` 的主要作用是?
A. 输出一个空格
B. 产生一个错误
C. 输出换行
D. 什么也不做
4. ( ) 下列哪个是 C++ 中的合法变量名?
A. `int` B. `2ndValue` C. `my-var` D. `_myVar`
5. ( ) 在 C++ 中,`double` 类型通常用于表示?
A. 整数 B. 浮点数(小数) C. 字符 D. 字符串
6. ( ) 表达式 `9 / 4` 的计算结果是?
A. 2.25 B. 3 C. 2 D. 1
7. ( ) 表达式 `9 % 4` 的计算结果是?
A. 1 B. 2 C. 3 D. 0
8. ( ) 若有定义 `double x = 5; int y = 2;`,表达式 `x / y` 的值是?
A. 2 B. 3 C. 2.0 D. 2.5
9. ( ) 下列哪个转义字符表示换行?
A. `\n` B. `\\` C. `\t` D. `\r`
10. ( ) 已知字符 `'a'` 的ASCII码是 97,那么字符 `'d'` 的ASCII码是?
A. 99 B. 100 C. 101 D. 68
11. ( ) 在 C++ 中,`/* ... */` 这种形式表示什么?
A. 单行注释 B. 多行注释
C. 数据类型 D. 预处理指令
12. ( ) 用户通过键盘输入 `10 20` 并按回车,下面代码中变量 `a` 和 `b` 的值分别是? `int a = 0, b = 0; cin >> a >> b;`
A. a=10, b=20 B. a=1020, b=0 C. a=10, b=0 D. 程序出错
13. ( ) 若要定义一个整数变量,名字为: `MAX_COUNT`,值为100,正确的定义方式是?
A. `int MAX_COUNT;` B. `MAX_COUNT = 100;`
C. `char MAX_COUNT = 100;` D. `int MAX_COUNT = 100;`
14. ( ) 表达式 `(double)9 / 2` 的结果是?
A. 4 B. 5 C. 4.5 D. 5.0
15. ( ) 若 `int n = 789;`,则表达式 `n / 10 % 10` 的结果是?
A. 7 B. 8 C. 9 D. 78
**二、判断题(每题 2 分,共 12 分,对的打√,错的打×)**
1. ( ) 在 C++ 中,`int` 是一种数据类型。
2. ( ) `#include <iostream>` 是一条注释,编译器会忽略它。
3. ( ) 变量在定义时必须进行初始化(赋值)。
4. ( ) `cout << 100 / 2;` 会在屏幕上输出 `50`。
5. ( ) `cin` 语句可以一次性读取多个用空格隔开的数据。
7. ( ) 表达式 `10 / 4` 和 `10 % 4` 的结果是相同的。
**三、填空题(每空 2 分,共 16 分)**
1. C++ 中用于单行注释的符号是 \_\_\_\___\_\___\_\_\_,用于多行注释的符号是 \_\_\_\___\_\_\_\_\_。
2. 若 `int a = 3, b = 4;`,则 `cout << a * b;` 的输出结果是 \_\_\_\_\_\_\_\_\_\_。
3. 若 `char ch = 'X';` (ASCII码为88),则表达式 `ch + 1` 的计算结果(整数值)是 \_\_\_\_\_\_\_\_\_\_\_,如果将这个结果通过强制类型转换为字符,对应的字符是 \_\_\_\_\_\___\_\_\_。
4. 需要定义一个浮点型变量 `price` 并赋值为 99.9,其 C++ 语句是:\_\_\_\_\_\___\___\___\___\___\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
5. 表达式 `(5 + 3) * 2` 的结果是 \_\_\_\_\_\_\_\_,而表达式 `5 + 3 * 2` 的结果是 \_\_\_\_\_\_\_\_\_\_。
**四、代码阅读与分析题(每题 3 分,共 12 分)**
请直接写出代码运行后的输出结果。
1. **算术与赋值**
```cpp
int x = 10;
x = x + 5;
x = x / 2;
cout << x << endl;
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_
2. **字符与整数**
```cpp
char c1 = 'A';
int num = c1 + 1;
char c2 = num;
cout << c2 << endl;
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_
3. **浮点数与整数除法**
```cpp
double a = 5;
int b = 2;
cout << a / b << endl;
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_
4. **数位操作**
```cpp
int n = 987;
int g = n % 10;
int b = n / 100;
cout << g * 100 + b << endl;
```
​ 输出结果:\_\_\_\_\_\_\_\_\_\_\_\_
**五、程序填空题(每空 3 分,共 30 分)**
1. **题目:计算长方形的周长和面积**
要求:输入一个长方形的长(length)和宽(width),计算并输出它的周长(perimeter)和面积(area)。**请在横线上根据题意和注释填入正确的代码。**
提示:其中题目中的()里代表的是对应的变量名,例如长(length)和宽(width),代表代码中代表长度的变量名是`length`,代表宽度的变量名是`width`。
```cpp
#include <iostream>
using namespace std;
int main() {
double length, width;
cout << "请输入长方形的长和宽: ";
// 1. 输入长和宽
________________________;
// 2. 计算面积
double area = ________________________;
// 3. 计算周长
double perimeter = ________________________;
cout << "面积是: " << area << endl;
// 4. 输出周长
cout << "周长是: " << ________________________ << endl;
return 0;
}
```
2. **题目:三科成绩平均分**
要求:输入数学(math)、英语(english)、科学(science)三门课的成绩,计算并输出它们的精确平均分,平均分可能为小数。**请在横线上根据题意和注释填入正确的代码。**
提示:其中题目中的()里代表的是对应的变量名,与上题一致。
```cpp
#include <iostream>
using namespace std;
int main() {
int math, english, science;
cout << "请输入三门课的成绩: ";
cin >> math >> english >> science;
// 5. 计算总分并求平均分 (注意: 为得到小数结果,需要进行浮点数除法)
double average = ____________________________________;
// 6. 输出它们的平均分
cout << "平均分是: " << ____________ << endl;
return 0;
}
```
3. **题目:分离数位**
要求:输入一个四位整数,分别拆分出这个四位数的个、十、百、千位进行输出。**请在横线上根据题意和注释填入正确的代码。**
```cpp
#include <iostream>
using namespace std;
int main() {
int num;
cout << "请输入一个三位整数: ";
cin >> num;
// 分别拆分个、十、百、千位
int ge = __________________________; // 7. 拆分个位
int shi = __________________________; // 8. 拆分十位
int bai = __________________________; // 9. 拆分百位
int qian = __________________________; // 10. 拆分千位
// 输出个、十、百、千位。
cout << ge << shi << bai << qian << endl;
return 0;
}
```
@@ -0,0 +1,138 @@
### **C++ 综合测试卷(四) - 答案与评分标准**
**(满分: 100分)**
---
#### **一、选择题 (每题3分,共30分)**
| 题号 | 答案 | 解析 |
| :--- | :---- | :----------------------------------------------------------- |
| 1 | **C** | `10 / 4` 是整数除法,结果为 `2`。`5 + 2` 的结果是 `7`。 |
| 2 | **C** | 变量名不能以数字开头 (`D`错误),不能包含特殊字符如`-` (`A`错误),不能是C++关键字(`const`,`B`错误)。`user_name_1` 是合法的。 |
| 3 | **B** | `cin` 和 `cout` 是 `iostream` (输入输出流) 库的一部分。 |
| 4 | **C** | 在C++中,`!=` 是不等于运算符。 |
| 5 | **C** | 字符在计算机中以ASCII码存储,是连续的。`'a'` 是97,则 `'b'` 是98,`'c'` 是99,`'d'` 是100。 |
| 6 | **C** | `printf` 输出 `double` 类型使用 `%f` 格式说明符,`%.3f` 表示保留3位小数。 |
| 7 | **B** | 反斜杠 `\` 是转义字符的起始符,要输出它本身,需要使用 `\\` 进行转义。 |
| 8 | **B** | `const` 关键字用于定义常量,其值在初始化后不能被再次修改。 |
| 9 | **C** | 表达式 `5 > 3` 的结果是布尔值 `true`。在 `cout` 输出时,`true` 会被转换为整数 `1`。 |
| 10 | **C** | `scanf` 和 `cin` 都使用空格、制表符、换行符等空白字符来分隔不同的输入项。 |
**评分标准**: 每题选择正确得3分,否则不得分。
---
#### **二、填空题 (每空2分,共20分)**
1. `3`
2. `3`
3. `int` (或 `short`, `unsigned int` 等合理的整数类型均可)
4. `true` (或 `1` )
5. `%d`
6. `%lf`
7. 单引号
8. 一个额外的变量 (或 “临时变量”、“中间变量” 等)
9. 转义字符
10. `>>`
**评分标准**: 每空填写正确得2分,有部分错误或拼写错误不得分。
---
#### **三、读程序写结果 (每题5分,共20分)**
1. **输出结果:**
```
E
69
``` *(评分标准: 两行全部正确得5分,只对一行得2分)*
2. **输出结果:**
```
1
0
```
*(评分标准: 两行全部正确得5分,只对一行得2分)*
3. **输出结果:**
```
ID: 8
Price: 12.34
```
*(评分标准: 两行全部正确得5分,只对一行得2分。第二行小数位数不正确不得分)*
4. **输出结果:**
```
num1 is 100
num2 is 50
```
*(评分标准: 两行全部正确得5分,只对一行得2分)*
---
#### **四、程序填空题**
**1. 两数之和 (10分)**
```cpp
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << "请输入两个整数(用空格隔开): ";
/* 填空 1: (5分) */
// --- 在下方写入代码 ---
cin >> a >> b;
int sum = a + b;
/* 填空 2: (5分) */
// --- 在下方写入代码 ---
cout << "它们的和是: " << sum << endl;
return 0;
}
```
**评分标准:**
* **填空1 (5分)**: 代码 `cin >> a >> b;` 完全正确得5分。缺少分号扣1分。
* **填空2 (5分)**: 代码 `cout << "它们的和是: " << sum << endl;` 完全正确得5分。内容或格式有误酌情扣分,缺少分号扣1分。
---
**2. 计算圆的面积 (20分)**
```cpp
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
/* 填空 1: (5分) */
// --- 在下方写入代码 ---
const double PI = 3.14;
double radius;
cout << "请输入圆的半径: ";
/* 填空 2: (5分) */
// --- 在下方写入代码 ---
scanf("%lf", &radius);
double area = PI * radius * radius;
/* 填空 3: (10分) */
// --- 在下方写入代码 ---
printf("圆的面积是: %.2f\n", area);
return 0;
}
```
**评分标准:**
* **填空1 (5分)**: `const double PI = 3.14;` 完全正确得5分。缺少 `const` 关键字扣2分,缺少分号扣1分。
* **填空2 (5分)**: `scanf("%lf", &radius);` 完全正确得5分。格式说明符错用 `%f` 扣2分,缺少 `&` 符号扣3分,缺少分号扣1分。
* **填空3 (10分)**: `printf("圆的面积是: %.2f\n", area);` 完全正确得10分。格式说明符错用 `%.2lf` 不扣分,但未使用 `%.2f` 导致小数位数不正确扣5分,缺少换行符 `\n` 扣2分。
@@ -0,0 +1,422 @@
### **C++ 数学运算~条件表达式 知识巩固讲义**
#### **第一章:数学运算**
**核心思想:**
计算机最强大的能力之一就是进行快速而精确的计算。C++内置了我们数学中常用的算术运算符,让我们可以在程序中轻松完成各种计算任务。
**详细讲解:**
1. **五种基本算术运算符:**
* `+` (加法): `5 + 3` 结果是 `8`。
* `-` (减法): `5 - 3` 结果是 `2`。
* `*` (乘法): `5 * 3` 结果是 `15`。
* `/` (除法): 这个运算符的行为取决于参与运算的数字类型,需要特别注意。
* `%` (取模/取余): `5 % 3` 结果是 `2`。
2. **整数除法 vs. 浮点数除法 (重点!):**
* **整数除法**:当 `/` 运算符两边的数**都是**整数时,C++会执行整数除法。计算结果会直接**舍弃所有小数部分**,只保留整数部分(向零取整)。
* 例如:`10 / 3` 的结果是 `3`。`9 / 10` 的结果是 `0`。
* **浮点数除法**:只要 `/` 运算符两边**至少有一个**是浮点数(如 `double` 或 `float`),C++就会执行浮点数除法,结果会是一个精确的、带小数的数值。
* 例如:`10.0 / 3`、`10 / 3.0`、`10.0 / 3.0` 的结果都是 `3.33333...`。
* **技巧**:若想用两个整数 `int` 类型的变量 `a` 和 `b` 计算出浮点数结果,可以写成 `(double)a / b`,这叫做强制类型转换。
3. **取模运算符 `%` 的特性:**
* 取模就是计算整数除法中的余数。
* **注意**:`%` 运算符两边的数**必须都是整数**,不能用于浮点数。`10.0 % 3` 这样的代码是错误的,无法通过编译。
**示例代码:**
```cpp
#include <iostream>
using namespace std;
int main() {
int a = 13, b = 4;
double x = 13.0;
cout << "a + b = " << a + b << endl; // 输出: a + b = 17
cout << "a - b = " << a - b << endl; // 输出: a - b = 9
cout << "a * b = " << a * b << endl; // 输出: a * b = 52
// 重点看除法和取模
cout << "a / b = " << a / b << endl; // 整数除法, 输出: a / b = 3
cout << "a % b = " << a % b << endl; // 取模, 输出: a % b = 1
// 浮点数除法
cout << "x / b = " << x / b << endl; // 浮点数除法, 输出: x / b = 3.25
return 0;
}
```
---
#### **第二章:变量与常量**
**核心思想:**
程序处理的数据需要一个地方存放。变量和常量就是我们向内存申请的、用来存储数据的空间。
**详细讲解:**
1. **变量:**
* **是什么?** 变量是程序中用于存储数据的一块内存,它的值在程序运行时**可以被改变**。你可以把它想象成一个可以随时更换内部物品的储物盒。
* **如何创建(声明与初始化)?**
* 格式:`数据类型 变量名 = 初始值;`
* 例如:`int score = 90;` 创建了一个名为 `score` 的整型变量,并存入了初始值 `90`。
* **好习惯**:定义变量时就给它一个初始值,可以避免很多潜在的错误。
* **如何使用(赋值)?**
* 使用 `=` 赋值运算符来更新变量的值。
* 例如:`score = 95;` 这行代码执行后,`score` 变量中存储的值就变成了 `95`。
* **命名规则 (重要!):**
* 只能由字母、数字、下划线 `_` 组成。
* 不能以数字开头。
* 不能是C++的关键字(如 `int`, `const`, `double` 等)。
* 大小写敏感 (`myScore` 和 `myscore` 是两个不同的变量)。
* **建议**:变量名要“见名知意”,例如命名学生年龄的时候最好用 `studentAge` 而不是 `a`。
2. **常量 (Constant):**
* **是什么?** 常量的值一旦设定,就**不能再被修改**。
* **为什么需要常量?**
* **提高安全性**:防止程序在不经意间修改了那些本应固定的不会改变的值。
* **如何创建?**
* 使用 `const` 关键字。
* 格式:`const 数据类型 常量名 = 值;`
* **注意**:常量在定义时**必须**进行初始化。
* **习惯**:常量名通常全部大写,以便和变量区分开,例如:`const double PI = 3.1415926;`
**变量与常量 示例代码:**
```cpp
#include <iostream>
using namespace std;
int main() {
// 定义一个常量 PI
const double PI = 3.14159;
cout << "圆周率的值是: " << PI << endl;
// 以下代码错误!因为尝试修改常量的值会导致编译错误
// PI = 3.14;
// 定义一个变量来存储圆的半径
double radius = 10.0;
cout << "半径是: " << radius << endl;
// 变量的值可以被修改
radius = 12.5;
cout << "修改后的半径是: " << radius << endl;
double area = PI * radius * radius;
cout << "圆的面积是: " << area << endl;
return 0;
}
```
---
#### **第三章:`cin` 和 `cout` 控制台输入输出**
**核心思想:**
程序需要与用户进行交互。`cout` 负责将信息显示到屏幕上给用户看,而 `cin` 负责从用户的键盘输入中获取信息。
**详细讲解:**
1. **基本概念:**
* `cout` (console output): 用于标准输出,通常指向屏幕输出。
* `cin` (console input): 用于标准输入,通常从键盘中输入。
2. **`cout` — 输出到屏幕:**
* 使用**插入运算符 `<<`** 将数据“插入”到输出流中。
* 可以**连续使用 `<<`** 来连接多个输出项。
* `endl` (end line) 是一个特殊的操作符,它作用为换行。
3. **`cin` — 从键盘读取:**
* 使用**提取运算符 `>>`** 从输入流中“提取”数据并存入变量。
* `cin` 会自动根据你提供的变量类型来解析输入。
* **工作方式 (重点!)**:`cin` 以**空白符**(**空格**、**换行符** `\n`)作为输入数据的分隔符。当你输入 `18 1.75` 然后按回车时,`cin` 会先读取 `18`,遇到空格后停止,将 `18` 存入第一个变量;接着它会跳过空格,继续读取 `1.75`,遇到最后的换行符停止,将 `1.75` 存入第二个变量。
**示例代码:**
```cpp
#include <iostream>
using namespace std;
int main() {
int age;
double height;
// 使用 cout 提示用户输入
cout << "请输入你的年龄和身高 (用空格隔开), 然后按回车: ";
// 使用 cin 读取一个整数和一个double
cin >> age >> height;
// 使用 cout 打印出读取到的值,进行验证
cout << "你的年龄是: " << age << " 岁" << endl;
cout << "你的身高是: " << height << " 米" << endl;
return 0;
}
```
---
#### **第四章:转义符**
**核心思想:**
在字符串中,我们有时需要表示一些特殊的、无法直接打印的字符,比如换行。转义符就是一种特殊的表示法,用来在代码中代表这些特殊字符。
**详细讲解:**
1. **什么是转义符?**
* 它是一个以反斜杠 `\` 开头的字符序列。
* 编译器看到 `\` 时,会将其与紧跟其后的字符组合起来,解释成一个具有特殊含义的单一字符。
2. **最常用的转义符:**
* `\n` : 换行符。在 `cout` 中,它的效果与 `endl` 中的换行效果相同,但它不刷新缓冲区。
* `\\`: 表示一个反斜杠 `\` 字符本身。
* `\"` : 表示一个双引号 `"` 字符本身。因为字符串本身是用双引号包围的,所以想在字符串内部打印一个双引号,就需要用 `\"`。
**示例代码:**
```cpp
#include <iostream>
using namespace std;
int main() {
// \n 的使用:换行
cout << "这是第一行。\n这是第二行。" << endl;
// \\ 和 \" 的使用
cout << "\n他说: \"C++很有趣!\"" << endl;
cout << "输出一个反斜杠: \\" << endl;
return 0;
}
```
---
#### **第五章:字符与ASCII码**
**核心思想:**
计算机内部只存储数字。我们所使用的每一个字符,无论是 'A'、'?' 还是 '5',在计算机内部都有一个对应的整数编码,这个编码标准就是ASCII码。
**详细讲解:**
1. **`char` 数据类型:**
* `char` 用于存储单个字符。定义时,字符值必须用**单引号** `' '` 括起来。例如:`char grade = 'A';`。
* `'A'` (字符) 和 `"A"` (字符串) 是完全不同的东西。
2. **ASCII (美国信息交换标准代码):**
* 它定义了字符与整数之间的对应关系。
* **关键点**:`char` 变量在内存中存放的其实是它的ASCII码值(一个整数)。
* **必须记住的ASCII码:**
* `'A'` -> `65`
* `'a'` -> `97`
* `'0'` (字符'0') -> `48`
* 英文字母和数字字符的ASCII码都是连续的。所以 `'B'` 的码是 `66`,`'1'` 的码是 `49`,以此类推。
3. **`char` 与 `cout`:**
* `cout` 很智能,当它看到一个 `char` 类型的变量时,它会默认打印出其对应的**字符**。
* 如果我们想查看s输出它的ASCII码值,我们需要把它**强制转换**成 `int` 类型然后再进行输出。
4. **字符的运算:**
* 由于 `char` 的本质是整数,我们可以对它进行数学运算。
* 例如:`'A' + 1` 的计算结果是 `65 + 1 = 66`。如果将这个结果存入一个 `char` 变量,`cout` 打印它时会显示 `'B'`。这个特性是实现很多字符操作的基础。
**示例代码:**
```cpp
#include <iostream>
using namespace std;
int main() {
char ch1 = 'B';
char ch2 = '8';
// cout 默认打印字符
cout << "字符ch1是: " << ch1 << endl;
// 强制类型转换为int,打印其ASCII码
cout << "字符ch1的ASCII码是: " << (int)ch1 << endl;
cout << "字符ch2的ASCII码是: " << (int)ch2 << endl;
// 对字符进行运算
char next_char = ch1 + 1; // 'B' + 1 -> 66 + 1 = 67
cout << "ch1的下一个字符是: " << next_char << endl; // cout会打印出 'C'
// 大写转小写示例 ('a' - 'A' = 32)
char lower_char = ch1 + 32; // 'B' + 32 -> 66 + 32 = 98
cout << "字符ch1的小写形式是: " << lower_char << endl; // cout会打印出 'b'
return 0;
}
```
---
#### **第六章:格式化输入输出 (printf 和 scanf)**
**核心思想:**
虽然 `cin` 和 `cout` 非常方便,但在需要精确控制输出格式(例如控制小数位数)时,源自C语言的 `printf` 函数会更加强大和灵活。同样,`scanf` 在读取特定格式的输入时也很有用。
**详细讲解:**
1. **必需的头文件**:要使用 `printf` 和 `scanf`,必须包含头文件 `#include <cstdio>`。
2. **`printf` — 格式化输出:**
* **基本语法**: `printf("格式控制字符串", 参数1, 参数2, ...);`
* **格式控制字符串**: 它是一个普通的字符串,但里面包含了一些以 `%` 开头的**格式说明符**,这些说明符会被后面对应的参数值替换。
* **常用格式说明符**:
* `%d`: 用于输出一个十进制整数 (`int`)。
* `%f`: 用于输出一个浮点数 (`float` 或 `double`)。
* `%c`: 用于输出一个单一字符 (`char`)。
* `%%`: 如果你想输出一个 `%` 符号本身,需要写成 `%%`。
* **控制小数位数**: `%.nf` 表示浮点数保留 `n` 位小数(会四舍五入)。这是**最常用的功能之一**。例如 `printf("%.2f", 3.14159);` 输出 `3.14`。
3. **`scanf` — 格式化输入:**
* **基本语法**: `scanf("格式控制字符串", &变量地址1, &变量地址2, ...);`
* **`&` (取地址符,至关重要!)**: `scanf` 必须知道要把读取的数据存放到内存的哪个位置,所以我们必须提供变量的地址。**忘记 `&` 是最常犯的、会导致程序崩溃的错误!**
* **常用格式说明符 (注意与 `printf` 的区别!)**:
* `%d`: 读取一个整数 (`int`)。
* `%lf`: **必须使用 `%lf`** 读取一个 `double` 类型的浮点数。这是 `scanf` 和 `printf` 的一个重要区别!
* `%f`: 读取一个 `float` 类型的浮点数。
* `%c`: 读取一个字符。
**示例代码:**
```cpp
#include <cstdio> // 使用 printf/scanf 需要的头文件
#include <iostream>
int main() {
// --- printf 演示 ---
int id = 101;
double price = 4.586;
printf("ID: %d, Price: %f\n", id, price);
// --- scanf 演示 ---
int age;
double height;
// 注意 double 类型的身高要用 %lf 来接收
scanf("%d %lf", &age, &height);
printf("年龄: %d, 身高: %.2f\n", age, height);
return 0;
}
```
#### **第七章:交换变量的值**
**核心思想:**
这是一个非常经典的编程逻辑问题:如何安全地交换两个变量里存放的值。最通用、最易于理解的方法是使用一个临时的第三方变量。
**详细讲解:**
1. **错误的做法:**
* 假设 `int a = 10, b = 20;`
* 如果直接写 `a = b;`,此时 `a` 的值变成了 `20`,而 `a` 原本的值 `10` 已经丢失了。
* 再写 `b = a;`,`b` 的值仍然是 `20`。结果是两个变量都变成了 `20`,交换失败。
2. **正确的思路(三变量法):**
* 想象你有两个杯子,A杯装可乐,B杯装雪碧,你需要一个**空的C杯**来辅助交换。
* **步骤分解:**
1. **备份**:声明一个临时变量 `temp`。将 `a` 的值(可乐)存入 `temp`。(`temp = a;`)
2. **覆盖**:现在 `a` 的值已经安全备份,可以放心用 `b` 的值(雪碧)来覆盖 `a`。(`a = b;`)
3. **还原**:将 `temp` 中备份的原始 `a` 的值(可乐)赋给 `b`。(`b = temp;`)
* 经过这三步,`a` 和 `b` 的值就完美地交换了。
**示例代码:**
```cpp
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
// --- 开始交换 ---
// 1. 声明临时变量
int temp;
// 2. 备份 a 的值
temp = a;
// 3. 用 b 的值覆盖 a
a = b;
// 4. 将 a 的原始值赋给 b
b = temp;
// --- 交换结束 ---
cout << "交换后: a = " << a << ", b = " << b << endl;
return 0;
}
```
---
#### **第八章:逻辑运算初步**
**核心思想:**
程序不仅仅是计算,更重要的是能够进行判断和决策。逻辑运算就是程序进行判断的基础,其结果只有两种:**真** (true) 或 **假** (false)。
**详细讲解:**
1. **`bool` 类型:**
* C++ 中有一个专门表示“真/假”的数据类型,叫做 `bool` (布尔类型)。
* 它只有两个值:`true` 和 `false`。
* 当使用 `cout` 输出一个 `bool` 变量时,默认情况下 `true` 会显示为 `1`,`false` 会显示为 `0`。
2. **条件表达式:**
* 这是一个用于比较两个值的表达式,其最终的计算结果是一个 `bool` 值。
* **六种关系运算符:**
* `>`: 大于
* `<`: 小于
* `>=`: 大于或等于
* `<=`: 小于或等于
* `==`: **等于** (用于比较,是**两个等号**!这是初学者最常犯的错误,容易和赋值的单个 `=` 混淆!)
* `!=`: **不等于**
3. **如何使用:**
* 你可以将一个条件表达式的结果赋值给一个 `bool` 类型的变量,以便后续使用。
* 也可以直接在 `cout` 中输出一个条件表达式的结果,看看它是 `1` 还是 `0`。
**示例代码:**
```cpp
#include <iostream>
using namespace std;
int main() {
int score = 85;
int pass_line = 60;
// 定义bool变量来存储判断结果
bool is_passed; // 及格线
bool is_excellent; // 满分
// 进行逻辑判断,并将结果存入bool变量
is_passed = (score >= pass_line); // 判断是否及格,85 >= 60, 结果是 true
is_excellent = (score == 100); // 判断是否是满分,85 == 100, 结果是 false
// cout 默认将 true 输出为 1, false 输出为 0
cout << "分数是: " << score << endl;
cout << "及格线是: " << pass_line << endl;
cout << "是否及格? (1是, 0否): " << is_passed << endl;
cout << "是否满分? (1是, 0否): " << is_excellent << endl;
// 也可以直接输出表达式的结果
cout << (score < pass_line) << endl;
return 0;
}
```
@@ -0,0 +1,249 @@
## **C++ 综合测试卷(四) **
**(满分: 100分 时间: 60分钟)**
**姓名**: **分数:**
---
#### **一、选择题 (每题3分,共30分)**
1. 执行 `int result = 5 + 10 / 4; cout << result;` 代码后,屏幕上会输出什么?
A. `3`
B. `3.75`
C. `7`
D. `7.5`
2. 在C++中,下面哪一个**是**一个合法的变量名?
A. `final-score`
B. `const`
C. `user_name_1`
D. `3_stars`
3. 要使用 `cin` 和 `cout`,必须在程序文件开头包含哪个头文件?
A. `<cstdio>`
B. `<iostream>`
C. `<string>`
D. `<iomanip>`
4. 下面哪个表达式是用来判断变量 `x` 的值**不等于** `10` 的?
A. `x =! 10`
B. `x <> 10`
C. `x != 10`
D. `x !== 10`
5. 已知字符 `'a'` 的ASCII码是 `97`,那么字符 `'d'` 的ASCII码是多少?
A. `98`
B. `99`
C. `100`
D. `101`
6. 使用 `printf` 函数输出一个 `double` 类型的变量 `d`,并希望保留3位小数,正确的写法是?
A. `printf("%.3d", d);`
B. `printf("%3.f", d);`
C. `printf("%.3f", d);`
D. `printf("%f.3", d);`
7. 要在 `cout` 输出的字符串中显示一个反斜杠 `\` 字符,应该怎么写?
A. `cout << "\";`
B. `cout << "\\";`
C. `cout << '\';`
D. `cout << "slash";`
8. 下面哪项是关于 `const` 关键字的正确描述?
A. `const` 变量只能是整数类型。
B. `const` 变量在定义后,其值不能被修改。
C. `const` 变量在定义时可以不进行初始化。
D. `const` 变量的值可以在程序运行时通过 `cin` 修改。
9. `cout << (5 > 3);` 这行代码的输出结果是?
A. `true`
B. `false`
C. `1`
D. `0`
10. 当使用 `scanf("%d %lf", &a, &b);` 读取用户输入 `10 2.5` 时,`scanf` 是如何区分 `10` 和 `2.5` 这两个数的?
A. 通过 `%` 号
B. 通过逗号
C. 通过空格等空白符
D. 无法区分
---
#### **二、填空题 (每空2分,共20分)**
1. 计算整数除法 `15 / 4` 的结果是 \_\_\_\_\_\_\_。
2. 计算取余运算 `15 % 4` 的结果是 \_\_\_\_\_\_\_。
3. 定义一个变量用于存储一个人的年龄,最合适的数据类型是 \_\_\_\_\_\_\_。
4. C++中表示“真”的 `bool` 类型的储存的值是 \_\_\_\_\_\_\_。
5. 在 `printf` 中,用于输出整数的格式说明符是 \_\_\_\_\_\_\_。
6. 在 `scanf` 中,读取 `double` 类型变量时,使用 \_\_\_\_\_\_\_ 格式说明符。
7. 一个 `char` 类型的数据(比如字母A)需要用 \_\_\_\_\_\_\_\_\_\_ (填“单引号”或“双引号”) 括起来。
8. 交换变量 `x` 和 `y` 的值时,除了 `x` 和 `y`,还需要 \_\_\_\_\_\_\_\_\_\_ 来辅助。
9. `cout << "Hello\nWorld";` 这段代码中的 `\n` 是一个 \_\_\_\_\_\_\_,它的作用是换行。
10. `cin` 命令使用 \_\_\_\_\_\_\_\_\_\_ 符号从键盘提取数据。
---
#### **三、读程序写结果 (每题5分,共20分)**
1. 写出下面程序的输出结果。
```cpp
#include <iostream>
using namespace std;
int main() {
char c = 'B'; // 字符 B 的ASCII码为:66
c = c + 3;
cout << c << endl;
cout << (int)c << endl;
return 0;
}
```
**输出结果:**
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
2. 写出下面程序的输出结果。
```cpp
#include <iostream>
using namespace std;
int main() {
int a = 20, b = 10;
bool result1 = (a / b == 2);
bool result2 = (a > b * 2);
cout << result1 << endl;
cout << result2 << endl;
return 0;
}
```
**输出结果:**
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
3. 写出下面程序的输出结果。
```cpp
#include <cstdio>
int main() {
int book_id = 8;
double price = 12.342;
printf("ID: %d\n", book_id);
printf("Price: %.2f\n", price);
return 0;
}
```
**输出结果:**
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
4. 写出下面程序的输出结果。
```cpp
#include <iostream>
using namespace std;
int main() {
int num1 = 50;
int num2 = 100;
int temp = num1;
num1 = num2;
num2 = temp;
cout << "num1 is " << num1 << endl;
cout << "num2 is " << num2 << endl;
return 0;
}
```
**输出结果:**
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
---
#### **四、程序填空题**
**1. 两数之和 (10分)**
**要求**:请补全下方程序中的两处代码,使其能够完整地实现以下功能:
1. 提示并读取用户从键盘输入的两个整数。
2. 计算这两个整数的和。
3. 按指定格式输出计算结果。
```cpp
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << "请输入两个整数(用空格隔开): ";
/*
* 填空 1: (5分)
* 使用 cin 语句,将用户输入的两个整数分别存入变量 a 和 b 中。
*/
// --- 在下方写入代码 ---
__________________________
int sum = a + b;
/*
* 填空 2: (5分)
* 使用 cout 语句,输出一行文字。
* 该行文字的格式为: "它们的和是: ",后面紧跟 sum 变量的值,并以换行结束。
*/
// --- 在下方写入代码 ---
__________________________
return 0;
}
```
---
**2. 计算圆的面积 (20分)**
**要求**:请补全下方程序中的三处代码,使其能够完整地实现以下功能:
1. 定义一个代表圆周率的常量 `PI`。
2. 读取用户从键盘输入的圆的半径(可能为小数)。
3. 根据半径计算圆的面积。
4. 使用 `printf` 函数,按指定格式将结果格式化输出。
```cpp
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
/*
* 填空 1: (5分)
* 定义一个名为 PI,值为 3.14 的 double 类型常量。
*/
// --- 在下方写入代码 ---
__________________________
double radius;
cout << "请输入圆的半径: ";
/*
* 填空 2: (5分)
* 使用 scanf 函数读取一个 double 类型的值,并将其存入 radius 变量中。
* (提示: 注意 scanf 读取 double 时需要使用的格式说明符以及取地址符 &)
*/
// --- 在下方写入代码 ---
__________________________
double area = PI * radius * radius;
/*
* 填空 3: (10分)
* 使用 printf 函数输出计算结果。
* 输出的格式为: "圆的面积是: ",后跟 area 的值。
* 要求:输出的面积值必须精确到小数点后两位,且末尾需要有换行。
*/
// --- 在下方写入代码 ---
__________________________
return 0;
}
```
@@ -0,0 +1,202 @@
## **C++ 综合测试卷(五)**
### **姓名:\_\_\_\_\_\_\_\_\_\_** **成绩:\_\_\_\_\_\_\_\_\_\_**
**一、单项选择题(每题 2 分,共 30 分)**
1. ( ) 在`if (x > 10)`这条语句中,`x > 10`这个部分被称为?
A. 赋值表达式 B. 关系表达式
C. 算术表达式 D. 循环表达式
2. ( ) 逻辑运算符 `&&` 表示什么含义?
A. 或者 B. 并且 C. 不是 D. 等于
3. ( ) 表达式 `cout << (5 > 3) && (1 < 0)` 的**输出的**结果是?
A. 1 B. 0 C. `true` D. `false`
4. ( ) 表达式 `cout << (5 < 3) || (1 > 0)` 的**输出的**结果是?
A. 1 B. 0 C. `true` D. `false`
5. ( ) 使用 `printf` 函数输出一个 `double` 类型的变量 `d`,并希望保留3位小数,正确的写法是?
A. `printf("%.3d", d);` B. `printf("%3.f", d);`
C. `printf("%.3f", d);` D. `printf("%f.3", d);`
6. ( ) 要判断一个学生的成绩 `score` 是否及格(大于或等于60分),`if` 语句的条件应该写成?
A. `if (score = 60)` B. `if (score > 60)`
C. `if (score >= 60)` D. `if (score <= 60)`
7. ( ) 在“判断奇偶数”的例子中,判断一个数 `num` 是偶数的正确表达式是?
A. `num % 2 == 1` B. `num / 2 == 0`
C. `num % 2 != 0` D. `num % 2 == 0`
8. ( ) 要判断一个人的年龄 `age` 在18岁到60岁之间(包含18和60),正确的表达式是?
A. `age >= 18 || age <= 60`
B. `18 <= age <= 60`
C. `age >= 18 && age <= 60`
D. `age > 18 && age < 60`
9. ( ) 下面哪个表达式是用来判断变量 `x` 的值**不等于** `10` 的?
A. `x =! 10` B. `x <> 10` C. `x != 10` D. `x !== 10`
10. ( ) 表达式 `true || false && false` 的结果是?
A. `true` B. `false` C. 结果不确定 D. 语法错误
11. ( ) 下列哪个是 C++ 中的合法变量名?
A. `if` B. `char` C. `hello-world` D. `user_age`
12. ( ) 表达式 `13 / 4` 的计算结果是?
A. 3.25 B. 4 C. 3 D. 1
13. ( ) 表达式 `13 % 4` 的计算结果是?
A. 1 B. 2 C. 3 D. 0
14. ( ) 已知字符 `'A'` 的ASCII码是 65,那么字符 `'C'` 的ASCII码是?
A. 66 B. 67 C. 68 D. 69
15. ( ) `if-else` 结构用于解决哪种逻辑问题?
A. 顺序执行 B. 二选一 C. 多次重复 D. 单向判断(要么做要么就不做)
**二、判断题(每题 2 分,共 12 分,对的打√,错的打×)**
1. ( ) 在 `if-else` 结构中,`if` 块和 `else` 块的代码可能会被同时执行。
2. ( ) 在 C++ 中,任何非零的整数(如 `5`, `-10`)在 `if` 条件判断中都会被当作 `true`(真)。
3. ( ) 在表达式 `A && B` 中,如果 `A` 的结果是 `false`,计算机会“短路”,不再去计算 `B` 的值。
4. ( ) 在C++中,`if (10 < x < 20)` 可以正确地判断变量 `x` 是否在10和20之间。
5. ( ) `if (score != 100)` 和 `if (!(score == 100))` 这两个条件在逻辑上是等价的。
6. ( ) `cin` 语句可以一次性读取多个用空格隔开的数据。
**三、填空题(每空 2 分,共 16 分)**
1. 逻辑运算符“与”的符号是 \_\_\_\_\_\_\_\_\_,“或”的符号是 \_\_\_\_\_\_\_\_\_,“非”的符号是 \_\_\_\_\_\_\_\_\_。
2. 运算符优先级口诀是:\_\_\_\_\_\_\_\_\_\_ > 算术运算符 > 关系运算符 > \_\_\_\_\_\_\_\_\_\_ > \_\_\_\_\_\_\_\_\_\_。
3. 需要定义一个字符变量 `letter` 并赋值为字符 `B`,其 C++ 语句是:\_\_\_\_\_\___\___\___\___\___\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
4. 要判断一个数 `x` 能否被 `5` 整除,它的逻辑表达式是:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
5. 如果 `bool a = true, b = false;`,那么表达式 `a || b` 的结果是\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
**四、代码阅读与分析题(每题 3 分,共 12 分)**
请直接在代码下方的横线处写出代码运行后的输出结果,**注意:如果程序不会输出任何的文字,请填写"无输出"**。
1.
```cpp
int age = 17;
if (age >= 18) {
cout << "已成年";
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
2.
```cpp
int num = 15;
if (num % 2 == 0) {
cout << "偶数";
} else {
cout << "奇数";
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
3.
```cpp
int main() {
int age = 12;
double moeny = 120.712;
printf("今天我: %d 岁\n", age);
printf("我还有: %.2f 元零花钱", price);
return 0;
}
```
输出结果:
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
4.
```cpp
bool has_ticket = true;
int user_level = 5;
if (has_ticket == true && user_level > 3) {
cout << "允许进入";
}else{
cout << "不允许进入";
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
**五、程序填空题(每空 3 分,共 30 分)**
1. **题目:判断考试等级**
要求:输入一个整数表示的成绩 `score`。如果成绩大于等于90分,输出"A";否则,输出"B"。
```cpp
int main() {
int score;
cout << "请输入成绩: ";
// 1. 输入成绩到变量 score
__________________________________________;
// 2. 判断 score 是否大于等于 90
if (__________________________________________) {
// 3. 如果条件成立,输出 'A'
__________________________________________;
} else {
// 4. 如果条件不成立,输出 'B'
__________________________________________;
}
return 0;
}
```
2. **题目:数字筛选**
要求:输入一个整数 `num`。判断它是否同时满足“是5的倍数”**并且**“是偶数”这两个条件。如果是,输出"Yes",否则输出"No"。
```cpp
int main() {
int num;
cout << "请输入一个整数: ";
cin >> num;
// 5. 定义一个布尔变量 is_ok,存放“是5的倍数”的判断结果
bool is_ok = _________________________________;
// 6. 定义一个布尔变量 is_even,存放“是偶数”的判断结果
bool is_even = _________________________________;
// 7. 使用 if 判断题目要求满足的条件
if (__________________________________________) {
cout << "Yes";
} else {
// 8. 如果不满足,请使用 printf 语句来输出 No
__________________________________________;
}
return 0;
}
```
3. **题目:游乐园门票**
要求:输入一个游客的年龄 `age`。如果年龄小于6岁 **或者** 大于60岁,则享受优惠票价,输出"Discount";否则输出"Full Price"。
```cpp
int main() {
int age;
cout << "请输入游客年龄: ";
cin >> age;
// 9. 请根据题意的判断条件,在 if 的括号中填入完整的逻辑表达式
if (_______________________________________________________________) {
cout << "Discount";
} else {
// 10. 如果不满足优惠条件,则输出 "Full Price"
_________________________________________________;
}
return 0;
}
```
@@ -0,0 +1,215 @@
## **C++ 综合测试卷(六)**
### **姓名:\_\_\_\_\_\_\_\_\_\_** **成绩:\_\_\_\_\_\_\_\_\_\_**
**一、单项选择题(每题 2 分,共 30 分)**
( ) 1. 所有 C++ 程序的起点(程序的入口)是?
A. `void main()` B. `int mian()` C. `int main()` D. `main()`
( ) 2. `cout` 是C++中用于输出的对象,它位于哪个头文件中?
A. `<cmath>` B. `<string>` C. `<iostream>` D. `<cstdio>`
( ) 3. 表达式 `15 % 4` 的计算结果是?
A. 3.75 B. 3 C. 11 D. 4
( ) 4. 在C++中,哪种数据类型最适合用来存储一个人的精确身高,如“1.75米”?
A. `int` B. `double` C. `char` D. `bool`
( ) 5. 表达式 `15 / 4` 的计算结果是?
A. 3.75 B. 4 C. 3 D. 2
( ) 6. 表达式 `cout << ! (10 > 5)` 的输出结果是?
A. 1 B. 0 C. `true` D. `false`
( ) 7. 要判断一个年份 `year` 能被4整除,`if` 语句的条件应该写成?
A. `if (year / 4 == 0)` B. `if (year % 4 == 0)`
C. `if (year % 4 = 0)` D. `if (year * 4 == 0)`
( ) 8. 要判断一个数 `x` 是否“大于10并且小于20”,正确的表达式是?
A. `x > 10 || x < 20` B. `10 < x < 20`
C. `x > 10 && x < 20` D. `x >= 10 && x <= 20`
( ) 9. 如果 `bool is_ok = true;`,下面哪个 `if` 条件判断最终为真?
A. `if (!is_ok)` B. `if (is_ok == false)`
C. `if (is_ok && false)` D. `if (is_ok || true)`
( ) 10. `if-else` 结构用于解决哪种逻辑问题?
A. 顺序执行 B. 二选一 C. 多次重复 D. 单向判断
( ) 11. 下列哪个是 C++ 中的合法变量名?
A. `double` B. `2things` C. `my_name` D. `my-name`
( ) 12. 若有定义 `double x = 10; int y = 4;`,则表达式 `x / y` 的值是?
A. 2 B. 2.0 C. 2.5 D. 3
( ) 13. 要在程序中使用 `cin` 和 `cout`,必须在写上 `using namespace` __\_\_\_\_\___;
A. `std` B. `main` C. `iostream` D. `cpp`
( ) 14. 已知字符 `'B'` 的ASCII码是 66,那么字符 `'D'` 的ASCII码是?
A. 67 B. 68 C. 69 D. 70
( ) 15. 在 `if (x = 10)` 这个条件中,会发生什么?
A. 判断 `x` 是否等于10
B. 将10赋值给`x`,并且条件判断为真
C. 将10赋值给`x`,并且条件判断为假
D. 代码会出现编译错误
**二、判断题(每题 2 分,共 12 分,对的打√,错的打×)**
( ) 1. `cin` 语句可以一次性读取多个用空格隔开的数据。
( ) 2. 在C++中,`if` 语句后面的 `{}` 大括号,如果里面只有一条语句,从语法上可以省略不写大括号。
( ) 3. 表达式 `true && false` 的结果是 `true`。
( ) 4. `int a = 3.14;` 这行代码会导致编译错误,程序无法运行。
( ) 5. 变量在定义时可以不进行初始化(赋值)。
( ) 6. `if (score < 60)` 和 `if (!(score >= 60))` 这两个条件在逻辑上是等价的。
**三、填空题(每空 2 分,共 16 分)**
1. C++ 中用于单行注释的符号是 \_\_\_\_\_\_\_\_\_,注释\_\_\_\_\_\_\_\_\_ (填:会 / 不会) 影响程序的运行。
2. 若 `int a = 5, b = 2;`,则 `cout << a / b;` 的输出结果是 \_\_\_\_\_\_\_\_\_\_。
3. 逻辑运算符“并且”的符号是 \_\_\_\_\_\_\_\_\_\_,“或者”的符号是 \_\_\_\_\_\_\_\_\_\_。
4. 需要定义一个整数类型变量 `MAX_NUM` 并赋值为 100,其 C++ 语句是:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
5. 如果 `bool a = true, b = false;`,那么表达式 `a && !b` 的结果是\_\_\_\_\_\_\_\_\_\_。
**四、代码阅读与分析题(每题 3 分,共 12 分)**
请直接在代码下方的横线处写出代码运行后的输出结果(如果程序没有任何输出,则写“无输出”)。
1. **算术运算**
```cpp
int main() {
int x = 20;
x = x - 5;
x = x % 6;
cout << x << endl;
return 0;
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_
2. **字符与整数**
```cpp
int main() {
char c1 = 'd'; // 提示: 'd'的ASCII码是100
int num = c1 - 2;
char c2 = num;
cout << c2 << endl;
return 0;
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_
3. **条件判断**
```cpp
int main() {
int temp = 30;
if (temp > 28) {
cout << "有点热" << endl;
} else {
cout << "天气舒适" << endl;
}
return 0;
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_\_\_
4. **逻辑组合判断**
```cpp
int main() {
int math = 95, english = 88;
if (math >= 90 || english >= 90) {
cout << "可以吃大餐" << endl;
}
return 0;
}
```
输出结果:\_\_\_\_\_\_\_\_\_\_\_\_
**五、程序填空题(无特殊说明的情况下每空 3 分,共 30 分)**
1. **题目:秒数转换**
要求:输入一个总秒数 `total_seconds`,将其转换为 `小时:分钟:秒` 的格式并输出。例如,输入 `3661`,应计算出是 `1` 小时 `1` 分钟 `1` 秒。
```cpp
int main() {
int total_seconds;
cout << "请输入总秒数: ";
// 1. 从键盘输入总秒数(1分)
______________________________;
// 2. 从输入的总秒数来计算总秒数中有多少个小时数 (提示: 1小时=3600秒)
int hours = __________________________________________;
// 3. 计算剩下的分钟数 (提示: 需要求出除去小时后剩下的秒数能构成多少分钟)
int minutes = __________________________________________;
// 4. 计算剩下的的秒数
int seconds = __________________________________________;
cout << hours << "小时 " << minutes << "分钟 " << seconds << "秒";
return 0;
}
```
2. **题目:登录验证**
要求:输入两个整数 `input_id` 和 `input_code`。判断输入的ID是否等于 `1001` **并且** 输入的密码是否等于 `123456`。如果都正确,输出"Success",否则输出"Failed"。
```cpp
int main() {
int input_id, input_code;
cout << "请输入ID和密码: ";
// 5. 输入ID和密码(1分)
________________________;
// 6. 定义正确的ID和密码作为常量
const int ID = 1001;
const int Code = 123456;
// 7. 使用合适的 if 结构判断输入的ID和密码是否都正确。
if (___________________________________________) {
// 8. 如果都正确,输出 "Success"(1分)
_______________________________;
} else {
cout << "Login Failed" << endl;
}
return 0;
}
```
3. **题目:俱乐部入场资格**
要求:输入一个人的年龄 `age` 和他是否是会员 `is_member`(`1`代表是,`0`代表不是)。根据以下复杂规则判断他能否入场(如果允许入场,输出"Allowed",不允许入场,输出"Denied"。):
- **对于成年人 (年龄 >= 18):**
- 如果该成年人是会员,则允许入场。
- 如果不是会员,那只有年龄在25岁及以下(age <= 25)的“青年”才被允许入场,否则拒绝入场。
- **对于未成年人 (年龄 < 18):**
- 只有是会员的情况下才允许入场,否则一律拒绝入场。
```cpp
int main() {
int age;
bool is_member;
cout << "请输入年龄 和 是否是会员(1/0): ";
cin >> age >> is_member;
// 9. 请自行使用合适的 if 结构判断输入的年龄和会员情况是否可以参加活动,根据题意输出"Allowed"或输出"Denied"。(本大题共15分,按完成度与步骤给分,请将完整的判断逻辑写在下方,本题答案不唯一,代码实现能达到题目要求即可)
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
return 0;
}
```
@@ -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;
}
```
@@ -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;
}
```