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

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

小杨父母带他到某培训机构给他报名参加 CCF 组织的 GESP 认证考试的第 1 级 ,那他可以选择的认证语言有几种?( )

A

1

B

2

C

3

D

4

第 2 题

下面流程图在 yr 输入 2024 时,可以判定 yr 代表闰年,并输出 2 月是 29 天,则图中菱形框中应该填入( )。

A

(yr%400==0) || (yr%4==0)

B

(yr%400==0) || (yr%4==0 && yr%100 !=0)

C

(yr%400==0) && (yr%4==0)

D

(yr%400==0) && (yr%4==0 && yr%100 !=0)

第 3 题

在 C++ 中 ,下列不可做变量的是( )。

A

five-Star

B

five_star

C

fiveStar

D

_fiveStar

第 4 题

在 C++ 中 ,与 for(int i=0; i<10; i++) 效果相同的是( )。

A

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

B

for(int i=1; i<=10; i++)

C

for(int i=10; i>0; i--)

D

for(int i=10; i<1; i++)

第 5 题

在 C++ 中, cout << (5 % 2 && 5 % 3) 的输出是( )。

A

1

B

2

C

true

D

false

第 6 题

执行下面的 C++ 代码时输入 1,则输出是( )。

int month;

cin >> month;

switch(month){
    case 1:
        cout << "Jan ";
    case 3:
        cout << "Mar ";
        break;
    default:
        ;
}
A

Jan

B

Mar

C

Jan Mar

D

以上均不对

第 7 题

执行下面 C++ 代码后 ,有关说法错误的是( )。

int a, b;
cin >> a >> b;
if (a && b)
    cout << "1";
else if (!(a || b))
    cout << "2";
else if (a || b)
    cout << "3";
else
    cout << "4";
A

如果先后输入1和1,则将输出1

B

如果先后输入0和1或者1和0,则将输出3

C

如果先后输入0和0,则将输出2

D

如果先后输入0和0,则将输出4

第 8 题

某货币由5元 ,2元和1元组成 。输入金额(假设为正整数) ,计算出最少数量 。为实现其功能 ,横线处应填入代码是( )。

int N;
cin >>N;

int M5,M2,M1;
M5 = N / 5;
M2 = ______________;
M1 = ______________;
printf("5*%d+2*%d+1*%d", M5, M2, M1);
A

第1横线处应填入:N / 2

第2横线处应填入:N - M5 - M2

B

第1横线处应填入: (N - M5 * 5) / 2

第2横线处应填入:N - M5 * 5 - M2 * 2

C

第1横线处应填入:N - M5 * 5 / 2

第2横线处应填入:N - M5 * 5 - M2 * 2

D

第1横线处应填入: (N - M5 * 5) / 2

第2横线处应填入:N - M5 - M2

第 9 题

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

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

55

B

45

C

36

D

28

第 10 题

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

int loopCount = 0;
for (int i=0; i < 10; i++){
    for (int j=0; j < i; j++)
        if (i * j % 2)
            break;
    loopCount += 1;
}
cout << loopCount;
A

25

B

16

C

10

D

9

第 11 题

假设下面 C++ 代码执行过程中仅输入正负整数或 0,有关说法错误的是( )。

int N,Sum = 0;
cin >> N;
while (N){
    Sum += N;
    cin >> N;
}
cout << Sum;
A

执行上面代码如果输入0,将终止循环

B

执行上面代码能实现所有非0整数的求和

C

执行上面代码第⼀次输入0,最后将输出0

D

执行上面代码将陷入死循环 ,可将 while (N) 改为while (N==0)

第 12 题

执行下面的 C++ 代码,有关说法正确的是( )。

【质数是指仅能被 1 和它本身整除的正整数】

int N;
cin >> N;
bool Flag = true;
for ( int i = 2; i < N; i++){
    if (i * i > N)
        break;
    if (N % i == 0){
        Flag = false;
        break;
    }
}
if (Flag)
    cout << N << "是质数" << endl;
else
    cout << N << "不是质数" << endl;
A

如果输入正整数 ,上面代码能正确判断N是否为质数

B

如果输入正整数,上面代码能正确判断N是否为质数

C

如果输入大于等于0的整数 ,上面代码能正确判断N是否质数

D

如将 Flag = true 修改为 Flag = N>=2? true:false 则能判断所有整数包括负整数、0、正整数是否为质数

第 13 题

下面 C++ 代码用于实现如下图所示的效果 ,其有关说法正确的是( )。

for (int i = 1; i < 6; i++){ // L1
    for (int j = 1; j < i+1; j++) //L2
        cout << i*j << " ";
    cout << endl;
}
A

当前代码能实现预期效果 ,无需调整代码

B

如果cout << endl; 移到循环L2内部 ,则可实现预期效果

C

如果cout << endl; 移到循环L1外部 ,则可实现预期效果

D

删除cout << endl; ⾏ ,则可实现预期效果

第 14 题

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

int cnt1 = 0, cnt2 = 0;
for (int i = 0; i < 10; i++){
    if (i % 2 == 0)
        continue;
    if (i % 2)
        cnt1 += 1;
    else if (i % 3 == 0)
        cnt2 += 1;
}
cout << cnt1 << " " << cnt2;
A

5 2

B

5 0

C

0 2

D

0 0

第 15 题

在下面的 C++ 代码中,N 必须是小于 10 大于 1 的整数 ,M 为正整数(大于 0) 。如果 M 被 N 整除则 M 为幸运数 ,如果 M 中含有 N 且能被 N 整除 ,则为超级幸运数 ,否则不是幸运数 。程序用于判断 M 是否为幸运数或超级幸运数或非幸运数 。阅读下面代码 ,有关说法正确的是( )。

int N, M;
cout << "请输入幸运数字:";
cin >> N;
cout << "请输入正整数:";
cin >> M;

bool Lucky;
if (M % N == 0)
    Lucky = true;
else
    Lucky = false;
while (M){
    if (M % 10 == N && Lucky){
        printf("%d是%d的超级幸运数!", M, N);
        break;
    }
    M /= 10;
}
if (M == 0)
    if (Lucky)
        printf("%d是%d的幸运数!", M, N);
    else
        printf("%d非%d的幸运数!", M, N);
A

如果N输入3 ,M输入36则将输出:36是3的超级幸运数!

B

如果N输入7,M输入21则将输出:21是7的幸运数!

C

如果N输入8,M输入36则将输出:36非8的超级幸运数!

D

如果N输入3,M输入63则将输出:63是3的超级幸运数!

单选题部分已到底了。