GESP认证C++编程真题解析 | 202506 三级

发布时间:2026/7/18 10:45:26
GESP认证C++编程真题解析 | 202506 三级 附上汇总帖GESP认证C编程真题解析 | 汇总单选题第1题8位二进制原码能表示的最小整数是 A.-127B.-128C.-255D.-256【答案】A【解析】注意此题问的是原码原码第1位是符号位后面7位是数据位。题目问能表示的最小的数那就是最小的负数所以符号位是1剩下7位数据位最多就是( 1111111 ) 2 127 (1111111)_2127(1111111)2​127所以合起来8位原码最小的就是-127选A。第2题反码表示中零的表示形式有A.1种B.2种C.8种D.16种【答案】B【解析】在反码表示中零有两种表示形式0(全0)和-0(全1))。第3题补码 1011 1011 对应的真值是 A.-69B.-59C.-68D.-58【答案】A【解析】补码10111011最高位为1表示负数。求真值可以将其符号位不变其余各位依次取反再加1得到( 11000101 ) 2 ( − 69 ) 10 (11000101)_2(-69)_{10}(11000101)2​(−69)10​所以答案为A。第4题若X的8位补码为 0000 1010则 X/2 的补码是 。A.0000 0101B.1000 0101C.0000 0101 或 1000 0101D.算术右移后结果取决于符号位【答案】A【解析】方法100001010转为十进制为10X/25补码为00000101。方法2除以2相当于是右移1位。在补码表示中正数右移1位时高位补0负数右移1位时高位补1。此处Ⅹ为正数故X/2的补码为00000101。第5题二进制数 1101.101 对应的十进制数是 A.13.625B.12.75C.11.875D.14.5【答案】A【解析】将二进制数1101.101转换为十进制1101.101 1 × 2 3 1 × 2 2 0 × 2 1 1 × 2 0 1 × 2 − 1 0 × 2 − 2 1 × 2 − 3 8 4 0 1 0.5 0 0.125 1101.1011×2^31×2^20×2^11×2^01×2^{-1}0×2^{-2}1×2^{-3}84010.500.1251101.1011×231×220×211×201×2−10×2−21×2−384010.500.125第6题补码加法中若最高位和次高位进位不同则说明 A.结果正确B.发生上溢C.发生下溢D.结果符号位错误【答案】B【解析】两个非负数相加变成负数的情况。这种情况一般称为“上溢”。第7题八进制数 35.6 对应的十进制数是 A.29.75B.28.5C.27.625D.30.25【答案】A【解析】将八进制数35.6转换为十进制( 35.6 ) 8 3 × 8 1 5 × 8 0 6 × 8 − 1 24 5 6 ÷ 8 29 0.75 29.75 (35.6)_83×8^15×8^06×8^{-1}2456\div 8290.7529.75(35.6)8​3×815×806×8−12456÷8290.7529.75因此答案为A。第8题二进制数 1010 | 1100 的结果是 A.1000B.1110C.1010D.1100【答案】B【解析】符号|表示按位或操作即只要对应位有一个为1结果就为11010|1100按位进行或运算结果为1110。答案为B。第9题以下哪个位运算可以交换两个变量的值无需临时变量 A.a a ^ b; b a ^ b; a a ^ b;B.a a b; b a | b; a a b;C.a a | b; b a ^ b; a a ^ b;D.a ~a; b ~b; a ~a;【答案】A【解析】要交换两个变量的值可以使用异或运算的特性a ^ a 0, a ^ 0 a且异或运算满足交换律和结合律。因此答案为A。第10题如何正确定义一个长度为5的整型数组 A.int array new int[5];B.array int[5];C.int[] array {1,2,3,4,5};D.int array[5];【答案】D【解析】在主流编程语言(如C、C、J Java)中正确定义长度为5的整型数组的方式是使用类型后跟数组名然后在方括号中指定长度。选项D int array[5];是标准的声明方式定义了一个名为 array 的5个整数元素的数组。答案为D。第11题以下程序使用枚举法穷举法求解满足条件的三位数横线处应该填入的是 #includeiostreamusingnamespacestd;intmain(){intcount0;for(inti100;i999;i){intai/100;______intci%10;if(a*ab*bc*c){count;}}coutcountendl;return0;}A.int b (i / 10) / 10;B.int b (i / 10) % 10;C.int b (i % 10) / 10;D.int b (i % 10) % 10;【答案】B【解析】程序在寻找满足a 2 b 2 c 2 a^2b²c²a2b2c2的三位数。已知 ai/100(百位)ci%10(个位)所以b应为十位数即(i%100)/10或(i/10)%10。在这些选项中 int b(i/10)%10;正确提取了十位数字。答案为B。第12题以下程序模拟了一个简单的小球反弹过程横线处应该填入的是 #includeiostreamusingnamespacestd;intmain(){intheight10;intdistance0;for(inti1;i5;i){// 模拟5次落地______ height/2;distanceheight;}coutdistanceendl;return0;}A.distance height/2;B.distance height;C.distance height*2;D.distance height1;【答案】B【解析】程序模拟小球反弹过程每次弹起高度为上次的一半(height/2)。总距离应包含下落距离和上升距离。第9行是高度减半减半完应为反弹的高度第10行则累加了反弹得上升距离。所以由此可知程序目前还缺累加下落距离应填在第8行。由于第8行时高度还未减半所以直接累加即可(下落高度是原高度反弹高度是当次下落高度的一半)。所以答案选B。第13题C代码 string s “GESP考试”; s占据的字节数是 A.10B.8C.8或10D.取决于计算机采用什么编码【答案】B【解析】在C中汉字采用不同的编码方案所得到的字节数不同。第14题C语句 string s“Gesp Test”; 执行s.rfind(“e”)以后,输出的是 A.1B.2C.6D.3【答案】C【解析】string 的rfind()方法从右向左查找字符返回找到的字符下标。Gesp Test中从右向左第一个e出现在Test中下标为6(从0开始)因此答案为C。第15题字符串Gesp考试,字符数是 A.10B.8C.6D.字符数多少取决于编码【答案】C【解析】字符串Gesp考试包含6个字符G、e、s、p、考、试。判断题第16题C中 string 的 运算符比较的是字符串的内存地址而非内容A.正确B.错误【答案】B【解析】string类型变量进行 比较时比较的是内容只有字符串字面量进行比较时才比较地址面非内容第17题string 的 substr(1, 3) 返回从下标1开始的3个字符的子串。A.正确B.错误【答案】A【解析】string 的 substr(pos, len)函数返回从 pos 位置开始、长度为 len 的子字符串。substr(1, 3)表示从索引1(第二个字符)开始提取长度为3的子串。例如对于字符串Hellosubstr(1, 3)将返回ell。第18题x 是浮点数 (x 1) 等价于 x / 2A.正确B.错误【答案】B【解析】位运算只能针对整数类型进行运算。第19题string(“hello”) “hello” 的比较结果为true。A.正确B.错误【答案】A【解析】string类型进行 比较时比较的是内容。所以题面描述正确。第20题sort 可以直接用于排序 set 中的元素。A.正确B.错误【答案】B【解析】set不可以用 sort 排序。第21题(x 1) 0 可以判断整数 x 是否为偶数。A.正确B.错误【答案】A【解析】本质为取出x二进制的最低位进行判断偶数的二进制形式中最低位一定为0。第22题string 的 substr(2, 10) 在字符串长度不足时会抛出异常。A.正确B.错误【答案】B【解析】当字符串长度不足时不会抛出异常会截取到最后一个字符。第23题在数学纸面计算中 pow(2, 3) 的计算结果一定是8但是在C中如果遇到数据类型是浮点数那就不 一定正确。A.正确B.错误【答案】A【解析】计算机无法精确表示所有小数。第24题在 C 中枚举的底层类型可以是非整型如 float 或 double 。A.正确B.错误【答案】B【解析】必须是整型。第25题函数声明 double f(); 返回 int 时会自动转换为 doubleA.正确B.错误【答案】A【解析】这里有一个自动地隐式类型转换。编程题题解洛谷 B4358 [GESP202506 三级] 奇偶校验题解洛谷 B4359 [GESP202506 三级] 分糖果