#P1062. GESP 三级模拟

GESP 三级模拟

  1. 十进制数 109 转换为二进制数和十六进制数分别是({{ select(1) }} )。
  • 110110121101101_2 , 6D166D_{16}
  • 110110121101101_2 , 7D167D_{16}
  • 111010121110101_2 , 6D166D_{16}
  • 110101121101011_2 , 6B166B_{16}
  1. 假设某计算机中,一个带符号整数占用 8 位(bit)。已知一个数在计算机中的补码为 11101100,则该数的十进制原值是({{ select(2) }} )。
  • -20
  • -19
  • -100
  • 236
  1. 下列关于字符编码的说法,错误的是({{ select(3) }} )。
  • ASCII 码使用 7 位二进制位表示,标准 ASCII 共包含 128 个字符。
  • UTF-8 是一种变长的编码方式,在表示英文字母时通常只占用 1 个字节。
  • Base64 编码方案的主要目的是将二进制数据加密为不可读的密文。
  • 在标准 ASCII 码表中,小写字母 'a' 的数值大于大写字母 'A' 的数值。
  1. 运行以下代码片段后,变量 ans 的值是( )。
int a = 18; // 二进制: 00010010
int b = 27; // 二进制: 00011011
int ans = (a & b) ^ (a | b);

{{ select(4) }}

  • 9
  • 16
  • 25
  • 11
  1. 表达式 (7 << 3) | (23 >> 2) 的计算结果在十进制下是({{ select(5) }} )。
  • 61
  • 59
  • 56
  • 63
  1. 已知二维数组 int matrix[5][6]; 在内存中按行优先连续存放。若 matrix[0][0] 的内存地址为 0x2000,且每个 int 类型占用 4 个字节,则 matrix[3][2] 的内存地址为( {{ select(6) }})。
  • 0x2048
  • 0x2050
  • 0x204C
  • 0x2054
  1. 运行以下关于 string 的代码,最终输出的结果是( )。

    string s = "CCF-GESP2026";
    s.erase(0, 4);
    s.insert(4, "-333");
    cout << s << endl;
    

{{ select(7) }}

  • GESP-3332026
  • GESP2026-333
  • CCF-333GESP
  • GESP333-2026
  1. 运行以下代码片段,输出结果是( )。

    string s = "programming";
    int pos = s.find("gram");
    if (pos != string::npos) {
        cout << s.substr(pos + 1, 4);
    } else {
        cout << "not found";
    }
    

{{ select(8) }}

  • gram
  • ramm
  • ammo
  • mmin
  1. 在解决“寻找 1 到 10000 之间所有能够被自己的各位数字之和整除的数(如21能被2+1=3整除)”的问题时,最适合采用的算法策略是({{ select(9) }} )。
  • 递推
  • 枚举
  • 贪心
  • 分治
  1. 某模拟算法要求对一个 4×44 \times 4 的矩阵进行顺时针旋转 90 度操作。已知原矩阵中某个元素的下标为 (i, j)0i,j30 \le i, j \le 3 ),则旋转后该元素在目标矩阵中的新下标为({{ select(10) }} )。
  • (j, 3 - i)
  • (3 - j, i)
  • (3 - i, 3 - j)
  • (j, i)
  1. 十六进制数 0x3A 加上十六进制数 0x1F 的结果,用二进制表示是( {{ select(11) }})。
  • 01011001201011001_2
  • 01011011201011011_2
  • 01011101201011101_2
  • 01101001201101001_2
  1. 执行以下 C++ 代码后,输出的结果是( )。

    char c = 'd';
    int offset = c - 'a';
    cout << (offset ^ 1);
    

{{ select(12) }}

  • 2
  • 3
  • 4
  • 5
  1. 若有定义 int arr[10] = {5, 10, 15};,则下列说法正确的是( {{ select(13) }})。
  • arr[3] 的值是随机脏数据
  • arr[9] 的值是 0
  • 数组 arr 在内存中占用的总字节数是 12 字节
  • 试图访问 arr[10] 会引发编译错误
  1. 运行以下代码片段,输出结果是( )。

    int x = 5, y = 10;
    bool res = (x > 6) && ((y = 20) > 15);
    cout << y;
    

{{ select(14) }}

  • 10
  • 20
  • 5
  • 0
  1. 在 C++ 中,如果要判断一个 string 对象 s 是否为空字符串,以下最高效且最推荐的方法是( {{ select(15) }})。
  • if (s == "")
  • if (s.length() == 0)
  • if (s.empty())
  • if (s.size() == 0)

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

  1. 十六进制数 0x4C 转换为十进制数是 76。({{ select(16) }} )
  • 正确
  • 错误
  1. 计算机内部存储带符号整数时,正数的原码、反码、补码形式完全相同。({{ select(17) }} )
  • 正确
  • 错误
  1. 在 8 位二进制补码表示法中,10000000 表示的十进制数是 -128。( {{ select(18) }})
  • 正确
  • 错误
  1. C++ 中,按位取反运算符 ~ 是一个双目运算符,用于对两个操作数的每个二进制位进行取反。({{ select(19) }} )
  • 正确
  • 错误
  1. 若有定义 int a[5][5];,在内存中 a[1][0] 紧跟在 a[0][4] 的后面存放。({{ select(20) }} )
  • 正确
  • 错误
  1. string 对象的 length()size() 方法返回的都是字符串中字符的个数,其效果完全等价。({{ select(21) }} )
  • 正确
  • 错误
  1. 使用 stringfind() 函数查找子串时,如果找不到,函数会返回 0。( {{ select(22) }})
  • 正确
  • 错误
  1. 枚举算法的缺点是往往需要测试所有可能的情况,如果问题规模太大,可能会导致程序超时。( {{ select(23) }})
  • 正确
  • 错误
  1. 表达式 (1 << 31) 在 32 位带符号整型(int)下会产生溢出,其结果是一个负数。( {{ select(24) }})
  • 正确
  • 错误
  1. 如果定义了一维数组 int clear[100]; 且未在定义时初始化,若该定义位于 main 函数内部,则数组中所有元素自动被初始化为 0。({{ select(25) }} )
  • 正确
  • 错误