GESP 2024年12月认证 C++ 2级真题

一、单选题(每题 2 分,共 30 分)

👉 点击查看答案
题号123456789101112131415
答案CADBDBCCDAADBDC
  1. 2024 年诺贝尔物理学奖得主的主要研究方向是( )。

    • A. 天体物理
    • B. 流体力学
    • C. 人工智能
    • D. 量子理论
  2. 计算机系统中存储的基本单位“B”表示( )。

    • 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. 执行以下代码的输出是( )。

    for (int i = 0; i < 10; i++)  
        printf("%d", i);  
    • A. 123456789
    • B. 0123456789
    • C. 12345678910
  5. 关于代码的正确说法是( )。

    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. 代码执行后输出的 i 是( )。

    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. 代码执行后输出是( )。

    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#
    • B. 0#0#0#0#0#
    • C. 0#0#0#0#
  8. 输出能被 7 整除但不能被 3 整除的数,不能填入的条件是( )。

    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. 求正整数各位数字之和,不应填入的代码是( )。

    while (N != 0) {  
        ______  
        N /= 10;  
    }  
    • A. tnt = tnt + N % 10
    • B. tnt += N % 10
    • C. tnt = N % 10 + tnt
    • D. tnt = N % 10
  10. 执行以下代码的输出是( )。

    for (i = 0; i < 5; i++)  
        for (j = 0; j < i; j++)  
            cout << j;  
    • A. 0010120123
    • B. 01012012301234
    • C. 001012012301234
    • D. 01012012301234012345
  11. 关于九九乘法表代码的错误说法是( )。

    if (Lie * Hang > 9)  
        printf("%d=%d=%d ", Lie, Hang, Lie*Hang);  
    else  
        printf("%d=%d=%d ", Lie, Hang, Lie*Hang);  
    • A. 将换行符 printf("\n") 移到 L2 行效果相同
    • B. 将 printf("\n") 改为 printf("%c", '\n') 效果相同
    • C. 将 Lie * Hang > 9 改为 Lie * Hang >= 10 效果相同
    • D. 将 Lie * Hang > 9 改为 Hang * Lie > 9 效果相同
  12. 不能实现阶乘和的代码选项是( )。

    for (int i = 1; i < N + 1; i++) {  
        // 填入代码  
    }  
    • A. nowNum *= i; tnt += nowNum;
    • B. nowNum = nowNum * i; tnt = tnt + nowNum;
    • C. nowNum *= i; tnt = nowNum + tnt;
    • D. (未提供)
  13. 输出孪生素数的代码应填入( )。

    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. 输出特定图形的空格和星号数量应填入( )。

    for (j = 0; j < ______; j++)  // 空格  
    for (k = 0; k < ______; k++)  // 星号  
    • A. height - i2 * i
    • B. height2 * i
    • C. height - i2 * i + 1
    • D. height - i - 12 * i + 1
  15. 输出 30 时不能填入的代码是( )。

    int a = 10, b = 20, c = 30;  
    cout << ______ << endl;  
    • A. max(max(a, b), c)
    • B. min(a + b, c)
    • C. sqrt(a + b + c)
    • D. (a + b + c) / 2

二、判断题(每题 2 分,共 20 分)

👉 点击查看答案
题号12345678910
答案××××
  1. 在 Windows 中,复制文件的操作是 Ctrl+CCtrl+V。( )
  2. cout << (N - N / 10 * 10) 可获取 N 的个位数。( )
  3. cout << (10 <= N <= 12) 在 N=12 时输出 1。( )
  4. int(sqrt(N)) * int(sqrt(N)) == N 为真说明 N 是完全平方数。( )
  5. printf("%%a=%%b-%d", a*b); 输出 2*3=6。( )
  6. 变量名 _ 不符合 C++ 命名规范。( )
  7. 循环中的 break 会导致输出 0。( )
  8. 代码 for (i=8; i>2; i=2) 输出 18 行“OK”。( )
  9. i=1 改为 i=0 后输出结果相同。( )
  10. for 循环和 while 循环的求和代码结果相同。( )

三、编程题(每题 25 分,共 50 分)

编程题 1:寻找数字

题目描述
判断正整数 ( a ) 是否存在 ( b ) 满足 ( a = b^4 ),若存在输出 ( b ),否则输出 -1

输入格式

  • 第一行:测试组数 ( t )
  • 每组数据:一个正整数 ( a )

输出格式
每组数据输出一行结果。

样例输入

3  
16  
81  
10  

样例输出

2  
3  
-1  

参考程序

#include <iostream>  
#include <cmath>  
using namespace std;  

int main() {  
    int t;  
    cin >> t;  
    while (t--) {  
        int a;  
        cin >> a;  
        int b = (int)(sqrt(sqrt(a)));  
        if (b * b * b * b == a)  
            cout << b << endl;  
        else  
            cout << -1 << endl;  
    }  
    return 0;  
}  

编程题 2:数位和

题目描述
求多个正整数的数位和最大值。

输入格式

  • 第一行:正整数个数 ( n )
  • 之后 ( n ) 行:每个正整数

输出格式
输出最大数位和。

样例输入

3  
16  
81  
10  

样例输出

9  

参考程序

#include <bits/stdc++.h>  
using namespace std;  
#define ll long long  

int main() {  
    int n;  
    cin >> n;  
    int max_sum = 0;  
    while (n--) {  
        ll tmp;  
        cin >> tmp;  
        int sum = 0;  
        while (tmp > 0) {  
            sum += tmp % 10;  
            tmp /= 10;  
        }  
        max_sum = max(max_sum, sum);  
    }  
    cout << max_sum << endl;  
    return 0;  
}