2025年12月 GESP C++ 1级认证考试真题(含编程操作题部分)
选 单选题(共 15 题,每题 2 分)
近⽇,空中客车公司表⽰,约 $6000$ 架空客 A320 系列飞机需要紧急更换一种易受太阳辐射影响的飞行控制软件。空客表⽰,在对一起飞行事故分析后的结果显⽰,强烈的太阳辐射可能会损坏飞行控制系统所需的关键数据,导致判断失误,进⽽引发飞行异常。那这里的飞行控制系统执行判断的部件最可能是下面的( )。
下面的 C++ 代码在某集成开发环境中编译运行时,提示有“Invalid Character”(“无效字符”)错误。可能的原因是( ):
int a, b;
a=3,b = 4; // L1
cout << a; // L2
cout << b; // L3
下面有关 C++ 变量的说法,正确的是( )。
$X$ 是 C++ 的整型变量,则 cout << (X=3, X++, ++X); 执行后的输出是( )。
C++ 表达式 2 + 3 * 4 % 5 的值为( )。
下面的 C++ 代码执行后,其输出是( )。
a = 3;
b = a = 4;
printf("%d %d", a, b);
下面的 C++ 代码执行时如果先输入 $10$ 回车后输入 $20$ 并回车,其输出是( )。
int N, M;
printf("第一个数:");
scanf("%d", &N);
printf("第二个数:");
scanf("%d", &M);
printf("%%(N+M)=%d", N + M, int(N + M));
某个整数很长很长,形如:1232123212321……,其规律是从 $1$ 开始逐一升高到 $3$ 然后逐一降低到 $1$ ,然后又逐一升高到 $3$ ,一直到很长很长。假设最高位编号为 $1$ ,要求判断从左边最高位开始的第 $N$ 位数是几?在横线处应该填入的代码是( )。
int N, M;
cout << "请输入编号:";
cin >> N;
M = ________________;
if (M != 0)
cout << M;
else
cout << 2;
下面 C++ 代码执行后的输出是( )。
int i, tnt = 0;
for (i = 0; i < 100; i++)
tnt += 1;
cout << tnt << ' ' << i;
有关下面 C++ 代码的说法,错误的是( )。
int tnt = 0;
for (int i = 1; i < 10; i += 2) // L1
tnt += i; // L2
cout << tnt;
下面 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);
两个正整数,只要不相等,就一直进行如下操作:最大数减去最小数得到一个值,该值和两个数的最小数构成新的两个正整数,重复操作,直到两个数相等,此时输出该数。下面的 C++ 代码用于实现该操作,横线处应该填写的代码是( )。
int N, M;
cin >> N >> M;
while (N != M){
if (N > M)
_______________;
else
_______________;
}
cout << N;
如果一个正整数能被 $3$ 整除,或者某一位能被 $3$ 整除,则称之为“漂亮数”。下面的 C++ 代码用于判断正整数 $N$ 是否为漂亮数,L1 行的横线处应该填入的代码是( )。
int N, Flag;
cin >> N;
Flag = 0; // "非漂亮数"
if (N % 3 == 0)
Flag = 1; //"漂亮数"
else
while (N != 0){
if (_______________){ // L1
Flag = 1;
break;
}
N /= 10;
}
cout << (Flag? "漂亮数" : "非漂亮数");
如果正整数 $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';
执行下面 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;
判 判断题(共 10 题,每题 2 分)
鸿蒙是华为公司开发的一款操作系统,那么它能够将正确的源程序翻译成目标程序,并运行。( )
C++ 表达式 10 * 4 % 6 和 10 * 2 % 3 的结果相同。( )
下面 C++ 代码执行后将输出 $0$。 ( )
int i;
for (i = 0; i < 10; i++)
if (i % 3 == 0)
continue;
else
break;
cout << i;
下面 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;
下面 C++ 代码执行后将输出 $99$,因为 i < 100 不包括 $100$,⽽是到 $99$。( )
int cnt = 0;
for (int i = 0; i < 100; i++)
cnt += 1;
cout << cnt;
下面的 C++ 代码能用于判断输入的正整数是否为对称数。所谓对称数是指从左到右和从右到左读该数,其值相同,$121$ 或 $414$ 等是对称数,而 $123$ 不是对称数。( )
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 << "非对称数";
下面的 C++ 代码执行后将输出 $0$。( )
int tnt = 0;
for (int i = -100; i < 100; i++)
tnt += i;
cout << tnt;
某同学执行 C++ 代码时 printf("%g\n", (3 + 3.1415926535)); 输出 6.14159 而不是 6.1415926535,表明该同学的计算机存在故障需要重新安装 C++ 软件。( )
如果 $x$ 是 C++ 代码中的 double 型变量,则对 cout << ( x? 1227 : 12.27); 编译时将报错,因为 1227 和 12.27 分别是 int 和 double 类型,导致识别混乱。( )
在 C++ 代码中,不可以将变量命名为 keyword,因为它是 C++ 语言的关键字。( )
编 编程操作题(共 2 题,共 50 分)
试题名称:小杨的爱心快递
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨是“爱心社区”的小志愿者,每周他都会帮助邻居们寄送捐赠给山区小学的文具和书籍。快递公司为了支持公益行动,制定了特殊的运费规则,鼓励大家合理包装:
假设快递的体积为 $V$,重量为 $G$。
- 按体积计算:运费按体积计算,公式是 $0.5 \times V$ 元。
- 按重量计算:为了鼓励减轻包裹重量,规则是:当重量小于 300 克,即 $G < 300$ 时,运费为 $M$ 元;当重量达到或超过 300 克,即 $G \geq 300$ 时,运费为 $N$ 元。
快递公司的叔叔说:“我们应该选择最公平合理的计费方式。”
所以,最终的运费会取按体积计算和按重量计算这两种方式中价格较低的那一个,这样对寄件人最公道。
输入格式
四行,每行一个一位小数的浮点数,分别代表,快递的体积 $V$,快递的重量 $G$,第一档重量运费 $M$,第二档重量运费 $N$。
输出格式
一行一个一位小数,代表实际快递运费。
样例输入 #1
100.4
300.2
60.6
70.5
样例输出 #1
50.2
样例输入 #2
99.8
200.9
60.2
70.1
样例输出 #2
49.9
说明/提示
样例解释
-
对于样例 1:快递体积 $V$ 为 $100.4$,重量 $G$ 为 $300.2$,第一档重量运费 $M$ 为 $60.6$,第二档重量运费 $N$ 为 $70.5$。
- 若按体积收费,费用为 $0.5 \times 100.4 = 50.2$;
- 若按重量收费,由于重量 $G = 300.2$ 超过 $300$,费用为 $70.5$。
输出价格较低的 $50.2$。
-
对于样例 2:快递体积 $V$ 为 $99.8$,重量 $G$ 为 $200.9$,第一档重量运费 $M$ 为 $60.2$,第二档重量运费 $N$ 为 $70.1$。
- 若按体积收费,费用为 $0.5 \times 99.8 = 49.9$;
- 若按重量收费,由于重量 $G = 200.9$ 小于 $300$,费用为 $60.2$。
输出价格较低的 $49.9$。
数据范围
对于所有测试点,保证给出的浮点数均为正数,且不超过 $1000$。
试题名称:手机电量显示
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小杨的手机就像一个聪明的小助手,当电量变化时,它会用不同的方式来提醒我们,假设当前的电量百分比为 $P$:
- 当电量非常低(不超过 10,即 $P \leq 10$),它会显示一个大写字母 R,就像在说:“快给我充电吧!(Red 警告色)”
- 当电量有点低(超过 10 但不超过 20,即 $10 < P \leq 20$),它会显示一个大写字母 L,意思是“电量有点 Low 啦!”
- 当电量比较充足(超过 20,即 $P > 20$),它就会直接显示具体的数字,比如直接显示 50,表示还有 50 的电量。
输入格式
第一行一个正整数 $T$,代表数据组数。
对于每组数据,一行包含一个正整数 $P$,代表手机电量百分比。
输出格式
对于每组数据,输出一行,代表当前手机显示的电量信息。
样例输入 #1
5
10
1
20
99
19
样例输出 #1
R
R
L
99
L
说明/提示
样例解释
输入样例 1 共有五组数据:
- 第一组数据手机电量 $P = 10$,满足 $P \leq 10$,电量非常低,显示 R。
- 第二组数据手机电量 $P = 1$,满足 $P \leq 10$,电量非常低,显示 R。
- 第三组数据手机电量 $P = 20$,满足 $10 < P \leq 20$,电量有点低,显示 L。
- 第四组数据手机电量 $P = 99$,满足 $P > 20$,电量比较充足,直接显示具体的数字 $99$。
- 第五组数据手机电量 $P = 19$,满足 $10 < P \leq 20$,电量有点低,显示 L。
数据范围
对于所有测试点,保证 $1 \leq T \leq 20$,$1 \leq P \leq 100$。