返回试卷目录

需要电子版时点「打印 / 保存为 PDF」,在打印对话框的「目标打印机」里选择「另存为 PDF」即可下载。登录后可下载,每天 10 次

GESP C++ 编程三级 · 2026 年 3 月卷

GESP · C++ · 共 27 题 · 满分 100 分

姓名:____________日期:____________得分:____________

  1. 1.单选题2 分

    如果字符变量_1的值是字符1 ,那么(int)_1的值是?()。

    • A.1
    • B.-1
    • C.49
    • D.+1 或者 -1
  2. 2.单选题2 分

    a,b是整型变量,各自有互不相同的初始值。下列程序实现了什么效果()。 a=a^b; b=a^b; a=a^b;

    • A.a,b 的值从始至终都没有改变。
    • B.a,b 的值实现了互换。
    • C.a,b 的值互换了以后,又还回去了,相当于没有变化。
    • D.a,b 的值最后和原值不一样,没有任何意义。
  3. 3.单选题2 分

    关于下列正确的程序段,说法正确的是()。这段程序多次执行将输出不同的结果。 char str1[] = "Hello"; char str2[] ={'H','e','l','l','0'};

    • A.字符数组str1和str2完全相同。
    • B.cout<<str1<<endl; cout<<str2<<endl;
    • C.字符数组str1和str2不相等。
    • D.这两个赋值方式完全相同。
  4. 4.单选题2 分

    关于以下程序段,说法正确的是()。 int x=10; cout<<(x++) + (++x)<<endl;

    • A.C++11 标准中,这是未定义行为,不同的环境有可能出现不同的结果
    • B.22
    • C.21
    • D.20
  5. 5.单选题2 分

    8 位二进制下,十进制数-15 的补码是()。

    • A.11110000
    • B.10001111
    • C.10010000
    • D.11110001
  6. 6.单选题2 分

    三进制数转换成十进制是:()。

    • A.63
    • B.65
    • C.67
    • D.69
  7. 7.单选题2 分

    二进制数 10110101 是某数的 8 位补码,该数的十进制是()。

    • A.-73
    • B.-75
    • C.-77
    • D.75
  8. 8.单选题2 分

    已知unsigned char c = 0x0F;(十六进制0F = 二进制00001111),执行c = c << 3;后,c的十进制值是:()。

    • A.64
    • B.72
    • C.80
    • D.120
  9. 9.单选题2 分

    补码的情况下,关于按位取反运算,用笔计算的情况下,以下说法错误的是:()

    • A.~5的结果是 -6(int类型,32 位)
    • B.~0的结果是 0(int类型,32 位)
    • C.~(-3)的结果是 2(int类型,32 位)
    • D.~8的结果是 -9(int类型,32 位)
  10. 10.单选题2 分

    执行以下 C++ 代码后,sub的值是()。 string str = "GESP2026"; string sub = str.substr(4, 2);

    • A.20
    • B.02
    • C.2026
    • D.026
  11. 11.单选题2 分

    执行以下代码后,输出结果是:()。 int arr[] = {5, 10, 15, 20, 25, 30}; int count = sizeof(arr) / sizeof(arr[0]); cout << count;

    • A.4
    • B.6
    • C.24
    • D.30
  12. 12.单选题2 分

    执行以下代码后,输出结果是:()。 char s[10] = "abcde"; int a = sizeof(s) / sizeof(s[0]); int b = strlen(s); cout << a - b;

    • A.4
    • B.5
    • C.6
    • D.10
  13. 13.单选题2 分

    以下问题中,最不适合用枚举法解决的是:()

    • A.找出 1~100 之间所有能被 7 整除的数
    • B.找出 100~200 之间的所有质数
    • C.计算 1+2+3+…+1000 的和
    • D.找出三位数中个位、十位、百位数字之和等于 10 的数
  14. 14.单选题2 分

    用枚举法解决 “鸡兔同笼问题:头共 35 个,脚共 94 只,求鸡和兔的数量”,以下枚举逻辑最合理的是:()

    • A.枚举鸡的数量x(0~35),兔的数量y=35-x,判断2*x + 4*y == 94
    • B.枚举兔的数量y(0~94),鸡的数量x=35-y,判断2*x + 4*y == 94
    • C.枚举所有整数x(0-100)和y(0-100),判断x+y==35 && 2*x+4*y==94
    • D.枚举脚的总数sum(0~94),判断sum == 94
  15. 15.单选题2 分

    模拟 “字符串加密”:规则为 “每个字符 ASCII 码 + 3,若超过z (122) 则从a重新开始”,以下代码中正确的条件判断是:() for (int i = 0; i < str.length(); i++) { // 需补充条件: _______________________ else { str[i] += 3; } }

    • A.if (str[i]> 122) str[i] = str[i] + 3 - 26;
    • B.if (str[i] > 122) str[i] = str[i] - 26;
    • C.if (str[i] + 3 > 122) str[i] = str[i] - 26;
    • D.if (str[i] + 3 > 'z') str[i] = 'a' + (str[i] + 3 - 'z') - 1;
  16. 16.判断题2 分

    定义int arr[5] = {1,2,3};,则arr[3]的值为 0,arr[5]是合法下标。

  17. 17.判断题2 分

    定义double arr[10];,未手动初始化时,数组中所有元素的默认值为 0.0。

  18. 18.判断题2 分

    定义int arr[] = {1,2,3};,则sizeof(arr)的结果为 12(int占 4 字节)。

  19. 19.判断题2 分

    下面的流程图是用来求 1+2+3+…+10 的和。请判断:这个流程图的逻辑正确还是错误?

    第 19 题配图
  20. 20.判断题2 分

    下面流程图的功能是计算 5 对 2 取余数,输出结果为 1。

    第 20 题配图
  21. 21.判断题2 分

    已知大写字符A的ASCII编码的十六进制表示为0x41,计算字符m的ASCII编码的八进制表示为155(八进制)。

  22. 22.判断题2 分

    在 C++ 位运算中,各种不同的运算符有优先级的区分,使用括号能够解决优先级的问题。

  23. 23.判断题2 分

    由于在 0~255 范围内,char类型和int类型可以互换,因此在这里x和y相等。 char x='1'; int y=1;

  24. 24.判断题2 分

    在C++语言中,表达式((0xf0 + 0x15) == 255)的值为true。

  25. 25.判断题2 分

    如果a为int类型的变量,且a的二进制最低位为0,则表达式((a & 3 & 1) == 0)的值为true。

  26. 26.编程题25 分

    试题名称:二进制回文串 时间限制:1.0 s 内存限制:512.0 MB 题目描述:对于一个正整数 n,我们将其转换为不含前导零的二进制表示,如果这个二进制序列从左向右读与从右向左读完全相同,则称该数为二进制回文数。例如,9 的二进制表示为 (1001)2,是二进制回文数;12 的二进制表示为 (1100)2,不是二进制回文数。你的任务是:给定一个正整数 n,计算在 1 到 n 的范围内二进制回文数的数量。 输入格式:输入一行,包含一个正整数 n。 输出格式:输出一行,包含一个数,表示在 1 到 n 的范围内二进制回文数的数量。 输入样例1: 15 输出样例1: 6 样例解释1:样例 1 中,1 到 15 范围内 1、3、5、7、9、15 是二进制回文数。 数据范围:1 ≤ n ≤ 10^5。

    第 26 题配图第 26 题配图

    作答说明:按题目要求完成程序或作品;需要在线运行与自动判分时,可在站内选择「在线考试」。

  27. 27.编程题25 分

    试题名称:凯撒密码 时间限制:1.0 s 内存限制:512.0 MB 题目描述:凯撒密码是一种替换加密技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是 3 的时候,所有的字母 A 将被替换成 D、B 被替换成 E、C 被替换成 F,以此类推,W 被替换成 Z、X 被替换成 A、Y 被替换成 B、Z 被替换成 C。这个加密方法是以罗马共和时期凯撒的名字命名的,据称当年凯撒曾用此方法与其将军们进行联系。但是和所有的利用字母表进行替换的加密技术一样,凯撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。现在给你一个已破解的凯撒密码明文与密文,与一个有相同偏移量的未破解凯撒密码密文,请你帮忙破解它。 输入格式:输入共三行:第一行包含一个字符串,表示已破解的凯撒密码明文;第二行包含一个字符串,表示已破解的凯撒密码密文;第三行包含一个字符串,表示待破解的凯撒密码密文。 输出格式:输出一行,包含一个字符串,表示待破解的凯撒密码对应的明文。 输入样例1: ABCDEFGVWXYZ DEFGHIJYZABC WKHTXLFNEURZQIRAMXPSVRYHUWKHODCBGRJ 输出样例1: THEQUICKBROWNFXJUMPSOVERTHELAZYDOG 样例解释1:样例 1 中,通过已破解的密码得出偏移量为 'D' - 'A' = 3,因此,对未破解部分进行逆向偏移:密文中的 W 对应明文中的 T('W' - 3 = 'T'),密文中的 K 对应明文中的 H('K' - 3 = 'H'),以此类推。 数据范围:保证密码长度均不超过 1000,所有字符串由大写字母组成。

    第 27 题配图第 27 题配图

    作答说明:按题目要求完成程序或作品;需要在线运行与自动判分时,可在站内选择「在线考试」。