#1580. GESP-C++二级(2025-12)

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

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

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

1. 近⽇,空中客车公司表⽰,约6000架空客A320系列飞机需要紧急更换⼀种易受太阳辐射影响的飞⾏控制软 件。空客表⽰,在对⼀起飞⾏事故分析后的结果显⽰,强烈的太阳辐射可能会损坏飞⾏控制系统所需的关键数据, 导致判断失误,进⽽引发飞⾏异常。那这⾥的飞⾏控制系统执⾏判断的部件最可能是下⾯的( )。

{{ select(1) }}

  • 辐射传感器
  • 处理器
  • 内存单元
  • 输出设备

2. ⼩明最近为了备考GESP,开始看B站上关于⽹络知识的视频。其中提到计算机⽹络系统有不同的划分标准, 那他平时上学所在的教学楼内的⽹络是⼀个( )。

{{ select(2) }}

  • PAN
  • LAN
  • MAN
  • WAN

3. 下⾯有关C++变量的说法,正确的是( )

{{ select(3) }}

  • 不可以⽤ for 作为变量名,因为 for 是C++的关键字(保留字)。
  • _tnt 不可以是变量名,因为变量名的第⼀个字符必须是英⽂字母。
  • _tnt_ 不可以是变量名,因为最后⼀个字符容易与减号混淆。
  • 可以⽤ printf 作为变量名,因为 printf 是关键字,但这不是好习惯,因为 printf 有约定的功能与含

4. ⼀个⼩数是0.123123123……⽆限循环,其⼩数点后1位是1,后2位是2,依此类推,求第N位的值。横线处应 填⼊的代码是( )。####

int N;
cin >> N;
remainder = ______________;
if (remainder == 0)
  cout << 1;
else if (remainder == 1)
  cout << 2;
else
  cout << 3;

{{ select(4) }}

  • N % 3
  • (N - 1) % 3
  • N / 3
  • (N - 1) / 3

5. 某同学执⾏C++代码时 printf("%g\n", (3 + 3.1415926535)); 输出 6.14159 ,其原因最可能是( )。

{{ select(5) }}

  • C++中整数和浮点数相加时,整数会被转换为浮点数,⽽某些⼗进制⼩数⽆法精确表⽰为⼆进制⼩数,从而产生某些舍入误差。
  • C++的 printf 函数在输出浮点数时根据格式有默认⼩数点位数,因此输出了较少的位数。
  • 3.1415926535 是⼀个⽆限循环⼩数,在计算机中⽆法精确表⽰。
  • 由于计算机CPU的运算错误导致。

6. 某单位⼯号的编码规则:编码总长5位,均为数字,前4位依次整除以3其值累加之和除以10的余数为第5位数 字。如某⼯号为76587,前4位分别整除以3后,商分别为2、2、1、2,其累加之和为7,除以10的余数为7,故第5位 为7。下⾯代码依次输⼊前4位后,两个横线处分别应填的是( )。

int rst = 0, N;
for (int i = 0; i < 4; i++){
  cin >> N;
  rst += ___________; // L1
}
cout << ___________; // L2

1.N % 3​   rst / 10
2.N % 3   rst % 10
3.N / 3   rst / 10
4.N / 3   rst % 10
{{ select(6) }}

  • 1
  • 2
  • 3
  • 4

7. 下⾯的C++代码执⾏后的输出是( )

for (int i = -2; i < 2; i++)
  if (i % 2)
    printf("%d#",i);

{{ select(7) }}

  • -1#1#
  • -1#0#1#
  • -2#-1#1#
  • -2#-1#1#2#

8. 下⾯的C++代码执⾏后其输出是( )

int cnt = 0, N;
for (int i =1; i < 10; i += 2)
  for (int j =0; j < i; j++)
    cnt += 1;
cout << cnt;

{{ select(8) }}

  • 100
  • 55
  • 45
  • 25

9. 下⾯C++代码执⾏后其输出是( ) 2 6

int i,j;
for (i = 1; i < 12; i++){
  if (i % 2 == 0)
    continue;
  for (j = 0; j < i; j++)
    if (i * j % 2 == 0)
      break;
  if(j >= i)
    cout << i * j << " ";
}
if(i >= 12)
  cout << (i * j);

{{ select(9) }}

  • 0 0
  • 11
  • 0
  • 0 11

10. 与下⾯C++输出效果不⼀致的代码是( )

int i;
for (i = 0; i < 10; i++)
  cout << i;
int i = 0;
while (i < 10){
  cout << i;
  i += 1;
}
int i = 0;
while (i < 10){
  i += 1;
  cout << i;
}
int i = 0;
while (true){
  cout << i;
  i += 1;
  if (i >= 10)
    break;
}
int i = 0;
while (true){
  if (i >= 10)
    break;
  cout << i;
  i += 1;
}

{{ select(10) }}

  • 1
  • 2
  • 3
  • 4

11. 下⾯C++代码执⾏后输出是( )

int num = 0;
while (num <= 5){
  num += 1;
  if (num % 3)
    continue;
  printf("%d#",num);
}
if(num > 5)
  printf("%d", num);

{{ select(11) }}

  • 3#6#
  • 3#6#6
  • 1#2#3#4#5#6#
  • 1#2#3#4#5#6#6

12. 下⾯C++代码执⾏后,其输出是( )

int cnt = 0;
for (int i = 0; i <5; i++)
  for (int j =i; j < 4; j++)
    cnt += 1;
cout << cnt;

{{ select(12) }}

  • 9
  • 10
  • 14
  • 20

13. 漂亮数的定义是:如果N能被M整除,或者某位是M,或者N的每位数之和能被M整除,则说N是M的漂亮 数。如果三个条件都满⾜,则是完整漂亮数。123是3的完整漂亮数,因为123能被3整除,也含有3,其每位数之和 为6也能被3整除。下⾯的代码⽤于判断N是否为M的完整漂亮数并输出。相关说法正确的是( )。

int N, M, Flag, Sum, num;
cout << "请输入N,不等于0的正整数:";
cin >> N;
cout << "请输入M:M必须大于1小于9:";
cin >> M;
Sum = 0; // 记录各位数之和
Flag = 0; // 假设记录N不含有M
while (N != 0){
  num = N % 10;
  Sum += num;
  if (num == M)
    Flag = 1;
  N /= 10;
}
if ((N % M == 0) && (Flag == 1) && (Sum % M == 0)) // L1
  printf("%d 是 %d 的完整漂亮数", N, M);
else
  printf("%d 不是 %d 的完整漂亮数", N, M);

{{ select(13) }}

  • 代码能完成题⽬设定⽬标。
  • 在 while 循环中N最终将变成0,因此L1⾏代码中 N % M 将总是满⾜条件,可以在 while 前增加⼀⾏代码,int old_num = N; ,并将L1开始这4行代码中的 N 都改为 old_num 就可以做出正确的判定。
  • while 循环中 if 判断语句可以增加 else ⼦句,其内容为 Flag = 0 。
  • 如果先后输⼊ 0 和 3 ,则肯定会输出 0是3的完整漂亮数 。

14. 阅读下⾯的C++代码。执⾏后如输⼊ 5 ,其输出的字符图形是( )

int n,i,j,k;
cin >> n;
for (i = 0; i < n; i++){
  for (j = 0; j < n-i-1; j++)
      cout << " ";
  for (k = 0; k < 2*i+1; k++)
      cout << "*";
  cout << endl;
}

{{ select(14) }}

  • 1
  • 2
  • 3
  • 4

15. 某学校举办“⼗佳歌⼿⼤奖赛”,经过选拔最终参赛选⼿有25⼈,评委10⼈,最终计分规则去掉⼀个最⾼分 去掉⼀个最低分作为该参赛选⼿的最终得分,并输出该得分。如果单个评委可给满分为10分,则相关说法正确的是 ( )。 6 9 12 15

float total_score, max_score, min_score, now_score;
for (int i = 0; i < 25; i++){
  max_score = 0;  // 记录最高分
  min_score = 10; // 记录最低分
  total_score = 0; // 记录总分
  for (int j = 0; j < 10; j++){
    cin >> now_score; // 录入评委打分
    max_score = max(max_score, now_score); // L1
    min_score = min(min_score, now_score); // L2
    total_score += now_score;
  }
  cout << (total_score - max_score - min_score);
}

{{ select(15) }}

  • 程序总体逻辑错误。因为要去掉最⾼分和最低分,需要排序,⽽程序没有相关代码。
  • 内层循环和外层循环之间的三⾏代码也就是 max_score = 0 开始的三⾏代码应该移动到外层循环外。
  • L1和L2标记的两⾏代码可以分别改为简单的 if 语句或 ? : 语句。
  • total_score += now_score 不可以更改为 total_score = total_score + now_score 。

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

1. 鸿蒙是华为公司开发的⼀款操作系统,那么它能够将正确的源程序翻译成⽬标程序,并运⾏。( )

{{ select(16) }}

2. C++表达式 5 < 10 && 20 对应的逻辑值为 true 。( )

{{ select(17) }}

3. C++表达式 10 / 0.333333 == 10 / (1 / 3) 的值为 true 。( )

{{ select(18) }}

4. 下⾯C++代码中N是整数,执⾏时⽆论输⼊负整数、0或正整数,其输出都将是 0 。 ( )

cin >> N;
while (N)
  N /= 10;
cout << N;

{{ select(19) }}

5. 下⾯的C++代码执⾏后,其输出是 4 0 。( )

int a,b;
a = 4;
b = a == 5;
cout << a << ' ' << b;

{{ select(20) }}

6. C++代码中对表达式 ('Z' - 'A') < ('z' - 'A') 的结果输出为 0 。( )

{{ select(21) }}

7. 下⾯的C++代码可以⽤于判断正整数N的位数(即⼏位数,如123是3位数,12为2位数)。( )

int N, N10, i;
cin >> N;
N10 = 10, i = 1;
while (1) {
  if (N % N10 == N) {
    printf("%d 是 %d 位数", N, i);
    break;
   }
  i++, N10 *= 10;
}

{{ select(22) }}

8. 计算交叉加减的结果,形如 1-2+3-4+5-…… 。下⾯C++代码中的变量都是整型,则将 Flag = -Flag 改为 Flag -= Flag 效果相同。( )

cin >> N;
Flag = -1;
tnt = 0;
for (i = 1; i < N + 1; i++) {
Flag = -Flag;
  tnt += Flag * i;
}
cout << tnt;

{{ select(23) }}

9. 下列C++代码段执⾏后将输出 55 。( )

int cnt = 0;
for (i = 0; i < 10; i++)
for (j = i; j < 10; j++)
    cnt += 1;
cout << cnt;

{{ select(24) }}

10. 下⾯C++代码执⾏后输出如下,因为代码 printf("\n") 没有任何可读内容,删除不影响输出效果。( )

for (int i = 1; i < 10; i++) {
  for(int j = 1; j < 10; j++)
    printf("%3d", i * j);
  printf("\n");
}
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

{{ select(25) }}