#G1149. 2024年06月 GESP C++ 二级

2024年06月 GESP C++ 二级

GESP 202406 C++ 二级

第 1 题

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

  • 1
  • 2
  • 3
  • 4

第 2 题

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

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

第 3 题

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

  • five-Star
  • five_star
  • fiveStar
  • _fiveStar

第 4 题

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

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

第 5 题

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

  • 1
  • 2
  • true
  • false

第 6 题

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

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

{{ select(6) }}

  • Jan
  • Mar
  • Jan Mar
  • 以上均不对

第 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";

{{ select(7) }}

  • 如果先后输入 1 和 1,则将输出 1
  • 如果先后输入 0 和 1 或者 1 和 0,则将输出 3
  • 如果先后输入 0 和 0,则将输出 2
  • 如果先后输入 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);

{{ select(8) }}

  • 第 1 横线处应填入:N / 2 第 2 横线处应填入:N - M5 - M2
  • 第 1 横线处应填入:(N - M5 * 5) / 2 第 2 横线处应填入:N - M5 * 5 - M2 * 2
  • 第 1 横线处应填入:N - M5 * 5 / 2 第 2 横线处应填入:N - M5 * 5 - M2 * 2
  • 第 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;

{{ select(9) }}

  • 55
  • 45
  • 36
  • 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;

{{ select(10) }}

  • 25
  • 16
  • 10
  • 9

第 11 题

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

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

{{ select(11) }}

  • 执行上面代码如果输入 0,将终止循环
  • 执行上面代码能实现所有非 0 整数的求和
  • 执行上面代码第一次输入 0,最后将输出 0
  • 执行上面代码将陷入死循环,可将 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;

{{ select(12) }}

  • 如果输入正整数,上面代码能正确判断 NN 是否为质数
  • 如果输入整数,上面代码能正确判断 NN 是否为质数
  • 如果输入大于等于 0 的整数,上面代码能正确判断 NN 是否为质数
  • 如将 Flag = true 修改为 Flag = N>=2? true:false 则能判断所有整数包括负整数、0、正整数是否为质数

第 13 题

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

1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
for (int i = 1; i < 6; i++) { // L1
    for (int j = 1; j < i+1; j++) // L2
        cout << i*j << " ";
    cout << endl;
}

{{ select(13) }}

  • 当前代码能实现预期效果,无需调整代码
  • 如果 cout << endl; 移到循环 L2 内部,则可实现预期效果
  • 如果 cout << endl; 移到循环 L1 外部,则可实现预期效果
  • 删除 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;

{{ select(14) }}

  • 5 2
  • 5 0
  • 0 2
  • 0 0

第 15 题

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

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);

{{ select(15) }}

  • 如果 NN 输入 33MM 输入 3636 则将输出:363633 的超级幸运数!
  • 如果 NN 输入 77MM 输入 2121 则将输出:212177 的幸运数!
  • 如果 NN 输入 88MM 输入 3636 则将输出:363688 的超级幸运数!
  • 如果 NN 输入 33MM 输入 6363 则将输出:636333 的超级幸运数!

第 16 题

执行 C++ 代码 cout << '9' + '1'; 的输出为 1010({{ select(16) }})。

  • 正确
  • 错误

第 17 题

C++ 表达式 -12 % 10 的值为 22({{ select(17) }})。

  • 正确
  • 错误

第 18 题

C++ 表达式 int(12.56) 的值为 1313({{ select(18) }})。

  • 正确
  • 错误

第 19 题

C++ 的整型变量 NN 被赋值为 1010,则语句 cout << N / 3 << "-" << N % 3 执行后输出是 313-1({{ select(19) }})。

  • 正确
  • 错误

第 20 题

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

  • 正确
  • 错误

第 21 题

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

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

{{ select(21) }}

  • 正确
  • 错误

第 22 题

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

int cnt = 0;
for (int i = 0; i < 10; i++)
    for (int j = 0; j < i; j++){
        cnt += 1;
        break;
    }
cout << cnt;

{{ select(22) }}

  • 正确
  • 错误

第 23 题

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

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;

{{ select(23) }}

  • 正确
  • 错误

第 24 题

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

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

{{ select(24) }}

  • 正确
  • 错误

第 25 题

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

  • 正确
  • 错误