GESP 2024年12月认证 C++ 2级真题
一、单选题(每题 2 分,共 30 分)
👉 点击查看答案
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
答案 | C | A | D | B | D | B | C | C | D | A | A | D | B | D | C |
-
2024 年诺贝尔物理学奖得主的主要研究方向是( )。
- A. 天体物理
- B. 流体力学
- C. 人工智能
- D. 量子理论
-
计算机系统中存储的基本单位“B”表示( )。
- A. Byte
- B. Block
- C. Bulk
- D. Bit
-
C++ 表达式
cout << (3 + 3 % 3 * 2 - 1)
的输出值是( )。- A. -1
- B. 4
- C. 56
- D. 2
-
执行以下代码的输出是( )。
for (int i = 0; i < 10; i++) printf("%d", i);
- A. 123456789
- B. 0123456789
- C. 12345678910
-
关于代码的正确说法是( )。
int tnt; for (int i = 0; i < 10; i++) tnt += i; cout << tnt;
- A. 输出 1-10 的和(含 10)
- B. 输出 1-10 的和(不含 10)
- C. 输出 0-10 的和(不含 10)
- D. 输出不确定的值
-
代码执行后输出的
i
是( )。int i; for (i = 1; i < 10; i++) if (i % 2) continue; else break; cout << i;
- A. 1
- B. 2
- C. 9
- D. 10
-
代码执行后输出是( )。
for (i = 0; i < 10; i++) { if (i % 3) continue; printf("0#"); } if (i >= 10) printf("1#");
- A.
0#0#0#0#0#0#0#
- B.
0#0#0#0#0#
- C.
0#0#0#0#
- A.
-
输出能被 7 整除但不能被 3 整除的数,不能填入的条件是( )。
if (______) cout << i << endl;
- A.
i % 7 == 0 && i % 3 != 0
- B.
!(i % 7) && i % 3 != 0
- C.
i % 7 && i % 3
- D.
i % 7 == 0 && !(i % 3 == 0)
- A.
-
求正整数各位数字之和,不应填入的代码是( )。
while (N != 0) { ______ N /= 10; }
- A.
tnt = tnt + N % 10
- B.
tnt += N % 10
- C.
tnt = N % 10 + tnt
- D.
tnt = N % 10
- A.
-
执行以下代码的输出是( )。
for (i = 0; i < 5; i++) for (j = 0; j < i; j++) cout << j;
- A.
0010120123
- B.
01012012301234
- C.
001012012301234
- D.
01012012301234012345
- A.
-
关于九九乘法表代码的错误说法是( )。
if (Lie * Hang > 9) printf("%d=%d=%d ", Lie, Hang, Lie*Hang); else printf("%d=%d=%d ", Lie, Hang, Lie*Hang);
- A. 将换行符
printf("\n")
移到 L2 行效果相同 - B. 将
printf("\n")
改为printf("%c", '\n')
效果相同 - C. 将
Lie * Hang > 9
改为Lie * Hang >= 10
效果相同 - D. 将
Lie * Hang > 9
改为Hang * Lie > 9
效果相同
- A. 将换行符
-
不能实现阶乘和的代码选项是( )。
for (int i = 1; i < N + 1; i++) { // 填入代码 }
- A.
nowNum *= i; tnt += nowNum;
- B.
nowNum = nowNum * i; tnt = tnt + nowNum;
- C.
nowNum *= i; tnt = nowNum + tnt;
- D. (未提供)
- A.
-
输出孪生素数的代码应填入( )。
for (int i = N; i < ______; i++) if (isPrime(i) && isPrime(i + 2)) printf("%d %d\n", i, i + 2);
- A.
M - 2
- B.
M - 1
- C.
M
- D.
M + 1
- A.
-
输出特定图形的空格和星号数量应填入( )。
for (j = 0; j < ______; j++) // 空格 for (k = 0; k < ______; k++) // 星号
- A.
height - i
和2 * i
- B.
height
和2 * i
- C.
height - i
和2 * i + 1
- D.
height - i - 1
和2 * i + 1
- A.
-
输出 30 时不能填入的代码是( )。
int a = 10, b = 20, c = 30; cout << ______ << endl;
- A.
max(max(a, b), c)
- B.
min(a + b, c)
- C.
sqrt(a + b + c)
- D.
(a + b + c) / 2
- A.
二、判断题(每题 2 分,共 20 分)
👉 点击查看答案
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
答案 | √ | √ | √ | × | × | √ | √ | × | × | √ |
- 在 Windows 中,复制文件的操作是
Ctrl+C
后Ctrl+V
。( ) cout << (N - N / 10 * 10)
可获取 N 的个位数。( )cout << (10 <= N <= 12)
在 N=12 时输出 1。( )int(sqrt(N)) * int(sqrt(N)) == N
为真说明 N 是完全平方数。( )printf("%%a=%%b-%d", a*b);
输出2*3=6
。( )- 变量名
_
不符合 C++ 命名规范。( ) - 循环中的
break
会导致输出 0。( ) - 代码
for (i=8; i>2; i=2)
输出 18 行“OK”。( ) - 将
i=1
改为i=0
后输出结果相同。( ) - for 循环和 while 循环的求和代码结果相同。( )
三、编程题(每题 25 分,共 50 分)
编程题 1:寻找数字
题目描述
判断正整数 ( a ) 是否存在 ( b ) 满足 ( a = b^4 ),若存在输出 ( b ),否则输出 -1
。
输入格式
- 第一行:测试组数 ( t )
- 每组数据:一个正整数 ( a )
输出格式
每组数据输出一行结果。
样例输入
3
16
81
10
样例输出
2
3
-1
参考程序
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int a;
cin >> a;
int b = (int)(sqrt(sqrt(a)));
if (b * b * b * b == a)
cout << b << endl;
else
cout << -1 << endl;
}
return 0;
}
编程题 2:数位和
题目描述
求多个正整数的数位和最大值。
输入格式
- 第一行:正整数个数 ( n )
- 之后 ( n ) 行:每个正整数
输出格式
输出最大数位和。
样例输入
3
16
81
10
样例输出
9
参考程序
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
int n;
cin >> n;
int max_sum = 0;
while (n--) {
ll tmp;
cin >> tmp;
int sum = 0;
while (tmp > 0) {
sum += tmp % 10;
tmp /= 10;
}
max_sum = max(max_sum, sum);
}
cout << max_sum << endl;
return 0;
}