#G2606C3A. [GESP202606 三级] 客观题
[GESP202606 三级] 客观题
一、单项选择题(共 15 题,每题 2 分,共计 30 分;每题有且仅有一个正确选项)
- 关于计算机的数据编码,下面说法正确的是( )。 {{ select(1) }}
- 机器数
1000 1101B的真值可能是-13(如果它是原码)或141(如果它是无符号数)等数,这取决于我们如何解释它。 - 计算机中,所有数据最终都以二进制、八进制、十六进制的形式存储和运算。
- 字节(Byte)是计算机中最小的数据单位。位(bit)是计算机中最小的存储单位。
- 计算机中,
1k字节是1000字节的意思。
- 计算机厂商为了计算方便,一般采用
1000进制。如果我们买的厂商标注的是1 TB的硬盘,它实际的存储容量是( )。 {{ select(2) }}
- 低
4位、高4位压缩技术,适用于数据仅使用字节的一部分(如仅用低4位)的场景。字节结构:一个字节为8位,分为高4位(高位)和低4位(低位)。当数据是十六进制数(0~15,即0x0到0xF),每个值仅需4位表示,高4位全为0。将两个相邻的4位值合并为一个字节。四个数据0x1、0x2、0x3、0x4采用上述压缩技术压缩以后是( )。 {{ select(3) }}
12D、34D12Q、34Q12H、34H00010011B、00110101B
- 关于计算机编码中反码和补码,下面说法错误的是( )。 {{ select(4) }}
- 负数的补码,一个快速方法是从右往左扫描正数的二进制形式,遇到第一个
1之后,左边的所有位都取反。 - 对于一个 位的二进制数:最大表示范围:。
- 反码减法可以统一为加法。符号位可以直接参与运算。
- 反码表示中,
0的表示不唯一:0000 0000B和1111 1111B。
- 一种加密方式是字符数组与密钥
KEY、运算方式分开传输,比如字符数组char text[4] = {'G', 'E', 'S', 'P'};由一种传输方式发送,密钥KEY = 2026通过另一种发送方式发送,运算方式char function[4] = {'|', '-', '^', '+'};又是另一种发送方式发送。三种数据都到达目的地以后,分别进行例如'G' | 6、'E' - 2、'S' ^ 0、'P' + 2等计算,来得到相应的真实内容,上述 GESP 通过这种加密方式,加密以后最终的内容是( )。 {{ select(5) }}
- GCSR
- RSCG
- GCSA
- BCSR
- 关于位运算,下列说法错误的是( )。 {{ select(6) }}
- 找唯一数:数组中唯一出现一次的数,其余出现两次,全部异或结果即为该数。例如:数组
[5, 7, 9, 7, 5](唯一数是9)。 - 交换两个数:
a ^= b; b ^= a; a ^= b;(无需临时变量)。 - 将二进制位整体左移 位,高位溢出舍弃,低位补
0;等价于num乘以 。 - 对每一个二进制位取反,包括符号位,简单运算规则是
~n = -n - 1。
- 关于字符串和字符数组,下列说法正确的是( )。 {{ select(7) }}
-
char str[] = "GESP"; int len1 = sizeof(str); int len2 = strlen(str);上面程序能够正确执行,
len1与len2相等。 -
char str1[4] = "GESP"; char str2[4] = {'G', 'E', 'S', 'P'};这段程序将能够正确执行。
-
char str2[4] = {'G', 'E', 'S', 'P'}; strcpy(str2, "HELLO,GESP"); cout << str2 << endl;这段程序即使能够运行,但是存在覆盖数组以外的内存空间的行为,可能会引起严重错误。
-
char dest[4] = {'G', 'E', 'S', 'P'}; char src[] = "HELLO"; strcat(dest, src); cout << dest << endl;这段程序能够正确执行,不存在数组越界行为。
- 计算机中的
2 KB等于多少 bit( )。 {{ select(8) }}
- 16384
- 20000
- 2000
- 2048
- 在 C++ 中,对于
32位有符号整数int类型数据n,关于按位取反运算符~,下列说法正确的是( )。 {{ select(9) }}
~6的结果是5。- 按位取反满足公式
~n = -n - 1。 ~0的结果是1。~(-2)的结果是-1。
- 关于计算机中的二进制编码表示,下列说法错误的是( )。 {{ select(10) }}
- 原码是最直观的一种有符号数表示方法。最高位(最左边的位)为符号位:
0表示正数,1表示负数,其余位为数值位(真值的绝对值)。 - 补码完美解决了原码和反码的缺陷,是现代计算机中表示有符号整数的标准方式。正数的补码与其原码、反码相同;负数的补码是将其对应正数的原码按位取反(得到反码),然后加
1。 - 计算补码的一个更快的技巧:从右往左扫描正数的二进制形式,遇到第一个
1之后,左边的所有位都取反。 - 对于一个 位的二进制数,补码最大表示范围为 。
- 下面选项中提到的变量都是正整数,关于位运算,下面说法错误的是( )。 {{ select(11) }}
num & 1,结果为1则奇数,0则偶数(仅看最低位)。num & 0xFF保留低8位。num & b的结果一定小于等于num。- 若
num左移导致高位溢出(如超过整型范围),结果符合乘法规律。
a=7, b=3, c=14, d=15, e=8,对于运算表达式!a << b & c ^ d | e的结果是( )。 {{ select(12) }}
- 0
- 15
- 7
- 14
- 关于
string的成员函数,下面说法错误的是( )。 {{ select(13) }}
size():返回字符串长度(字符个数,不含'\0')。length()与size()功能完全一致,返回字符串长度。empty():判断字符串是否为空(非空返回true,空返回false)。s.append(s2, 0, 3);从s2下标0开始,截取3个字符,追加到s后面。
- 以下数组定义,符合 C++ 语法的是( )。 {{ select(14) }}
int [10] a;int b['&'];int c[*];double d[10.0];
- 现在有一个数,请你分别判断它们是否可能是二进制、八进制、十进制、十六进制。例如,
6AFF就只可能是十六进制,而1011则是四种进制皆有可能。输入N(保证1 <= N <= 1000),表示有N个数让你进行判断,接下来输入N个字符串(保证所有字符串长度不超过10),判断可能是四个进制当中的哪个进制数。输出N行,每行4个数,用空格隔开,分别表示给定的字符串是否可能表示一个二进制数、八进制数、十进制数、十六进制数。使用1表示可能,使用0表示不可能。下面程序横线处可以满足这个要求的是( )。
#include <iostream>
using namespace std;
int main() {
int n = 0;
cin >> n;
for (int i = 0; i < n; i++) {
char str[11];
cin >> str;
char max = '0';
for (int i = 0; str[i] != '\0'; i++)
if (str[i] > max)
max = str[i];
___________________________________________
}
return 0;
}
{{ select(15) }}
cout << (max >= '1') << " " << (max >= '7') << " " << (max >= '9') << " " << (max >= 'F') << endl;cout << (max <= '1') << " " << (max <= '7') << " " << (max <= '9') << " " << (max <= 'F') << endl;cout << (max = '1') << " " << (max = '7') << " " << (max = '9') << " " << (max = 'F') << endl;cout << (max < '1') << " " << (max < '7') << " " << (max < '9') << " " << (max < 'F') << endl;
二、判断题(共 10 题,每题 2 分,共计 20 分)
-
反码运算时,产生的进位需要循环进位,即最高位产生的进位要加回到结果的最低位。
{{ select(16) }}
- 对
- 错
-
-11的补码的一种计算方式是从右往左扫描正数的二进制形式,遇到第一个1之后,左边的所有位都取反。{{ select(17) }}
- 对
- 错
-
一个
8位的二进制数补码,最大的表示范围是从-127到+127。{{ select(18) }}
- 对
- 错
-
判断某个数是否是质数,枚举范围可适当缩小(遍历到 而非 ),提升效率。
{{ select(19) }}
- 对
- 错
-
如果
a为int类型的变量,且表达式((a & 1) == 1)的值为true,则说明a是奇数。{{ select(20) }}
- 对
- 错
-
十六进制数
CCF对应的二进制数、八进制数、十进制数分别是:110011001111、6317、3269。{{ select(21) }}
- 对
- 错
- 下列程序如果能够正确执行,那么输出的结果是
GESP。
int main() {
string name = "GESP";
cout << name[false] << name[true] << name[1 << 1] << name[7 >> 1] << endl;
}
{{ select(22) }}
- 对
- 错
- 某个初学 C++ 的学生,在对照参考程序写了一个程序以后,信心满满地进行编译,他敲进编译器的全部代码如下,这个程序能够正常编译运行。

{{ select(23) }}
- 对
- 错
-
代码逐行复刻手工运算步骤,中间不能增加任何判断逻辑,否则就不属于模拟算法。
{{ select(24) }}
- 对
- 错
-
判断一个
int型数字s[i]是不是在0和9之间(可以是0和9),判断条件可以写为if (s[i] >= '0' && s[i] <= '9')。{{ select(25) }}
- 对
- 错