CCF GESP 2024年9月认证 C++ 1级

单选题
共 15 道 每题 2 分 共计 30 分
第 1 题

据有关资料,山东大学于 1972 年研制成功 DJL-1 计算机,并于 1973 年投入运行,其综合性能居当时全国第三位。DJL-1 计算机运算控制部分所使用的磁心存储元件由磁心颗粒组成,设计存贮周期为 $2\mu s$(微秒)。那么该磁心存储元件相当于现代计算机的( )。

A

内存

B

磁盘

C

CPU

D

显示器

第 2 题

C++ 程序执行出现错误,不太常见的调试手段是( )。

A

阅读源代码

B

单步调试

C

输出执行中间结果

D

跟踪汇编码

第 3 题

在 C++ 中,下列表达式错误的是( )。

A

cout << "Hello,GESP!" << endl;

B

cout << 'Hello,GESP!' << endl;

C

cout << """Hello,GESP!""" << endl;

D

cout << "Hello,GESP!' << endl;

第 4 题

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

A

14

B

4

C

1

D

0

第 5 题

C++ 中,假设 N 为正整数 10,则 cout << (N / 3 + N % 3) 将输出( )。

A

6

B

4.3

C

4

D

2

第 6 题

C++ 语句 printf("6%2={%d}", 6%2) 执行后的输出是( )。

A

"6%2={6%2}"

B

6%2={6%2}

C

0=0

D

6%2={0}

第 7 题

成功执行下面的 C++ 代码,先后从键盘上输入 5 回车和 2 回车,输出是( )。

cin >> a;
cin >> b;
cout << a + b;
A

将输出整数 7

B

将输出 52,5 和 2 之间没有空格

C

将输出 5 和 2,5 和 2 之间有空格

D

执行结果不确定,因为代码段没有显示 a 和 b 的数据类型

第 8 题

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

int Sum = 0;
for (int i = 0; i < 10; i++)
    Sum += i;
cout << Sum;
A

55

B

45

C

10

D

9

第 9 题

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

int N = 0;
for (int i = 0; i < 10; i++)
    N += 1;
cout << N;
A

55

B

45

C

10

D

9

第 10 题

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

int N = 0;
for (int i = 1; i < 10; i += 2){
    if (i % 2 == 1)
        continue;
    N += 1;
}
cout << N;
A

5

B

4

C

2

D

0

第 11 题

下面 C++ 代码执行时输入 14+7 后,正确的输出是( )。

int P;
printf("请输入正整数P:");
scanf("%d", &P);
if (P % 3 || P % 7)
    printf("第5行代码%d, %d", P % 3, P % 7);
else
    printf("第7行代码%2d", P % 3 && P % 7);
A

第5行代码2, 0

B

第5行代码1, 0

C

第7行代码 1

D

第7行代码 0

第 12 题

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

int count = 0, i, s;
for (i = 0, s = 0; i < 20; i++, count++)
    s += i++;
cout << s << " " << count;
A

190 20

B

95 10

C

90 19

D

90 10

第 13 题

下面 C++ 代码拟用于计算整数 N 的位数,比如对 123 则输出 123是3位整数,但代码中可能存在 bug。下面有关描述正确的是( )。

int N, N0, rc = 0;
cout << "请输入整数:";
cin >> N;
N0 = N;
while (N) {
    rc++;
    N /= 10;
}
printf("%d是%d位整数\n", N, rc);  // L11
A

变量 N0 占用额外空间,可以去掉

B

代码对所有整数都能计算出正确位数

C

L11 标记的代码行简单修改后可以对正整数给出正确输出

D

L11 标记的代码行的输出格式有误

第 14 题

下面的 C++ 代码用于求连续输入的若干正五位数的百位数之和。例如输入 32488 25731 41232 0,则输出 3 个正五位数的百位数之和为 13。有关描述错误的是( )。

int M, Sum = 0, rc = 0;
cout << "请输入正整数:";
cin >> M;

while (M) {
    M = (M / 100 % 10);  // L6
    Sum += M;
    rc++;
    cin >> M;
}

cout << rc << "个正五位数的百位数之和为" << Sum;
A

执行代码时如果输入 23221 23453 12345 11111 0,则最后一行 Sum 的值是 10

B

执行代码时如果输入 2322 2345 1234 1111 0,程序也能运行

C

将代码标记为 L6 那行改为 M = (M % 1000 / 100);,同样能实现题目要求

D

将代码标记为 L6 那行改为 M = (M % 100 / 10);,同样能实现题目要求

第 15 题

如果一个正整数 N 能够表示为 $X \times (X+1)$ 的形式,这里称它是一个“兄弟数”。例如,输入 6,则输出“6 是一个兄弟数”。下面 C++ 代码用来判断 N 是否为一个“兄弟数”,在横线处应填入的代码可从 i) - iv) 中选择,则有几个能完成功能?( )。

int N;
cin >> N;
for (int i = 0; i <= N; i++)
    if (__________________)
        cout << N << "是一个兄弟数\n";

i) N == i * (i + 1)

ii) N == i * (i - 1)

iii) N / (i + 1) == i

iv) N / (i - 1) == i

A

1

B

2

C

3

D

4

单选题部分已到底了。