GESP 客观题评测系统

2023-12-Level-1

2023-12-Level-1

试卷解析总览,可直接查看每题答案与解析。

单选题(每题 2 分)

1 题(单选题

以下C++不可以作为变量的名称的是()。

A.
CCF GESP
B.
ccfGESP
C.
CCFgesp
D.
CCF_GESP

正确答案A

解析详情

【答案】A

【考点】变量命名规则

【解析】 C++ 变量名命名规则: 1. 只能由字母、数字和下划线组成。 2. 第一个字符不能是数字。 3. 不能是 C++ 的关键字。 4. 区分大小写。 选项 A 中 "CCF GESP" 包含空格,不符合命名规则。

2 题(单选题

C++表达式 10 - 3 * (2 + 1) % 10 的值是()。

A.
0
B.
1
C.
2
D.
3

正确答案B

解析详情

【答案】B

【考点】算术运算符优先级

【解析】 计算步骤: 1. 括号优先:(2 + 1) = 3 2. 乘法和取模优先级相同,从左往右计算:3 * 3 = 9,然后 9 % 10 = 9 3. 减法:10 - 9 = 1 故表达式的值为 1。

3 题(单选题

假设现在是上午十点,求出N小时(正整数)后是第几天几时,如输入20小时则为第2天6点,如N输入4则为今天14点。为实现相应功能,应在横线处填写代码是()。

int N, dayX, hourX;
cin >> N;
dayX = ___ , hourX = ___ ;
if (dayX == 0)
    cout << "今天" << hourX << "点";
else
    cout << "第" << (dayX + 1) << "天" << hourX << "点";
A.
(10+N)%24(10 + N) \% 24,(10+N)/24(10 + N) / 24
B.
(10+N)/24(10 + N) / 24,(10+N)%24(10 + N) \% 24
C.
N%24N \% 24,N/24N / 24
D.
10/2410 / 24,10%2410 \% 24

正确答案B

解析详情

【答案】B

【考点】算术运算

【解析】 题干描述了上午十点过N小时后的日期和时间计算。dayX表示天数增加,hourX表示小时。初始是10点,N小时后总共是10+N小时。天数增加为 (10+N)/24,剩余小时为 (10+N)%24。选项B符合逻辑。

4 题(单选题

下面的程序用于判断N是否为偶数,横线处应填写代码是()。

cin >> N;
if ( ______ )
    cout << "偶数";
else
    cout << "奇数";
A.
N % 2 == 0
B.
N % 2 = 0
C.
N % 2
D.
N % 2 != 0

正确答案A

解析详情

【答案】A

【考点】分支结构

【解析】 判断 N 是否为偶数的条件是 `N % 2 == 0`。

5 题(单选题

下面对C++代码执行后输出的描述,正确的是()。

cin >> N;
cnt = 0;
for (int i = 1; i < N; i++)
    cnt += 1;
cout << cnt;
A.
如果输入的N是小于等于2整数,第5行将输出0。
B.
如果输入的N是大于等于2整数,第5行将输出N-1。
C.
如果输入的N是大于等于2整数,第5行将输出N。
D.
以上说法均不正确。

正确答案B

解析详情

【答案】B

【考点】循环执行次数分析

【解析】 循环 `for (int i = 1; i < N; i++)` 会从 1 运行到 N-1。如果 N >= 2,循环体将执行 N-1 次,从而 `cnt` 的值为 N-1。

6 题(单选题

下面C++代码执行后的输出是()。

cnt = 0;
for (int i = 1; i < 10; i++) {
    cnt += 1;
    i += 2;
}
cout << cnt;
A.
10
B.
9
C.
3
D.
1

正确答案C

解析详情

【答案】C

【考点】循环控制结构

【解析】 循环执行过程: 1. i=1, cnt=1, i 增加 2 变为 3。 2. 循环末尾 i++,i 变为 4。 3. i=4, cnt=2, i 增加 2 变为 6。 4. 循环末尾 i++,i 变为 7。 5. i=7, cnt=3, i 增加 2 变为 9。 6. 循环末尾 i++,i 变为 10。 此时 i < 10 不成立,循环结束。cnt 为 3。

7 题(单选题

下面 C++ 代码执行后的输出是()。

cnt = 0;
for(int i = 1; i < 20; i++) {
    if(i % 2)
        continue;
    else if(i % 3 == 0 && i % 5 == 0)
        break;
    cnt += i;
}
cout << cnt;
A.
90
B.
44
C.
20
D.
10

正确答案A

解析详情

【答案】A

【考点】循环结构、continue与break

【解析】 循环遍历 i 从 1 到 19: - 如果 i 是奇数 (i % 2),则 continue 跳过。 - 如果 i 同时被 3 和 5 整除 (i % 15 == 0),则 break 终止循环。由于 i < 20,只有 i=15 符合此条件,但 15 是奇数,会先触发 continue。 - 否则累加偶数 i 到 cnt:2, 4, 6, 8, 10, 12, 14, 16, 18。和为 90。

8 题(单选题

下面C++代码执行后的输出是()。

N = 10;
cnt = 0;
while(1) {
    if(N == 0) break;
    cnt += 1;
    N -= 2;
}
cout << cnt;
A.
11
B.
10
C.
5
D.
4

正确答案C

解析详情

【答案】C

【考点】while循环

【解析】 N 从 10 开始,每次减 2,直到为 0。cnt 记录减法的次数。10/2 = 5 次。

9 题(单选题

下面C++代码用于判断一个数是否为质数(素数),在横线处应填入代码是()。

cin >> N;
cnt = 0;
for (int i = 1; i < N + 1; i++)
    if (N % i == 0)
        ______;
if (cnt == 2)
    cout << N << "是质数。";
else
    cout << N << "不是质数。";
A.
cnt = 1
B.
cnt = 2
C.
cnt = + 1
D.
cnt += 1

正确答案D

解析详情

【答案】D

【考点】质数判定

【解析】 统计因子个数。从 1 遍历到 N,如果 i 能整除 N,则 cnt 加 1。最后如果 cnt 为 2,说明是质数。

10 题(单选题

对下面的代码,描述正确的是()。

#include <stdlib.h>

using namespace std;

int main() {
    int arr[] = {2,6,3,5,4,8,1,0,9,10};
    for(int i = 0;i < 10;i++)
        cout << arr[i] << " ";
    cout << i << endl;

    cout << endl;
    return 0;
}
A.
输出 2 6 3 5 4 8 1 0 9 10 10
B.
输出 2 6 3 5 4 8 1 0 9 9
C.
输出 2 6 3 5 4 8 1 0 9 10
D.
提示有编译错误

正确答案D

解析详情

【答案】D

【考点】变量作用域

【解析】 变量 i 在 for 循环内定义,其作用域仅限于该循环。在循环结束后尝试使用 i 会导致编译错误。

11 题(单选题

执行下面 C++ 代码后输出是()。

cnt = 0;
for (i = 10; i > 3; i -= 3)
    cnt = cnt + i;
cout << cnt;
A.
3
B.
21
C.
27
D.
49

正确答案B

解析详情

【答案】B

【考点】循环结构分析

【解析】 1. i = 10, cnt = 10 2. i = 7, cnt = 17 3. i = 4, cnt = 21 4. i = 1, 循环结束。输出 21。

12 题(单选题

定义变量 char c,下面对 c 赋值的语句,不符合语法的是()。

A.
c = (char)66;
B.
c = (char)(66);
C.
c = char(66);
D.
c = char 66;

正确答案D

解析详情

【答案】D

【考点】类型转换语法

【解析】 选项 D 语法错误,类型转换需要括号。

13 题(单选题

下图所示C++代码对大写字母 'A' 到 'Z' 分组,对每个字母输出所属的组号,那么输入 'C' 时将输出的组号是?( )。

char c;
while(1){
    cin >> c;
    if(c=='q') break;
    switch(c){
        case 'A': cout << "1"; break;
        case 'B': cout << "3";
        case 'C': cout << "3";
        case 'D': cout << "5"; break;
        case 'E': cout << "5"; break;
        default: cout << "9";
    }
    cout << endl;
}
A.
3
B.
3 5
C.
3 5 9
D.
以上都不对

正确答案B

解析详情

【答案】B

【考点】switch 贯穿

【解析】 输入为 'C',进入 `case 'C'` 输出 "3",由于无 `break`,贯穿执行 `case 'D'` 输出 "5" 后遇到 `break`。

14 题(单选题

某公司新出了一款无人驾驶的小汽车,通过声控智能驾驶系统,乘客只要告诉汽车目的地,车子就能自动选择一条优化路线,告诉乘客后驶达那里。请问下面哪项不是驾驶系统完成选路所必须的。()

A.
麦克风
B.
扬声器
C.
油量表
D.
传感器

正确答案C

解析详情

【答案】C

【考点】计算机基础

【解析】 油量表监控状态,非路径规划逻辑必须组件。

15 题(单选题

现代计算机是指电子计算机,它所基于的是()体系结构。

A.
艾伦·图灵
B.
冯·诺依曼
C.
阿塔纳索夫
D.
埃克特-莫克利

正确答案B

解析详情

【答案】B

【考点】计算机体系结构

【解析】 冯·诺依曼结构的核心特点是“程序存储”和“二进制”。

判断题(每题 2 分)

1 题(判断题

C++表达式 int(3.14) 的值为3。()

正确答案正确

解析详情

【答案】✓

【解析】 舍弃小数部分,结果为 3。

2 题(判断题

C++语句 cout << (2 * 3, 3 % 10, 2 + 3) 的输出为 6, 3, 5。()

正确答案错误

解析详情

【答案】✗

【解析】 逗号运算符返回最后项的值,输出 5。

3 题(判断题

for(int i = 1; i < 10; i += 3); 表示i from 1 开始到 10 结束间隔为 3,相当于 1、4、7、10。()

正确答案错误

解析详情

【答案】✗

【解析】 i < 10,不包含 10。

4 题(判断题

C++表达式010+100+001的值为111。()

正确答案错误

解析详情

【答案】✗

【解析】 0 开头为八进制. 8 + 100 + 1 = 109。

5 题(判断题

if 语句中的条件表达式的结果可以为 int 类型。

正确答案正确

解析详情

【答案】✓

【解析】 非零整数被视为 true。

6 题(判断题

在下面的C++代码 while(1) continue; 中,由于循环中的 continue 是无条件被执行,因此将导致死循环。()

正确答案正确

解析详情

【答案】✓

【解析】 条件恒成立且无退出机制,死循环。

7 题(判断题

C++表达式('1' + '1' == '2' ? flag=1 : flag=2)的结果值和表达式(flag==2)的相同。()

正确答案错误

解析详情

【答案】✗

【解析】 '1'+'1' 不等于 '2',flag=2,表达式值为 2(int),flag==2 为 true(bool)。

8 题(判断题

在C++的程序中,不能用 scanf 作为变量名。()

正确答案错误

解析详情

【答案】✗

【解析】 scanf 不是关键字,可以作为变量名。

9 题(判断题

小杨最近在准备考GESP,他用的Dev C++来练习和运行程序,所以Dev C++也是一个小型操作系统。()

正确答案错误

解析详情

【答案】✗

【解析】 Dev C++ 是 IDE。

10 题(判断题

任何一个 while 循环都可以转化为等价的 for 循环()。

正确答案正确

解析详情

【答案】✓

【解析】 逻辑上可等价转化。