#G2503C2A. [GESP202503 二级] 客观题
[GESP202503 二级] 客观题
一、单项选择题(共 15 题,每题 2 分,共计 30 分;每题有且仅有一个正确选项)
- 2025 年春节有两件轰动全球的事件,一个是 DeepSeek 横空出世,另一个是贺岁片《哪吒 2》票房惊人,入了全球票房榜。下面关于 DeepSeek 与《哪吒 2》的描述成立的是( )。
{{ select(1) }}
- 《哪吒 2》是一款新型操作系统
- DeepSeek 是深海钻探软件
- 《哪吒 2》可以生成新的软件
- DeepSeek 可以根据《哪吒 2》的场景生成剧情脚本
- 对整型变量 N,如果它能够同时被 3 和 5 整除,则输出 N 是含有至少两个质因数。如果用流程图来描述处理过程,则输出语句应该在哪种图形框中( )。
{{ select(2) }}
- 圆形框
- 椭圆形框
- 平行四边形框
- 菱形框
- 下列 C++ 代码执行,其输出是( )。
int a = 3, b = 4;
a == b;
b == a;
cout << a << ' ' << b << endl;
{{ select(3) }}
- 3 4
- 3 3
- 4 4
- 4 3
- 求三色彩球的颜色。有无限个红 (Red) 绿 (Green) 蓝 (Blue) 三种彩球排成一行,每组先 5 个红色球,随后 3 个绿色球,最后 2 个蓝色球。每个球都有编号,从左到右依次为 1, 2, 3… 。输入整数代表编号,求该编号球的颜色。下面 C++ 代码实现,正确说法是( )。
int N, remainder;
cin >> N;
remainder = N % 10; // remainder 变量保存余数
if ((1 <= remainder) && (remainder <= 5))
cout << "Red";
else if ((6 <= remainder) && (remainder <= 8))
cout << "Green";
else if ((remainder == 9) || (remainder == 0))
cout << "Blue";
{{ select(4) }}
- 将
else if ((remainder == 9) || (remainder == 0))
改为else
效果相同 - 将
((1 <= remainder) && (remainder<= 5))
改为(remainder <= 5)
效果相同 else if ((6 <= remainder) && (remainder <= 8))
写法错误,应改为else if (6 <= remainder <= 8)
- 根据题意
remainder = N % 10
应改为remainder = N / 10
- 下列 C++ 代码执行后其输出是( )。
int tnt = 0;
for (int i = 0; i < 10; i++)
if (i % 3)
tnt += 1;
else
tnt += 2;
cout << tnt;
{{ select(5) }}
- 18
- 17
- 16
- 14
- 下列 C++ 代码执行后输出是( )。
int i;
for (i = 10; i > 0; i -= 2)
break;
cout << i;
{{ select(6) }}
- 10
- 8
- 0
- 因为循环执行时会执行 break 语句而终止循环,所以 i 的值不确定
- 下列 C++ 代码执行后输出是( )。
int i;
for (i = 0; i < 10; i++){
if (i % 3 == 0)
continue;
cout << "0" << "#";
}
if (i >= 10)
cout << "1" << "#";
{{ select(7) }}
- 0#0#0#0#0#0#
- 0#0#0#0#0#0#0#1#
- 0#0#0#0#1#
- 0#0#0#0#0#0#1#
- 下列 C++ 代码执行后的输出是( )。
int i, j;
for (i = 0; i < 5; i++)
for (j = i; j > 0; j -= 1)
printf("%d-", j);
{{ select(8) }}
- 1-2-1-3-2-1-4-3-2-1-
- 1-2-1-3-2-1-4-3-2-1
- 0-0-1-0-1-2-0-1-2-3-
- 0-0-1-0-1-2-0-1-2-3
- 下列 C++ 代码执行后,将输出能被 2 整除且除以 7 余数为 2 的数。下列选项不能实现的是( )。
{{ select(9) }}
((i % 2 == 0) && (i % 7 == 2))
((!(i % 2)) && (i % 7 == 2))
((!(i % 2)) && (!(i % 7)))
((i % 2 != 1) && (i % 7 == 2))
- 下列 C++ 代码用于求 1 到 N 之间正整数中含有 3 的数的个数,例如 123 和 32 都是符合条件的数。则前后两处横线应填入代码分别是( )。
int i, j;
int cnt = 0, N;
cout << "请输入正整数 N:";
cin >> N;
for (i = 1; (j = i) < N; i++)
while (j != 0)
if (j % 10 == 3){
cnt += 1;
__________;
}
else
__________;
cout << cnt << " ";
{{ select(10) }}
- continue j /= 10
- break j /= 10
- continue j %= 10
- break j %= 10
- 在数学中 $N!$ 表示 N 的阶乘,即 1 到 N 的乘积,如 ,且 。下面的两段 C++ 代码用于求 1 到 N 的阶乘之和,如 N 为 3,则结果是 9 ()。选项中的说法正确的是( )。
// 实现 1
int i, N;
cin >> N;
int tnt = 0, last = 1;
for (i = 1; i < N + 1; i++){
last *= i;
tnt += last;
}
cout << tnt << endl;
// 实现 2
int i, N;
cin >> N;
int tnt = 0, tmp;
for (i = 1; i < N + 1; i++){
tmp = 1;
for (int j = 1; j < i + 1; j++)
tmp *= j;
tnt += tmp;
}
cout << tnt << endl;
{{ select(11) }}
- 虽然实现 1 的代码短小,但效率并不高
- 实现 2 的代码效率更高,且更易于理解
- 实现 1 因为应用了前项计算结果,计算量更小,因此效率高
- 两种实现,效率几乎一致
- 哥德巴赫猜想指大于 2 的偶数都可以分解为两个质数之和。下面代码用于验证 4–1000 之内的偶数能否分解为两个质数之和;已知
isPrime()
可判断正整数 N 是否为质数并返回 bool 值。对该段代码,下列说法错误的是( )。
for (i = 4; i < 1000; i += 2)
for (j = 2; j < i; j++)
if (isPrime(j) && isPrime(i - j)){
printf("%d=%d+%d\n", i, j, i - j);
break;
}
{{ select(12) }}
- 将
isPrime(j) && isPrime(i - j)
改为isPrime(j) == true && isPrime(i - j) == true
效果相同 - 代码执行后,输出的一对质数,一定是小的数在前
- 即便将外层循环中 i 的上界 1000 改为很大的整数,也不能说从数学上证明了哥德巴赫猜想
- 根据题意,
break
语句应该移到 if 语句块之外
- 已知 C++ 代码和执行后的期望输出如下,相关说法正确的是( )。
int i, j;
int last, N;
cout << "请输入层数 N:";
cin >> N;
last = 1;
for (i = 1; i < N; i++){
for (j = 1; j < i + 1; j++){ // L1
if (last > 9)
last = 1;
cout << last << " ";
last += 1;
}
printf("\n");
}
期望示例(N = 10):
1
2 3
4 5 6
7 8 9 1
2 3 4 5 6
7 8 9 1 2 3
4 5 6 7 8 9 1
2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
{{ select(13) }}
- 倒数第二行的
printf("\n")
有错,应改为cout << endl;
,printf()
不能输出换行 last += 1
改为last = last + 1
执行效果相同- 代码中 L1 标记行的
j < i + 1
应改为j < i
- 外层 for 循环前的
last = 1
改为last = 0
执行效果相同
- 在 C++ 中,( )最适合填入横线处连续 5 次正确生成 1 到 10 之间的随机整数?
for (int i = 0; i < 5; i++)
__________________;
{{ select(14) }}
rand() % 11
rand() % 10
rand() % 10 + 1
rand() % 9 + 1
- 在 C++ 中,如果 a 和 b 均为 float 类型的变量,当两者相差足够小(如 0.000001)即可视作相等;例如 2.2345676 和 2.2345677 就可视作相等。下列哪个表达式能正确判断“a 等于 b”( )。
{{ select(15) }}
((b - a) < 0.000001)
((b - a) <= 0.000001)
(abs(b - a) <= 0.000001)
(sqrt(b - a) <= 0.000001)
二、判断题(共 10 题,每题 2 分,共计 20 分)
- C++、Python 都是高级编程语言,它们的每条语句最终都要通过机器指令来完成。 {{ select(16) }}
- 正确
- 错误
- 在 C++ 代码中,假设 N 为正整数,则 $N - N / 10 * 10$ 与 都可得到 N 的个位数。 {{ select(17) }}
- 正确
- 错误
- C++ 语句
cout << ((10 <= N <= 12) ? "true" : "false");
中,假设整型变量 N 为 12,则其输出为 true。原因是执行 $10 \le N$ 后其值为 true,true 与 12 相比仍然是 true。 {{ select(18) }}
- 正确
- 错误
- C++ 表达式
(sqrt(N) * sqrt(N)) == N
中,N 若为正整数,则表达式值为 true,相当于开平方后再平方仍为本身。 {{ select(19) }}
- 正确
- 错误
- 下列 C++ 代码执行后将输出 3*2=6。
int a = 2, b = 3;
a = a - b;
b = a + b;
a = b - a;
printf("%d*%d=%d\n", a, b, a * b);
{{ select(20) }}
- 正确
- 错误
- 下列 C++ 代码执行后将输出 10。
int i;
for (i = 0; i < 10; i++)
continue;
cout << i << endl;
{{ select(21) }}
- 正确
- 错误
- 下列 C++ 代码执行后将输出 1。
int i;
for (i = 1; i < 10; i++){
break;
continue;
}
cout << i << endl;
{{ select(22) }}
- 正确
- 错误
- 下列 C++ 代码执行后将输出 10 行 "OK"。
for (int i = 0; i < 5; i++)
for (int j = 0; j < i; j++)
printf("OK\n");
{{ select(23) }}
- 正确
- 错误
- 将下列 C++ 代码中的
i = 1
调整为i = 0
时,输出结果相同。
int tnt = 0;
for (int i = 1; i < 5; i++) // i = 1
tnt += i;
cout << tnt;
{{ select(24) }}
- 正确
- 错误
- 下列 C++ 代码执行后将输出 0123。
for (i = 0; i < 5; i++)
for (i = 0; i < i; i++)
continue;
printf("%d\n", i);
{{ select(25) }}
- 正确
- 错误