2025 年 3 月真题
一、单选题(每题 2 分,共 30 分)
正确答案:D
考察知识点:基本运算、数据编码
解析:根据题目描述,10 字节输入数据,10 不是 3 的倍数,因此编码为 (10 / 3 + 1) * 4 = 16 字节输出数据。答案为 D。
正确答案:B
考察知识点:进制转换
解析:C、D 选项三个字节,3 字节第一个字节应为 0xE?,C、D 都不符合,排除。
A 选项两个字节,110X 当 X 为 0 时候,对应 16 进制数为 C,10XX,当 X 为 0 时,对应 16 进制为 8。分析到这里,A 好似没问题,但从 UTF-8 的编码规则再看:A 选项二进制:11000000 10000000,第一字节取后 5 位,第二字节取后 6 位,解码后的码点是 (00000)(000000) = 0,Unicode 码点 0 (U+0000) 完全可以用 1 字节 0x00 表示。UTF-8 标准明确禁止这种'过度编码',必须使用最短的可能编码。所以它是非法的。
B 选项 0xF0 (二进制 11110000) 是 4 字节序列的首字节。
0x90 (10010000), 0x80 (10000000), 0x80 (10000000) 都是合法的后续字节(以 10 开头)。
解码后的码点是 000 1001 0000 0000 0000 = U+90000。
这个码点在 4 字节编码的有效范围 (U+10000 ~ U+10FFFF) 内。编码也是最短的。所以它是合法的。B 没问题。
这题考察了进制转换以及 UTF-8 的编码规则,有难度。
正确答案:A
考察知识点:数据编码、进制转换
解析:八进制数 -5 的 8 位二进制原码形式,首位表示符号,0 表示整数,1 表示负数,其余 7 位为 -5 的绝对值的二进制形式 0000101,组合起来:1000 0101,答案为 A。
正确答案:A
考察知识点:进制转换
解析:十进制整数转二进制,短除法:一直除以 2 取余,直到商为 0,余数逆序输出。111(10) -> 1101111(2)。
十进制小数转二进制,短乘法:一直乘以 2 取整,直到小数部分为 0,整数顺序输出。在保留 4 位小数情况下,0.111(10) -> 0.0001(2),只有 A 选项符合。
正确答案:B
考察知识点:数据编码
解析:补码的作用:将计算机中整数的减法运算转化为加法运算,同时统一处理正负数的表示,简化硬件电路设计。答案为 B。
正确答案:A
考察知识点:数据编码
解析:8 位有符号整数 (原码、反码表示) 的范围为:-127127。8 位有符号整数 (补码表示) 的范围为:-128127。答案为 A。
正确答案:C
考察知识点:基本数据类型,无符号整数、数据编码
解析:计算机中存储整数采用的是补码形式,int 类型 4 字节,-5 的补码形式为 (11111111 11111111 11111111 11111011)(2),如果用其表示无符号整数,则将 32 位二进制都作为数值位转成 10 进制数,结果为:4294967291。答案为 C。
正确答案:A
考察知识点:进制转换、cout 格式化输出
解析:oct 是 cout 输出的八进制控制符,hex 是 cout 输出的十六进制控制符。答案为 A。
第 9 题 下面程序是将十进制转十六进制,横线处应该填入的是()
正确答案:C
考察知识点:进制转换、cout 格式化输出
解析:oct 是 cout 输出的八进制控制符,hex 是 cout 输出的十六进制控制符。答案为 C。
正确答案:D
考察知识点:位运算
解析:位运算:按位与 (&),按位或 (|),按位取反 (~),按位异或 (^),左移 (<<),右移 (>>)。答案为 D。
正确答案:D
考察知识点:数组
解析:数组中元素:数组名下标。数组中查找最大值索引,定义 maxIndex 表示最大值索引,初始化为 0,当下标 i 的元素大于下标 maxIndex 的元素,说明下标 i 的元素更大,更新 maxIndex。答案为 D。
正确答案:D
考察知识点:数组
解析:定义 left 表示从左往右找偶数,定义 right 表示从右往左找奇数,找到交换。答案为 D。
正确答案:B
考察知识点:字符串
解析:使用 C++ 替换原字符串中的 World。可以使用 replace 函数,replace(pos, n, s1),用字符串 s1 替换从下标 pos 开始的 n 个字符。只有 B 可以实现。答案为 B。


