CCF GESP 2024年12月认证 C++ 2级

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

2024 年 10 ⽉ 8 ⽇,诺贝尔物理学奖“意外地”颁给了两位计算机科学家约翰·霍普菲尔德(John J. Hopfield)和杰弗里·辛顿(Geoffrey E. Hinton)。这两位科学家的主要研究方向是( )。

A

天体物理

B

流体力学

C

人工智能

D

量子理论

第 2 题

计算机系统中存储的基本单位用 B 来表示,它代表的是( ),比如某个照片大小为 3 MB。

A

Byte

B

Block

C

Bulk

D

Bit

第 3 题

C++ 语句 cout << (3 + 3 % 3 * 2 - 1) 执行后输出的值是( )。

A

-1

B

4

C

56

D

2

第 4 题

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

for (int i=0; i<10; i++)
    printf("%d",i);
A

123456789

B

0123456789

C

12345678910

D

012345678910

第 5 题

下面 C++ 代码的相关说法中,正确的是( )。

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

上述代码执行后将输出不确定的值

第 6 题

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

int i;

for (i=1; i<10; i++)
    if (i % 2)
        continue;
    else
        break;

cout << i;
A

1

B

2

C

9

D

10

第 7 题

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

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#1#

B

0#0#0#0#0#0#1#

C

0#0#0#0#1#

D

0#0#0#0#

第 8 题

下面 C++ 代码用于输出 0-100 之前(包含 100)能被 7 整除但不能被 3 整除的数,横线处不能填入的代码是( )。

for (i=0; i<100; i++)
    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)

第 9 题

下面 C++ 代码用于求正整数各位数字之和,横线处不应填入代码是( )。

int tnt, N;
printf("请输入正整数:");
cin >> N;
tnt = 0;
while (N != 0){
    ________________
    N /= 10;
}
cout <<tnt;
A

tnt = tnt + N % 10

B

tnt += N % 10

C

tnt = N % 10 + tnt

D

tnt = N % 10

第 10 题

下图的 C++ 程序执行后的输出是( )。

for (i=0; i<5; i++)
    for (j=0; j<i; j++)
        cout <<j;
A

0010120123

B

01012012301234

C

001012012301234

D

01012012301234012345

第 11 题

下面 C++ 代码用于实现图示的九九乘法表。相关说法错误的是( )。

/*
1*1=1
1*2=2  2*2=4
1*3=3  2*3=6  3*3=9
1*4=4  2*4=8  3*4=12 4*4=16
1*5=5  2*5=10 3*5=15 4*5=20 5*5=25
1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7  2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8  2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9  2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
*/

for (int Hang=1; Hang<10; Hang++){
    for (int Lie=1; Lie<Hang+1; Lie++){
        if (Lie * Hang > 9)
            printf("%d*%d=%d ", Lie, Hang, Lie*Hang);
        else
            printf("%d*%d=%d  ", Lie, Hang, Lie*Hang);
        // L2
    }

    printf("\n"); // L1
}
A

将 L1 注释的 printf("\n") 移到 L2 注释所在行,效果相同

B

将 L1 注释的 printf("\n") 修改为 print("%c", '\n ') 效果相同

C

Lie * Hang > 9 修改为 Lie * Hang >= 10 效果相同

D

Lie * Hang > 9 修改为 Hang * Lie > 9 效果相同

第 12 题

在数学中 $N!$ 表示 N 的阶乘,即 1 到 N 的乘积,如 3!=1*2*3。下面的 C++ 用于求 1-N 的阶乘之和,如 N 为 3,则是 1!+2!+3!。下面代码段补充选项后用于实现上述功能,其中不能实现阶乘和的选项是( )。

int N;

cin >> N;

int tnt=0, nowNum = 1; //tnt保存求和之值,当前N的阶乘

for (int i=1; i < N + 1; i++){
    ______________ // 基于上一个计算出当前数的阶乘
    ______________ // 从1到i每个数阶乘之和
}

cout << tnt;
A
nowNum *= i;
tnt += nowNum;
B
nowNum = nowNum * i;
tnt = tnt + nowNum;
C
nowNum *= i;
tnt = nowNum + tnt;
D
nowNum = nowNum + i;
tnt *= nowNum;
第 13 题

下面 C++ 代码用于输出 N 和 M 之间(可以包括 N 和 M)的孪生素数。孪生素数是指间隔为 2 的两个数均为素数,如 11 和 13 分别是素数,且间隔为 2。isPrime(N) 用于判断 N 是否为素数的函数。为完成上述功能横线处应填上的代码是( )。

int N,M;

//本题假设N小于M
cin >> N >> M;

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

第 14 题

下面 C++ 代码实现输出如下图形,横线应填入的代码是 ( )。

/*
高度:5
    *
   ***
  *****
 *******
*********
*/

int height;
cout << "高度: ";

//获取用户输入的高度
cin >> height;
for (i=0; i<height; i++){
    //打印每行前面的空格
    for (j = 0; j < _______________; j++)
        cout << " ";
    //打印每行的星号
    for (k = 0; k < _______________; k++)
        cout << "*";
    //输出一行后,换行
    cout << endl;
}
A
height - i
2 * i
B
height
2 * i
C
height - i
2 * i + 1
D
height - i - 1
2 * i + 1
第 15 题

下面 C++ 代码执行后的输出是 30,则横线处不能填入( )。

int a=10,b=20,c=30;

cout << _____________________ << endl;

cout << endl;
A

max(max(a,b),c)

B

min(a+b, c)

C

sqrt(a+b+c)

D

(a+b+c)/2

单选题部分已到底了。