#X000309. GESP C++ 三级试卷(2025年03月)

GESP C++ 三级试卷(2025年03月)

GESP C++ 三级模拟试卷

一、选择题

本试卷共15道单项选择题,考察基本语法、逻辑结构和简单算法。


第1题

Base64编码将每3字节的输入数据编码为4字节的输出数据。如果输入数据长度不是3的倍数,会用=号填充。在Base64编码中,如果输入字符串的长度为10字节,编码后的字符串长度是多少? {{ select(1) }}

  • 12字节
  • 13字节
  • 14字节
  • 16字节

第2题

UTF-8编码规则如下: 1字节:0xxxxxxx 2字节:110xxxxx 10xxxxxx 3字节:1110xxxx 10xxxxxx 10xxxxxx 4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 以下哪个字节序列是合法的UTF-8编码? {{ select(2) }}

  • 0xC0 0x80
  • 0xF0 0x90 0x80 0x80
  • 0x80 0x80 0x80
  • 0xFF 0xFE 0xFD

第3题

在8位二进制原码表示中,八进制数-5的二进制形式是什么? {{ select(3) }}

  • 10000101
  • 11111010
  • 11111011
  • 00000101

第4题

十进制数111.111的二进制表示可以是下面的哪一项? {{ select(4) }}

  • 1101111.0001110001
  • 1101110.1001110001
  • 1101111.1001110001
  • 1101111.0011110001

第5题

在C++中,补码的主要作用是? {{ select(5) }}

  • 提高浮点数的精度
  • 简化整数的加减法运算
  • 增加整数的表示范围
  • 优化内存分配

第6题

在C++中,一个8位有符号整数(使用补码表示)的范围是? {{ select(6) }}

  • -128到127
  • -127到128
  • -256到255
  • 0到255

第7题

在C++中,以下代码的输出是什么?

int a = -5;
unsigned int b = a;
cout << b;

{{ select(7) }}

  • -5
  • 5
  • 4294967291
  • 编译错误

第8题

下列程序的作用是?

int main() {
    int decimal = 25;
    cout << oct << decimal;
    return 0;
}

{{ select(8) }}

  • 将十进制数转换成八进制数
  • 将八进制数转换成十进制数
  • 将二进制数转换成八进制数
  • 将八进制数转换成16进制数

第9题

下面程序是将十进制数转换成十六进制数,应填入的代码是?

#include <iostream>
using namespace std;
int main() {
    int decimal = 255;
    // 填入代码
    return 0;
}

{{ select(9) }}

  • cout << oct << decimal;
  • cout << decimal << decimal;
  • cout << hex << decimal;
  • 不能正确执行

第10题

以下代码的说法正确的是?

#include <iostream>
using namespace std;
int main() {
    int a = 0b1101;
    int b = 0b1011;
    cout << (a ^ b);
    return 0;
}

{{ select(10) }}

  • 进行的是整体异或运算
  • 进行的是按位同或运算
  • 进行的是按位与运算
  • 进行的是按位异或运算

第11题

下面枚举法查找最大值索引程序中,横线处应该填写的是?

int arr[] = {3, 7, 2, 9, 5};
int maxIndex = 0;
for (int i = 1; i < 5; i++) {
    if (__________) {
        maxIndex = i;
    }
}

{{ select(11) }}

  • if (arr[maxIndex] > arr[i])
  • if (arr[i]-1 > arr[maxIndex])
  • if (arr[i]+1 > arr[maxIndex])
  • if (arr[i] > arr[maxIndex])

第12题

以下代码的功能是将数组中的奇数和偶数分别放在数组的前半部分和后半部分,横线处应该填入的是?

int arr[] = {1, 2, 3, 4, 5};
int left = 0, right = 4;
while (left < right) {
    while (arr[left] % 2 == 1 && left < right) left++;
    // 横线处
}

{{ 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--;

第13题

下面程序最后能够得到HelloC++的是?

string str = "HelloWorld";
cout << str;
return 0;

{{ select(13) }}

  • str.replace(0, 5, "C++");
  • str.replace(5, 5, "C++");
  • str.replace(1, 5, "C++");
  • str.replace(4, 5, "C++");

第14题

想要得到字符串World,下面程序横线处应该填入的是?

string str = "HelloC++";
// 横线处
return 0;

{{ 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);

第15题

有n个正整数,假设一个正整数是美丽数字当且仅当该正整数是9的倍数但不是8的倍数。下面的程序是编写计算n个正整数中美丽数字的数量,横线处应该填入的是?

for (int i = 1; i <= n; i++) {
    cin >> a;
    if (__________)
        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)

二、判断题


第16题

判断一个三角形是否成立的条件只有:任意两边长度之和大于第三条边的长度。 {{ select(16) }}

  • 正确
  • 错误

第17题

这段程序进行的是判断一个从键盘输入的字符的ASCII是否是奇数。若是,输出YES;否则,输出NO。

char x;
scanf("%c", &x);
int ASCII = (int)x;
cout << (x & 1 ? "YES" : "NO") << '\n';

{{ select(17) }}

  • 正确
  • 错误

第18题

闰年的定义: 普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。 世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年、2000年是闰年)。 下面程序是判断是否是闰年的正确程序:

cin >> n;
cout << ((n%4==0 && n%100!=0) || (n%400==0)) ? 1 : 0;
return 0;

{{ select(18) }}

  • 正确
  • 错误

第19题

C++语句 cout << (n%15==0 ? "YES" : "NO"); 能够判断一个整数能否被3和5同时整除。 {{ select(19) }}

  • 正确
  • 错误

第20题

有n个同学,从中抽取任意个人数来参加学校组织的大合唱,共有2的n次幂个方法。 {{ select(20) }}

  • 正确
  • 错误

第21题

若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数是偶数的这类二进制数称为A类数,否则就称其为B类数。 例如: (13)10 = (101)2,其中1的个数为3,则称此数为B类数; (10)10 = (1010)2,其中1的个数为2,称此数为A类数; 判断(2025)10化为二进制后,1的个数为偶数个,因此2025为A类数。 {{ select(21) }}

  • 正确
  • 错误

第22题

该段程序将n不停地除以2,并输出此时的商和余数,直到n=0为止。

long long n;
cin >> n;
while(n != 0) {
    cout << n/2 << ' ' << n%2 << '\n';
    n /= 2;
}

{{ select(22) }}

  • 正确
  • 错误

第23题

两个13进制的数A和B,在10进制下分别表示10和11。(A+B)13=(18)13,也就是说13进制数A加上13进制数B,和是13进制数18。 {{ select(23) }}

  • 正确
  • 错误

第24题

k进制,逢k进第二位,k^2进百位,k^3进千位。 {{ select(24) }}

  • 正确
  • 错误

第25题

CCF(十九进制)=21AC(十三进制)(不区分大小写) {{ select(25) }}

  • 正确
  • 错误