信奥刷题站
GESP 认证 2级2024-06

2024年6月 GESP C++ 2级

题量
27 题
客观题
25 题
建议时长
60 分钟
卷面总分
100 分

2024年6月 GESP C++ 2级认证考试真题(含编程操作题部分)

开始整卷模拟计时作答 · 交卷即时判分 · 错题自动进错题本(需登录)2 道编程大题:在线只判客观题,编程题请自行前往洛谷等 OJ 提交验证

// questions

题目预览

1
单选题2

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

A

111

B

222

C

333

D

444

2
单选题2

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

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
单选题2

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

A

five-Star

B

five_star

C

fiveStar

D

_fiveStar

4
单选题2

在 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
单选题2

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

A

111

B

222

C

true

D

false

6
单选题2
  1. 执行下面的 C++ 代码时输入 111,则输出是( )。
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
单选题2

执行下面 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

如果先后输入 111111,则将输出 111

B

如果先后输入 000111 或者 111000,则将输出 333

C

如果先后输入 000000,则将输出 222

D

如果先后输入 000000,则将输出 444

8
单选题2

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

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
单选题2

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

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

555555

B

454545

C

363636

D

282828

10
单选题2

下面 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

252525

B

161616

C

101010

D

999

11
单选题2

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

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

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

B

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

C

执行上面代码第一次输入 000,最后将输出 000

D

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

12
单选题2

执行下面的 C++ 代码,有关说法正确的是( )【质数是指仅能被 111 和它本身整除的正整数】。

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

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

B

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

C

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

D

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

13
单选题2

下面 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
单选题2

下面 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

555 222

B

555 000

C

000 222

D

000 000

15
单选题2

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

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

如果 NNN 输入 333MMM 输入 363636 则将输出:363636333 的超级幸运数!

B

如果 NNN 输入 777MMM 输入 212121 则将输出:212121777 的幸运数!

C

如果 NNN 输入 888MMM 输入 363636 则将输出:363636888 的超级幸运数!

D

如果 NNN 输入 333MMM 输入 636363 则将输出:636363333 的超级幸运数!

16
判断题2

执行 C++ 代码 cout << '9' + '1'; 的输出为 101010。( )

17
判断题2

C++ 表达式 -12 % 10 的值为 222。( )

18
判断题2

C++ 表达式 int(12.56) 的值为 131313。( )

19
判断题2

C++ 的整型变量 NNN 被赋值为 101010,则语句 cout << N / 3 << "-" << N % 3 执行后输出是 3-1。 ( )

20
判断题2

在 C++ 代码中,不可以将变量命名为 scanf,因为 scanf 是 C++ 语言的关键字。( )

21
判断题2

下面 C++ 代码执行后将导致死循环。( )

for (int i = 0; i < 10; i++)
    continue;
22
判断题2

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

int cnt = 0;
for (int i = 0; i < 10; i++)
    for (int j = 0; j < i; j++){
        cnt += 1;
        break;
    }
cout << cnt;
23
判断题2

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

int cnt = 0;
for (int i = 1; i < 5; i++)
    for (int j = i; j < 5; j += i)
        if (i * j % 2 == 0)
            cnt += 1;
cout << cnt;
24
判断题2

下面 C++ 代码能实现正整数各位数字之和。( )

int N, Sum = 0;
cin >> N;
while (N) {
    Sum += N % 10;
    N /= 10;
}
cout << Sum;
25
判断题2

GESP 测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。( )

GESP 编程操作题
26
编程题25

试题名称:平方之和

时间限制:1.0 s | 内存限制:512.0 MB

题目描述

小杨有 nnn 个正整数 a1,a2,…,ana_1,a_2,\dots,a_na1,a2,,an,他想知道对于所有的 i(1≤i≤n)i (1\le i\le n)i(1in),是否存在两个正整数 xxxyyy 满足 x×x+y×y=aix\times x+y \times y=a_ix×x+y×y=ai

输入格式

第一行包含一个正整数 nnn,代表正整数数量。 之后 nnn 行,每行包含一个正整数,代表 aia_iai

输出格式

对于每个正整数 aia_iai,如果存在两个正整数 xxxyyy 满足 x×x+y×y=aix\times x+y \times y=a_ix×x+y×y=ai,输出 Yes,否则输出 No

样例输入 #1

2
5
4

样例输出 #1

Yes
No

说明/提示

对于第一个正整数,存在 1×1+2×2=51\times 1+2 \times 2=51×1+2×2=5,因此答案为 Yes

对于全部数据,保证有 1≤n≤10,1≤ai≤1061 \le n \le 10,1 \le a_i \le 10^61n10,1ai106

本题为编程大题:请复制题面到洛谷 / GESP OJ 等平台编写并提交代码(本站不判分)
27
编程题25

试题名称:计数

时间限制:1.0 s | 内存限制:512.0 MB

题目描述

小杨认为自己的幸运数是正整数 kkk(注:保证 1≤k≤91 \le k\le 91k9)。小杨想知道,对于从 111nnn 的所有正整数中, kkk 出现了多少次。

输入格式

第一行包含一个正整数 nnn

第二行包含一个正整数 kkk

输出格式

输出从 111nnn 的所有正整数中, kkk 出现的次数。

样例输入 #1

25
2

样例输出 #1

9

说明/提示

111252525 中,222 出现的正整数有 2,12,20,21,22,23,24,252,12,20,21,22,23,24,252,12,20,21,22,23,24,25 ,一共出现了 999 次。

对于全部数据,保证有 1≤n≤1000,1≤k≤91 \le n\le 1000,1 \le k\le 91n1000,1k9

本题为编程大题:请复制题面到洛谷 / GESP OJ 等平台编写并提交代码(本站不判分)