#1595. GESP-C++三级(2025-12)

GESP-C++三级(2025-12)

CCF GESP C++ 三级 (2025 年 12 月)

一、单选题(每题 2 分,共 30 分)

1. 请将⼆进制数(1101.101)2(1101.101)_2 ,转换为等值的10进制数( )

{{ select(1) }}

  • 14.25
  • 13.625
  • 13.5
  • 14.5

2. 以下关于标准 C++ ⼀维数组的描述,哪⼀项是错误的?( )

{{ select(2) }}

  • 数组的下标从0开始
  • 数组在内存中是连续存放的
  • 数组的长度只能在运⾏时才能确定
  • 可以在程序中修改数组某个元素的值

3. 下列代码段执⾏后,变量 sum 的值是( )

{
int sum = 0;
for (int i = 1; i <= 10; i++) {
if (i % 3 == 8>>2)
continue;
sum += i;
}
}

{{ select(3) }}

  • 12
  • 17
  • 33
  • 40

4. 执⾏以下程序段,输出值是( )

int x = 5;
if (x == 3 >> 2) x = 8 >> 3;
cout << x << endl;

{{ select(4) }}

  • 0
  • 5
  • 120
  • 1

5. 已知字符串 s = "C++ Programming" ,下列程序运⾏的结果是( )

cout << (int)(s.length() | 3) << endl;

{{ select(5) }}

  • 14
  • 15
  • 16
  • 17

6. 以下代码是⼀个程序的部分代码,能够正确执⾏,输出的结果是( )

int arr[5] = {1, 2, 3, 4, 5};
int p = arr[1];
cout << (p + 2) << endl;

{{ select(6) }}

  • 1
  • 2
  • 3
  • 4

7. 以下关于 C++ 求最⼩值函数 min() 的描述,不正确的是( )

{{ select(7) }}

  • 函数必须返回⼀个值
  • 该函数可以嵌套调⽤
  • 调⽤ min(5) 是错误的,不能通过编译
  • 调⽤ min() (不传任何参数)可以通过编译,结果为 0

8. 在⼀个特定的计算机系统中,假如 unsigned int 类型需要占⽤2个字节的存储空间(每个字节有8位), 则 unsigned int 可以表⽰的数据范围是( )

{{ select(8) }}

  • 0 ~ 65535
  • 0 ~ 65536
  • -65536 ~ 65535
  • 0 ~ 32767

9. 以下代码执⾏后,数组 arr 的内容是( )

int arr[6] = {1, 2, 3, 4, 5, 6};
for (int i = 0; i < 6; i += 2) {
arr[i] = arr[i] + arr[i+1];
arr[i+1] = arr[i] - arr[i+1];
arr[i] = arr[i] - arr[i+1];
}

{{ select(9) }}

  • {2,1,4,3,6,5}
  • {1,2,3,4,5,6}
  • {3,1,4,2,5,3}
  • {1,3,2,5,4,6}

10. a & b | (c ^ d) ,其中 a = 3, b = 7, c = 15, d = 4 ,计算结果是( )

{{ select(10) }}

  • ⼗进制11
  • ⼆进制11
  • ⼋进制11
  • ⼗六进制11

11. 整型变量 x 的初始值为 10 ,以下代码的输出结果是( )

int t = x--;
t -= x;
cout << t << endl;

{{ select(11) }}

  • 0
  • -1
  • 1
  • 死循环

12. 根据下⾯的流程图,如果成绩 score 输⼊ 60 ,输出的结果是( )

{{ select(12) }}

  • 优秀
  • 及格
  • 不及格
  • 没有输出

13. 以下代码运⾏后, sum 的结果是( )

int arr[5] = {2, 4, 6, 8, 10};
int sum = 0;
for (int i = 0; i < 5; i++) {
  switch (arr[i] % (1|2)) {
    case 0: sum += 1; break;
    case 1: sum += 2; break;
    case 2: sum += 3; break;
  }
}

{{ select(13) }}

  • 10
  • 11
  • 14
  • 15

14. 以下关于 C++ 中 abs() 函数的描述,正确的是( )

{{ select(14) }}

  • abs() 函数可⽤于计算 int 类型整数的绝对值,头⽂件为 <cmath><cmath><cstdlib><cstdlib>
  • 调⽤ abs(3.14) 可以四舍五⼊得到 3
  • abs(-1, -2) 的返回值是 1
  • 若传⼊负数浮点数, abs() 会⾃动截断⼩数部分后返回整数绝对值

15. 如果字符串 s 的值是 GESP ,以下代码 s 的最后结果是( )

for (int i = 0; i < s.length(); i++) {
  s[i] = toupper(s[i] + i);
}

{{ select(15) }}

  • GESP
  • HFTR
  • hesp
  • GFUS

二、判断题(每题 2 分,共 20 分)

1. 在 C++ 中,数组名不能改变,数组名不能被赋值

{{ select(16) }}

2. 整型变量 a 的值为 3 ,浮点数变量 b 的值为 3.5 ,在 C++ 编译环境下,经过 a *= b 计算后, a 的 值变为 10.5 ,此时如果输出 a ,将输出 10.5 。

{{ select(17) }}

3. strcmp(str1, str2) 返回 0 表⽰ str1 ⼤于 str2 ,返回正数表⽰两者相等

{{ select(18) }}

4. 以下代码输出结果为 8

int a = 5, b = 3;
int c = a++ + ++b;
cout << c << endl;

{{ select(19) }}

5. 位运算符 & 、 | 、 ^ 、 ~ 的优先级⾼于算术运算符 + 、 - 、 * 、 /

{{ select(20) }}

6. 在 C++ 中, int a[] = {1, 2, 3, 4, 5}; 可以定义⼀个包含 5 个元素的整型数组

{{ select(21) }}

7. C++ 表达式 z = a > b ? x : y 等同于: 以下代码执⾏后,输出将会是 2 。

if (a > b) {
  z = x;
} else {
  z = y;
}
int main() {
  int arr[5] = {1, 2, 3, 4, 5};
  cout << arr[3 > 2 ? 1 : 2] << endl;
  return 0;
}

{{ select(22) }}

8. 在 C++ 中, ++ 和 -- 运算符只能⽤于整型变量,不能⽤于浮点数变量

{{ select(23) }}

9. 给定⼀个正整数 a ,当需要计算 -a 的补码时,有这样⼀个计算技巧:将 a 的⼆进制形式从右往左扫 描,遇到第⼀个 1 之后,将找到的第⼀个 1 左边的所有位都取反,能得到 -a 的补码。

{{ select(24) }}

10. 以下代码中, Hello 将被输出5次

for (int i = 0; i < 5; i++);
{
  cout << "Hello" << endl;
}

{{ select(25) }}