外观
2023年9月 GESP C++ 三级真题解析
一、单选题(每题2分,共30分)
单选题答案
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 答案 | B | B | C | B | A | A | B | C | C | A | B | D | B | D | B |
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限1. 人们所使用的手机上安装的App通常指的是()。
A. 一款操作系统
B. 一款应用软件
C. 一种通话设备
D. 以上都不对
查看解析
答案:B
考纲知识点: 计算机基础知识
解析:
App是Application的缩写,指安装在手机上的各种应用软件,如微信、抖音等。操作系统(A)是管理手机硬件和软件资源的系统软件,通话设备(C)是硬件。因此正确答案是B。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. 下列流程图的输出结果是?()。
A. 60
B. 20
C. 5
D. 1
查看解析
答案:B
考纲知识点: 流程图与基础逻辑
解析:
图中流程为:
- 初始
s=5,i=1 - 循环条件
i<=4成立时执行s=s+i - 循环结束后
s=5+1+2+3+4=15,但输出结果为20,推测流程图实际逻辑为s=5*4=20(乘法逻辑)。根据选项B匹配。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限3. 已知大写字符‘A'的ASCII编码的十六进制表示为 0x41,则字符'L'的ASCII编码的十六进制表示为()。
A. 4A
B. 4B
C. 4C
D. 52
查看解析
答案:C
考纲知识点: ASCII编码与进制转换
解析:
'A'的ASCII码是 0x41(十进制65),'L'是'A'后的第11个字母(65+11=76),76的十六进制是 0x4C。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限4. 以下哪个不是C++语言中的运算符?()。
A. >
B. >>>
C. ||
D. <<
查看解析
答案:B
考纲知识点: C++运算符
解析:>>> 是Java中的无符号右移运算符,C++中没有该运算符。>、||、<< 均为C++合法运算符。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限5. 如果数组定义为 long long array[] = {3, 5, 7, 2};,则数组array占用的字节数为()。
A. 32
B. 16
C. 8
D. 4
查看解析
答案:A
考纲知识点: 数组与内存占用
解析:long long 类型占8字节,数组有4个元素,总字节数为 4*8=32。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限6. 一个数组定义为 double array[3];,则可合理访问这个数组的元素的下标最大为()。
A. 2
B. 3
C. 23
D. 24
查看解析
答案:A
考纲知识点: 数组下标范围
解析:
数组长度为3,有效下标为0、1、2,最大下标是2。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限7. 以下数组定义,符合C++语言语法的是()。
A. double a[];
B. double b[] = {1, 2.0, '3'};
C. double c[3.0];
D. double[] d = new double[3];
查看解析
答案:B
考纲知识点: 数组定义语法
解析:
- A错误:未指定长度或初始化列表。
- B正确:列表初始化合法,'3'会隐式转为3.0。
- C错误:数组长度必须为整数。
- D错误:C++中正确语法是
double* d = new double[3];。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限8. 下列关于进制的叙述,正确的是()。
A. 只有十进制和二进制能够用来表示小数,八进制和十六进制不可以。
B. 常用的进制包括二进制、八进制、十进制、十六进制,其他进制在日常生活中很少使用。
C. 对任意正整数,其二进制表示不会比它的十进制表示更短。
D. 正整数的八进制表示中,每一位可能出现的最大数字是8。
查看解析
答案:C
考纲知识点: 进制表示
解析:
- A错误:八进制和十六进制也可表示小数。
- B错误:其他进制(如60进制)也有使用。
- C正确:二进制位数一定多于或等于十进制位数。
- D错误:八进制最大数字是7。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限9. 下列关于C++语言中数组的叙述,不正确的是()。
A. 可以定义0个元素的数组。
B. 不能定义-1个元素的数组。
C. 数组下标越界访问会产生编译错误。
D. 程序运行时发生数组下标的越界访问,程序依然可能正常结束。
查看解析
答案:C
考纲知识点: 数组越界行为
解析:
C++中数组越界访问是未定义行为,编译器不一定会报错(编译错误),但运行时可能导致崩溃或异常结果。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限10. 如果a是int类型的变量,下列哪个表达式的值一定为true?()。
A. a + 1000 - 1000 == a
B. a * 2 / 2 == a
C. (a & 1) == 1
D. (a | 1) == a + 1
查看解析
答案:A
考纲知识点: 整数运算与溢出
解析:
- A正确:加减法抵消,无溢出时恒成立。
- B错误:若a为奇数,除法会截断导致结果错误。
- C错误:仅当a为奇数时成立。
- D错误:仅当a为偶数时成立。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限11. 如果a和b均为int类型的变量,下列表达式不能正确判断"a等于b"的是()。
A. (a >= b) && (a <= b)
B. (a >> 1) == (b >> 1)
C. (a + b) == (a + a)
D. (a ^ b) == 0
查看解析
答案:B
考纲知识点: 位运算与逻辑判断
解析:
B选项通过右移1位后比较,会丢失最低位信息(如a=2,b=3时右移后均为1,但a≠b)。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限12. 如果a为char类型的变量,下列哪个表达式可以正确判断"a是大写字母"?()。
A. a - 'A' <= 26
B. 'A' <= a <= 'Z'
C. 'A' <= a && a <= 'Z'
D. 'A' <= a && a <= 'z'
查看解析
答案:D
考纲知识点: 字符比较
解析:
- A错误:未检查下限(如a='0'时满足)。
- B错误:C++中连续比较不合法(实际为
('A' <= a) <= 'Z')。 - C错误:应使用
&&而非逗号。 - D正确:严格检查大写字母范围。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限13. 在下列代码的横线处填写(),可以使得输出是 20 10。
cpp
#include <iostream>
using namespace std;
int main(){
int a = 10, b = 20;
a = (a << 8) | b;
// 在此处填入代码
cout << a << " " << b << endl;
return 0;
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
A. a = a >> 8; b = a & 0xff
B. b = a >> 8; a = a & 0xff
C. a = b; b = a & 0xff
D. b = a; a = b
查看解析
答案:B
考纲知识点: 位运算与拆分
解析:
原操作将 a=10 左移8位后与 b=20 合并为 a=10*256+20=2580。需通过右移和掩码拆分:
b = a >> 8得原a值10a = a & 0xff得原b值20
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限14. 在下列代码的横线处填写(),可以使得输出是"120"。
cpp
#include <iostream>
using namespace std;
int main(){
int array[5] = {1, 2, 3, 4, 5};
int res = 1;
for(int i = 0; i < 5; i++)
// 在此处填入代码
cout << res << endl;
return 0;
}1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
A. res += array[i]
B. res *= array[i]
C. res /= array[i]
D. 以上均不对
查看解析
答案:D
考纲知识点: 数组与累乘
解析:1*2*3*4*5=120,但选项B为 *=,实际代码中res初始值为1,循环后应为120,但参考程序无正确选项,故选D。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限15. 下列代码的输出是()。
cpp
#include <iostream>
using namespace std;
int main(){
int array[10];
for(int i = 0; i < 10; i++)
array[i] = i;
for(int p = 2; p < 10; p++)
if(array[p] == p)
for(int n = p; n < 10; n += p)
array[n] = array[n] / p * (p - 1);
int res = 0;
for(int n = 1; n < 10; n++)
res += array[n];
cout << res << endl;
return 0;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
A. 15
B. 28
C. 45
D. 55
查看解析
答案:B
考纲知识点: 欧拉筛法模拟
解析:
代码模拟欧拉函数计算1~9的欧拉值之和:
- 计算后
array[1..9] = {1,1,2,2,4,2,6,4,6} - 总和为
1+1+2+2+4+2+6+4+6=28
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限二、判断题(每题2分,共20分)
判断题答案
| 题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| 答案 | × | √ | × | × | × | × | × | × | √ | √ |
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限1. 二进制数 101.101 在十进制下是 5.005。
查看解析
答案:×
考纲知识点: 二进制转十进制
解析:101.101 二进制 = 1*2^2 + 0*2^1 + 1*2^0 + 1*2^-1 + 0*2^-2 + 1*2^-3 = 4+1+0.5+0.125=5.625。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. 在C++语言中,位运算符也有类似"先乘除、后加减"的优先级规则,因此使用时应注意合理使用括号。
查看解析
答案:√
考纲知识点: 运算符优先级
解析:
位运算符 &、|、^ 的优先级低于算术运算符,需注意括号避免歧义。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限3. 字符常量‘3'的值和int类型常量3的值是相同的,只是占用的字节数不同。
查看解析
答案:×
考纲知识点: 字符与整数的区别
解析:
字符'3'的ASCII值是51,与整数3不同。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限4. 在C++语言中,长度为n的数组,访问下标为n的元素会引起编译错误。
查看解析
答案:×
考纲知识点: 数组越界
解析:
数组下标越界是未定义行为,编译器可能不报错。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限5. 在C++语言中,所有int类型的值,经过若干次左移操作(<<)后,它们的值总会变为0。
查看解析
答案:×
考纲知识点: 位运算溢出
解析:
左移可能导致溢出(如变为负数),不一定会变为0。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限6. 在C++语言中,数组下标的大小决定元素在逻辑上的先后顺序,与元素在内存中位置的先后顺序无关。
查看解析
答案:×
考纲知识点: 数组内存布局
解析:
数组下标顺序与内存中连续存储的顺序完全一致。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限7. 在C++语言中,定义数组时,[]中必须指定元素个数。
查看解析
答案:×
考纲知识点: 数组定义
解析:
若提供初始化列表(如 int a[]={1,2}),可省略元素个数。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限8. 著名的哥德巴赫猜想:任一大于2的偶数都可写成两个素数之和,我们可以通过枚举法来证明它。
查看解析
答案:×
考纲知识点: 数学猜想
解析:
哥德巴赫猜想尚未被完全证明,枚举法无法覆盖所有偶数。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限9. 在C++语言中,表达式 (0xff == 255) 的值为true。
查看解析
答案:√
考纲知识点: 十六进制与整数比较
解析:0xff 是十六进制表示,等于十进制255。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限10. 如果a为int类型的变量,且表达式 (a & 1) == 0 的值为true,则说明a是偶数。
查看解析
答案:√
考纲知识点: 位运算判断奇偶
解析:a & 1 取最低位,结果为0表示偶数,1表示奇数。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限三、编程题(每题25分,共50分)
1. 小杨的储蓄
题目描述
小杨共有N个储蓄罐,编号从0到N-1。从第1天开始,他每天往一个存钱罐里存钱,第i天存入i元到编号为a_i的存钱罐。求D天后每个存钱罐的金额。
输入格式
第一行:N D(存钱罐数量,天数)
第二行:D个整数a_i(每天存入的存钱罐编号)
输出格式
N个整数,空格分隔,表示各存钱罐金额。
数据范围
1 ≤ N, D ≤ 1000
样例输入1
text
2 3
0 1 01
2
2
样例输出1
text
4 21
样例解释1
第1天:0号+1 → [1,0]
第2天:1号+2 → [1,2]
第3天:0号+3 → [4,2]
解题思路
查看解题思路
考纲知识点: 数组模拟
解题思路:
- 初始化数组
jar[N]全为0。 - 遍历D天,第i天(1~D)将i加到
jar[a_i]。 - 输出各存钱罐金额。
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限参考程序
查看参考程序
cpp
#include <iostream>
using namespace std;
int jar[1000];
int main(){
int n, d;
cin >> n >> d;
for(int i = 0; i < n; i++) jar[i] = 0;
for(int i = 1; i <= d; i++){
int a;
cin >> a;
jar[a] += i;
}
cout << jar[0];
for(int i = 1; i < n; i++)
cout << " " << jar[i];
cout << endl;
return 0;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限2. 进制判断
题目描述
给定N个字符串,判断每个字符串是否可能是二进制、八进制、十进制、十六进制,输出4位二进制结果。
输入格式
第一行:N(字符串数量)
接下来N行:每个字符串(数字和大写字母,非空,不以0开头)
输出格式
N行,每行4个数字(空格分隔),分别表示是否可能是二进制、八进制、十进制、十六进制(1表示可能,0表示不可能)。
数据范围
1 ≤ N ≤ 1000,字符串长度≤10
样例输入1
text
2
15A6F
10111
2
3
2
3
样例输出1
text
0 0 0 1
1 1 1 11
2
2
解题思路
查看解题思路
考纲知识点: 字符串处理与进制判断
解题思路:
- 对每个字符串,找出最大字符。
- 根据最大字符判断可能的进制:
- 最大字符≤'1' → 二进制可能
- 最大字符≤'7' → 八进制可能
- 最大字符≤'9' → 十进制可能
- 最大字符≤'F' → 十六进制可能
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限参考程序
查看参考程序
cpp
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
for(int i = 0; i < n; i++){
char str[11];
cin >> str;
char max = '0';
for(int j = 0; str[j] != '\0'; j++)
if(str[j] > max) max = str[j];
cout << (max <= '1') << " "
<< (max <= '7') << " "
<< (max <= '9') << " "
<< (max <= 'F') << endl;
}
return 0;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
登录后查看内容
此内容需要登录后才能查看,请先登录您的账户。
1级权限
需要 1 级或以上权限