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,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;
}
```