#G2503C3A. [GESP202503 三级] 客观题

[GESP202503 三级] 客观题

一、单项选择题(共 15 题,每题 2 分,共计 30 分;每题有且仅有一个正确选项)

  1. Base64 编码将每 3 字节的输入数据编码为 4 字节的输出数据。如果输入数据长度不是 3 的倍数,会用 = 号填充。 在 Base64 编码中,如果输入字符串的长度为 10 字节,编码后的字符串长度是多少( ) {{ select(1) }}
  • 12 字节
  • 13 字节
  • 14 字节
  • 16 字节
  1. UTF-8 编码规则如下: 1 字节:0xxxxxxx 2 字节:110xxxxx 10xxxxxx 3 字节:1110xxxx 10xxxxxx 10xxxxxx 4 字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 以下哪个字节序列是合法的 UTF-8 编码( ) {{ select(2) }}
  • 0xC0 0x00
  • 0xF0 0x90 0x80 0x80
  • 0x80 0x80 0x80
  • 0xFF 0xFE 0xFD
  1. 在 8 位二进制原码表示中,八进制数 −5 的二进制形式是什么( ) {{ select(3) }}
  • 10000101
  • 11111010
  • 11111011
  • 00000101
  1. 十进制数 111.111 的二进制表示可以是下面的( ) {{ select(4) }}
  • 1101111.0001110001
  • 1101110.1001110001
  • 1101111.1001110001
  • 1101111.0011110001
  1. 在 C++ 中,补码的主要作用是( ) {{ select(5) }}
  • 提高浮点数的精度
  • 简化整数的加减法运算
  • 增加整数的表示范围
  • 优化内存分配
  1. 在 C++ 中,一个 8 位有符号整数(使用补码表示)的范围是( ) {{ select(6) }}
  • −128 到 127
  • −127 到 128
  • −256 到 255
  • 0 到 255
  1. 在 C++ 中,以下代码的输出是什么( )
int a = -5;
unsigned int b = a;
cout << b;

{{ select(7) }}

  • −5
  • 5
  • 4294967291
  • 编译错误
  1. 下列程序的作用是( )
int main() {
        int decimal = 25;
        cout << oct << decimal;
        return 0;
}

{{ select(8) }}

  • 将十进制数转换成八进制数
  • 将八进制数转换成十进制数
  • 将二进制数转换成八进制数
  • 将八进制数转换成 16 进制数
  1. 下面程序是将十进制转十六进制,横线处应该填入的是( )
int main() {
        int decimal = 255;
        ______________________
        return 0;
}

{{ select(9) }}

  • cout << oct << decimal;
  • cout << decimal << decimal;
  • cout << hex << decimal;
  • 不能正确执行
  1. 以下代码的说法正确的是( )
int a = 0b1101;
int b = 0b1011;
cout << (a ^ b);

{{ select(10) }}

  • 进行的是整体异或运算
  • 进行的是按位同或运算
  • 进行的是按位与运算
  • 进行的是按位异或运算
  1. 下面枚举法查找最大值索引程序中,横线处应该填写的是( )
int arr[] = {3, 7, 2, 9, 5};
int maxIndex = 0;
for (int i = 1; i < 5; i++) {
        ______________________________
        {
            maxIndex = i;
        }
 }
cout << maxIndex;

{{ select(11) }}

  • if (arr[maxIndex] > arr[i])
  • if (arr[i] - 1 > arr[maxIndex])
  • if (arr[i] + 1 > arr[maxIndex])
  • if (arr[i] > arr[maxIndex])
  1. 以下代码的功能是将数组中的奇数和偶数分别放在数组的前半部分和后半部分,横线处应该填入的是( )

image

{{ select(12) }}

  • while (arr[left] % 2 == 0 && left < right) right--;
  • while (arr[right] % 2 == 0 && left < right) left--;
  • while (arr[right] % 2 != 0 && left < right) right--;
  • while (arr[right] % 2 == 0 && left < right) right--;
  1. 下面程序最后能够得到 HelloC++ 的是( )
string str = "HelloWorld";
___________________
cout << str;

{{ select(13) }}

  • str.replace(0, 5, "C++");
  • str.replace(5, 5, "C++");
  • str.replace(1, 5, "C++");
  • str.replace(4, 5, "C++");
  1. 想要得到字符串 world,下列程序横线处应该填入的是( )
string str = "HelloC++";
_________________
_________________

{{ select(14) }}

  • str.insert(4, "World"); cout << str.substr(4, 4);
  • cout << str.substr(5, 5);
  • str.insert("World");  cout << str.substr(5, 5);
  • str.insert(5, "World"); cout << str.substr(5, 5);
  1. 有 $n$ 个正整数,若一个正整数是“美丽数字”当且仅当该正整数是 9 的倍数但不是 8 的倍数。 下列程序中统计美丽数字数量,横线处应该填入的是( )
for (int i = 1; i <= n; i++) {
        cin >> a;
        __________________________
        cnt++;
}

{{ select(15) }}

  • if (a % 9 != 0 && a % 8 != 0)
  • if (a % 9 == 0 & a % 8 == 0)
  • if (a % 9 == 0 && a % 8 != 0)
  • if (a % 9 == 0 & a % 8 != 0)

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

  1. 判断一个三角形是否成立的条件只有:任意两边长度之和大于第三边的长度。 {{ select(16) }}
  • 正确
  • 错误
  1. 下列程序判断从键盘输入的字符 ASCII 是否为奇数,若是输出 YES,否则输出 NO。

image

{{ select(17) }}

  • 正确
  • 错误
  1. 闰年的定义:

普通闰年:年份是 4 的倍数且不是 100 的倍数;

世纪闰年:年份是 400 的倍数。

下列程序能正确判断闰年:

image

{{ select(18) }}

  • 正确
  • 错误
  1. C++ 语句 cout << (n%15==0 ? "YES" : "NO"); 能够判断一个整数能否被 3 和 5 同时整除。

{{ select(19) }}

  • 正确
  • 错误
  1. 有 n 个同学,从中抽取任意人数参加大合唱,共有 2n2^n 个方法。

{{ select(20) }}

  • 正确
  • 错误
  1. 若将一个正整数化为二进制数,在此二进制数中,我们将数字 1 的个数是偶数的这类二进制数称为 A 类数,否则就称其为 B 类数。

例如:

  • 1310=(1101)213_{10} = (1101)_2,其中 1 的个数为 3,则此数为 B 类数;
  • 1010=(1010)210_{10} = (1010)_2,其中 1 的个数为 2,则此数为 A 类数;

判断 2025102025_{10} 化为二进制后,1 的个数为偶数,故此为 A 类数。

{{ select(21) }}

  • 正确
  • 错误
  1. 下列程序将 n 不停地除以 2,并输出此时的商和余数,直到 n = 0 为止。

image

{{ select(22) }}

  • 正确
  • 错误
  1. 两个 13 进制的数 A 和 B,在 10 进制下分别表示 10101111(A+B)13=(18)13(A + B)_{13} = (18)_{13},也就是说 13 进制数 A 加上 13 进制数 B,和是 13 进制数 1818

{{ select(23) }}

  • 正确
  • 错误
  1. k 进制,逢 k 进第二位, k2k^2 进百位, k3k^3 进千位。

    {{ select(24) }}

  • 正确
  • 错误
  1. CCF(十九进制) = 21AC(十三进制)(不区分大小写)。 {{ select(25) }}
  • 正确
  • 错误