5296:[GESP202603二级] 客观题
文件提交:无需freopen
内存限制:128 MB
时间限制:1.000 S
评测方式:文本裁判
金币值:
命题人:
提交:246
解决:0
题目描述
## 一、单选题(每题 2 分,共 30 分)
**第 1 题** $2026$ 年春节联欢晚会上一个武术表演节目《武 $BOT$》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备 ( )
- 检测重心的重力传感器
- 预装的 $AI$ 算法程序
- 接收动作指令的遥控器
- 拍摄其他机器人的摄像头
**第 2 题** 下面代码用来找出输入的 $N$ 个正整数中最大的一个。如果将代码段用流程图来表示,则 `L1` 标记的代码行应
该使用的图形是 ( )
```cpp
01 int N, max=0, val;
02 cin >> N;
03
04 while(N){
05 cin >> val;
06 if(val > max) // L1
07 max = val;
08 N--;
09 }
10
11 cout << max;
```
- 圆形框
- 椭圆形框
- 平行四边形框
- 菱形框
**第 3 题** 下面 `C++` 代码可以执行,有关说法正确的是 ( )
```cpp
01 double PI = 3.1415926;
02 cout << (PI);
```
- 为了方便初学者,`cout<(PI)` 和`cout<<(pi)` 效果相同,即变量的大小写不敏感
- `cout<<(PI)` 修改为 `cout<<(Pi)` 能正常执行
- 不能用 $PI$ 做变量名,因为要保存圆周率这个常量
- 将程序中全部 $PI$ 都改写为 $Pai$,将能正常执行,不会报错
**第 4 题** 下面选择项中,与 `C++` 表达式 `!(x>5 &&y<=10)` 等价的是 ( )
- `x <= 5 && y > 10`
- `x > 5 || y <= 10`
- `x <= 5 || y > 10`
- `!x > 5 && !y <= 10`
**第 5 题** 某同学执行 `C++` 代码`cout<<((0.1+0.2)==0.3)` 时输出 $0$,下面最可能的原因是 ( )
- `C++` 的 `+` 运算符在处理小数时存在`bug`
- `0.1`、`0.2` 和 `0.3` 在计算机中无法用二进制浮点数精确表示,导致 `0.1+0.2` 的结果与 `0.3` 存在微小误差
- `==` 运算符不能用于比较浮点数,只能用于整数
- 因为 `0.1+0.2` 的数学结果不等于 `0.3`
**第 6 题** 下面的 `C++` 代码段执行后其输出是 ( )
```cpp
01 tnt = 0;
02 for (int i = 0; i < 5; i++){
03 for (int j = 0; j < i; j++)
04 tnt += 1;
05 cout << tnt << "#";
06 }
07 cout << tnt;
```
- `0#1#3#6#10#10`
- `1#2#3#4#5#6#7#8#9#10#10`
- `10#10`
- `10`
**第 7 题** 下面的 `C++` 代码执行之后的输出是 ( )
```cpp
01 for ( int i = -2; i < 2; i++)
02 if (not i % 3)
03 cout << i << "#";
```
- `0#`
- `-2#-1#1#`
- `-1#0#`
- `-2#0#1#`
**第 8 题** 下面的 `C++` 代码执行后其输出是 ( )
```cpp
01 int cnt = 0, i, j;
02 for (i =1; i < 5; i++){
03 for (j =0; j < i; j++)
04 cout << j << "#";
05 break;
06 }
07 if(i >= 5)
08 cout << (i*j);
```
- `0#0#1#0#1#2#0#1#2#3#12`
- `0#0#1#0#1#2#0#1#2#3#`
- `0#`
- `1#`
**第 9 题** 下面 `C++` 代码执行后其输出是 ( )
```cpp
01 int count = 0;
02 for (int i = 1; i < 4; i++)
03 for (int j = 1; j < 5; j++){
04 if (j == 3)
05 continue;
06 if (i == 2)
07 break;
08 count += 1;
09 }
10 cout << (count);
```
- $2$
- $4$
- $6$
- $8$
**第 10 题** 下面 $4$ 个选项中,与下面`C++` 代码段具有相同效果的是 ( )
```cpp
01 i = 0;
02 while (i < 5){
03 cout << i;
04 i += 1;
05 }
```
- ```cpp
01 for (i = 0; i < 5; i++)
02 cout << i;
```
- ```cpp
01 for (i = 1; i < 5; i++)
02 cout << i;
```
- ```cpp
01 for (i = 0; i < 6; i++)
02 cout << i;
```
- ```cpp
01 for (i = 1; i < 6; i++)
02 cout << i;
```
**第 11 题** 下面 `C++` 代码执行后输出是 ( )
```cpp
01 int n = 10;
02 while (n > 0){
03 n -= 1;
04 if (n % 3 == 0)
05 continue;
06 if (n == 5)
07 break;
08 }
09 cout << n;
```
- $0$
- $5$
- $6$
- $7$
**第 12 题** 下面 `C++` 代码段执行后,其输出是 ( )
```cpp
01 int i, j, cnt;
02 cnt = 0;
03 for (i = 0; i < 5; i++){
04 i = -i;
05 for (j = i; j < -i; j++)
06 cnt += 1;
07 i = -i;
08 }
09 cout << cnt;
```
- $5$
- $15$
- $20$
- $30$
**第 13 题** 某学校图书馆的借阅卡号由 $6$ 位整数组成。前 $5$ 位是顺序编号,第$6$ 位是校验码,用于防止输错。校验码规则如下:将前 $5$ 位数字相加,然后除以 $10$ 的余数,就是第 $6$ 位数字。如卡号$123455$ 的前 $5$ 位之和为 $15$,除以$10$ 的余数是 $5$,故第 $6$ 位为 $5$。下面的 `C++` 代码段用于判断卡号是否正确,横线处应填入的代码是 ( )
```cpp
01 cout << "请输入卡号:";
02 cin >> N;
03 order_num = N / 10; // 获得前5位顺序号,假设录入一定为6位正整数
04 check_num = N % 10; // 获得最后一位
05
06 tnt = 0; // 保存前5位之和
07 for (i = 0; i < 5; i++){
08 ________________;
09 order_num /= 10;
10 }
11
12 if (__________________)
13 cout << "符合校验规则";
14 else
15 cout << "不符合校验规则";
```
- ```cpp
01 tnt += order_num / 10
02 tnt / 10 == check_num
```
- ```cpp
01 tnt += order_num % 10
02 tnt % 10 == check_num
```
- ```cpp
01 tnt = order_num / 10 + tnt
02 tnt % 10 == check_num
```
- ```cpp
01 tnt = order_num % 10
02 tnt / 10 == check_num
```
**第 14 题** 下面的 `C++` 代码段正常执行后其输出的数字图形是 ( )
```cpp
01 for (i = 1; i < 5; i++){
02 for (j = 1; j < i+1; j++)
03 cout << j;
04 cout << endl;
05 }
```
- ```cpp
1
12
123
1234
```
- ```cpp
1
22
333
4444
```
- ```cpp
1
21
321
4321
```
- ```cpp
4
34
234
1234
```
**第 15 题** 某学校举办“校园演讲比赛”,每位选手由 $8$ 位评委打分(分数为 $0 \sim 10$ 的整数),且每位评委必须打分。计分规则:若至少有 $5$ 位评委给出大于等于 $6$ 分,则成绩有效,最终得分为所有 $8$ 位评委的总分;如给出低于 $6$ 分的评委数量超过 $5$ 位,则记为 $0$ 分。以下核心程序段依次输入 $8$ 个分数,并计算最终得分。横线处应填入 ( )
```cpp
01 total_score = 0; // 所有分数之和
02 high_count = 0; // ≥6分的评委数量
03
04 for (i = 0; i < 8; i++){
05 cout << "请输入评委分数: ";
06 cin >> score;
07 ____________________;
08 if (score >= 6)
09 ________________;
10 }
11
12 if (high_count >= 5)
13 cout << total_score;
14 else
15 cout << 0;
```
- ```cpp
01 total_score += score
02 high_count += 1
```
- ```cpp
01 total_score += score
02 high_count += score
```
- ```cpp
01 high_count += 1
02 total_score += score
```
- ```cpp
01 total_score *= score
02 high_count *= 1
```
## 二、判断题(每题 2 分,共 20 分)
**第 1 题** 小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息,那么可以推测这块手表中装有一款特定操作系统。
- 正确
- 错误
**第 2 题** `C++` 语句 `cout<<('4’%'2'=='2'*'2'%2);` 执行后的输出是 $1$。
- 正确
- 错误
**第 3 题** 下面的 `C++` 代码段执行时将报错,因为 $10$ 是整数类型,$a$ 是布尔类型。由于类型不同,不能进行加法运
算。
```cpp
01 bool a = true;
02 cout << (10 + a);
```
- 正确
- 错误
**第 4 题** 下面 `C++` 代码段执行后将输出 `0-3-6-9-`。
```cpp
01 for (int i = 0; i < 10; i++){
02 if (i % 3)
03 continue;
04 cout << i << "-";
05 }
```
- 正确
- 错误
**第 5 题** 执行下面的 `C++` 代码段,如果 $N$ 是基本数据类型,则语句`cout<<(N);` 将被执行 $0$ 次或无数次(即死循环)。
```cpp
01 cin >> N;
02 while (N)
03 cout << (N);
```
- 正确
- 错误
**第 6 题** 下面的 `C++` 代码段可正常执行,删除 `continue` 不影响执行效果。
```cpp
01 for (i = 0; i < 10; i++){
02 i += 1;
03 continue;
04 }
05 cout << (i);
```
- 正确
- 错误
**第 7 题** 下面的 `C++` 代码段用于计算 $1$ 到 $N$ 之间且包含 $N$ 的所有数字中含有的 $3$ 的个数,如 $1$ 到 $40$ 含有 $14$ 个 $3$,而 $1$ 到 $20$ 则只含有 $2$ 个 $3$。如果将 `while (i!= 0)`改为 `while(abs(i))`,则执行结果相同。
```cpp
01 cout << "请输入正整数N:";
02 cin >> N;
03 cnt = 0; // 保存3的个数
04 for (k = 1; k < N + 1; k++){
05 i = k;
06 while (i != 0){
07 if (i % 10 == 3)
08 cnt += 1;
09 i /= 10;
10 }
11 }
12 cout << cnt;
```
- 正确
- 错误
**第 8 题** 下面的 `C++` 代码段执行将不会有输出,因为内层循环 `j` 总是 $0$ 开始,`i*j%10 == 0` 将会被满足,执行`break`,故而 `i` 小于 $10$,不会满足`if` 判断条件。
```cpp
01 for (i = 1; i < 10; i++)
02 for (j = 0; j < i; j++)
03 if (i * j % 10 == 0)
04 break;
05 if(i >= 10)
06 cout << (i*j);
```
- 正确
- 错误
**第 9 题** 下列 `C++` 代码执行后将输出 `1#4#9#16#16`。
```cpp
01 cnt = 0;
02 for (i = 1; i < 5; i++){
03 for (j = 1; j < i + 1; j++)
04 if (i * j % 10 == 0)
05 break;
06 if (j >= i + 1)
07 cout << (i * j) << "#";
08 }
09 if(i >= 5)
10 cout << (i * j);
```
- 正确
- 错误
**第 10 题** 下面 `C++` 代码执行后输出如左图所示,将 `"%d"` 修改为 `"%3d"` 即可实现右图输出。
```cpp
/*
// 左图 // 右图
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18 2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27 3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36 4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45 5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54 6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63 7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72 8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81 9 18 27 36 45 54 63 72 81
*/
01 for (i = 1; i < 10; i++){
02 for (j = 1; j < 10; j++)
03 printf(" %d", i*j);
04 printf("\n");
05 }
```
- 正确
- 错误