#1579. GESP-C++一级(2025-12)

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

CCF GESP C++ 一级 (2023 年 03 月)

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

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

{{ select(1) }}

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

2. 下⾯的C++代码在某集成开发环境中编译运⾏时,提⽰有“Invalid Character”(“⽆效字符”)错误。可能的原 因是( ):

int a, b;
a=3,b = 4; // L1
cout << a; // L2
cout << b; // L3

{{ select(2) }}

  • L1⾏代码中的逗号很可能是中⽂逗号,应该改为英⽂逗号。
  • L1⾏应该分为两⾏,分别是 a = 3 和 b = 4 。
  • 代码运⾏前没有保存到⽂件。
  • L2和L3不能分为两⾏,应合并为⼀⾏。

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

{{ select(3) }}

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

4. X 是C++的整型变量,则 cout << (X=3, X++, ++X); 执⾏后的输出是( )

{{ select(4) }}

  • 3
  • 4
  • 5
  • 不确定

5. C++表达式 2 + 3 * 4 % 5 的值为( )

{{ select(5) }}

  • 0
  • 4
  • 14
  • 50

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

a = 3;
b = a = 4;
printf("%d %d", a, b);

{{ select(6) }}

  • 4 4
  • 3 3
  • 3 4
  • 4 3

7. 下⾯的C++代码执⾏时如果先输⼊ 10 回车后输⼊ 20 并回车,其输出是( )

int N,M;
printf("第一个数:");
scanf("%d", &N);
printf("第二个数:");
scanf("%d", &M);
printf("%%(N+M)=%d", N+M, int(N+M));

{{ select(7) }}

  • 30=30
  • 10+20=30
  • %(N+M)=30
  • 错误提⽰

8. 某个整数很长很长,形如:1232123212321……,其规律是从1开始逐⼀升⾼到3然后逐⼀降低到1,然后⼜逐 ⼀升⾼到3,⼀直到很长很长。假设最⾼位编号为1,要求判断从左边最⾼位开始的第N位数是⼏?在横线处应该填⼊ 的代码是( )。

int N, M;
cout << "请输入编号:";
cin >> N;
M = ________________;
if (M != 0)
  cout << M;
else
  cout << 2;

{{ select(8) }}

  • N % 4
  • N / 4
  • N % 3
  • N / 3

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

int i, tnt = 0;
for (i = 0; i < 100; i++)
  tnt += 1;
cout << tnt << ' ' << i;

{{ select(9) }}

  • 99 99
  • 100 99
  • 99 100
  • 100 100

10. 有关下⾯C++代码的说法,错误的是( )

int tnt = 0;
for (int i = 1; i < 10; i += 2) // L1
  tnt += i; // L2
cout << tnt;

{{ select(10) }}

  • L1的 i < 10 改为 i < 11 结果相同。
  • L1的 i = 1 改为 i = 0 结果相同。
  • tnt += i 与 tnt = tnt + i 效果相同。
  • tnt += i 与 tnt = i + tnt 效果相同。

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

int i;
for (i = 10; i < 100; i += 10){
  if (i % 10 == 0)
    continue;
  printf("%d#",i);
}
if(i >= 100)
  printf("%d END",i);

{{ select(11) }}

  • 10#20#30#40#50#60#70#80#90#100 END
  • 100#100 END
  • 100 END
  • 没有输出

12. 两个正整数,只要不相等,就⼀直进⾏如下操作:最⼤数减去最⼩数得到⼀个值,该值和两个数的最⼩数 构成新的两个正整数,重复操作,直到两个数相等,此时输出该数。下⾯的C++代码⽤于实现该操作,横线处应该 填写的代码是( )。

int N, M;
cin >> N >> M;
while (N != M){
  if (N > M)
    _______________;
  else
    _______________;
}
cout << N;

1.N = N - M ​  M = M - N
2.M = M - N ​  N = N - M
3.M = N - M ​  N = M - N
4.N, M = M, N ​  M, N = N, M

{{ select(12) }}

  • 1
  • 2
  • 3
  • 4

13. 如果⼀个正整数能被3整除,或者某⼀位能被3整除,则称之为“漂亮数”。下⾯的C++代码⽤于判断正整数N 是否为漂亮数,L1⾏的横线处应该填⼊的代码是( )。 3

Flag = 0; // "非漂亮数"
if (N % 3 == 0)
  Flag = 1; //"漂亮数"
else
  while (N != 0){
    if (_______________){ // L1
      Flag = 1;
      break;
    }
    N /= 10;
}
cout << (Flag? "漂亮数" : "非漂亮数");

{{ select(13) }}

  • N % 10 == 0
  • N % 3 % 10 == 0
  • N % 10 % 3
  • N % 10 % 3 == 0

14. 如果正整数N的所有奇因数(即能将N整除的正奇数)的和是27的倍数,则称N是27的神秘数。下⾯的 C++代码⽤于判断输⼊的N是否为27的神秘数。如输⼊53,它有两个奇因数1和53,则将输出 Y 。( )。

int i, N, cnt = 0;
cin >> N;
for (i=1; i <=N; i++){
  if (_________________)
    cnt += i;
}
if(cnt % 27 == 0)
  cout << 'Y';

{{ select(14) }}

  • (N % i) && (i % 2)
  • (N % i == 0) && (i % 2 == 0)
  • (N % i == 0) && (i % 2)
  • (N % i) && (i % 2 == 0)

15. 执⾏下⾯C++代码可以找出千位与个位的和恰好等于中间两位的四位数,横线处应该填⼊( )

int count = 0;
int a, bc, d, tmp;
for (int i = 1000; i <= 9999; i++) {
  a = (tmp = i) / 1000;
  _________________________
  bc = tmp / 10;
  d = tmp - bc * 10;
  if ( a + d == bc) {
    count++;
  }
}
cout << count;

{{ select(15) }}

  • tmp = i / 10;
  • tmp = i % 100;
  • tmp -= a * 1000;
  • tmp = i - i%1000;

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

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

{{ select(16) }}

2. C++表达式 10 * 4 % 6 和 10 * 2 % 3 的结果相同。( )

{{ select(17) }}

3. 下⾯C++代码执⾏后将输出 0 。 ( )

int i;
for (i = 0; i < 10; i++)
    if (i % 3 == 0)
        continue;
    else
        break;
cout << i;

{{ select(18) }}

4. 下⾯C++代码中的 i > -10; i-- 改为 i < 10; i++ 执⾏结果相同。( )

int tnt = 0;
for (int i = 0; i > -10; i--) {
    if (i < 0)
        i = -i;
    tnt += i;
}
cout << tnt;

{{ select(19) }}

5. 下⾯C++代码执⾏后将输出 99 ,因为 i < 100 不包括100,⽽是到99。( )

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

{{ select(20) }}

6. 下⾯的C++代码能⽤于判断输⼊的正整数是否为对称数。所谓对称数是指从左到右和从右到左读该数,其值 相同,121或414等是对称数,⽽123不是对称数。( ) 4 10

int n, new_number;
cout << "请输入正整数: ";
cin >> n;

new_number = 0;
while (n != 0) {
    new_number = new_number * 10 + n % 10;
    n /= 10;
}

if (n == new_number)
    cout << "对称数";
else
    cout << "非对称数";

{{ select(21) }}

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

int tnt = 0;
for (int i = -100; i < 100; i++)
  tnt += i;
cout << tnt;

{{ select(22) }}

8. 某同学执⾏C++代码时 printf("%g\n", (3 + 3.1415926535)); 输出 6.14159 ⽽不是 6.1415926535 表明该同学的计算机存在故障需要重新安装C++软件。( )

{{ select(23) }}

9. 如果 x 是C++代码中的 double 型变量,则对 cout << ( x? 1227 : 12.27); 编译时将报错,因为 1227 和 12.12 分别是 int 和 double 类型,导致识别混乱。####

{{ select(24) }}

10. 在C++代码中,不可以将变量命名为 keyword ,因为它是C++语⾔的关键字。( )

{{ select(25) }}