#4474. 2025年9月GESP C++一级认证试题
2025年9月GESP C++一级认证试题
一、单项选择题
共15题,每题2分,共30分;每题有且仅有一个正确选项。
- 人工智能现在非常火 ,小杨就想多了解一下 ,其中就经常听人提到“大模型” 。那么请问这里说的“大模型”最贴切是指 ( )。
{{ select(1) }}
- 大电脑模型
- 大规模智能
- 智能的单位
- 大语言模型
- 小杨这学期刚开学就选修了一门编程课 ,然后就想编写程序来计算1到10001之间的所有偶数的和 。他希望程序采用简单累加整数的方法, 同时希望源程序尽可能清晰、简洁 ,则下面关于实现累加时采用的主要控制结构的哪个说法最不合适( )。
{{ select(2) }}
- 使用循环结构
- 使用循环和分支的组合
- 仅使用顺序结构
- 不使用分支结构
- 下面的C++代码用于输入姓名 ,然后输出姓名 ,正确的说法是( )。
1 string XingMing ;
2 cout << "请输入您的姓名: " ;
3 cin >> XingMing ;
4 cout << XingMing ;
{{ select(3) }}
- XingMing 是汉语拼音 ,不能作为变量名称
- 可以将 XingMing 改为 Xing Ming
- 可以将 XingMing 改为 xingming
- 可以将 XingMing 改为 Xing-Ming
- 下列C++代码中a和b都是整型变量 ,执行后 ,其结果是( )。
1 a = 13 ;
2 b = 5 ;
3 cout << a / b << a %// b << a % b ;
4 a*b ;
{{ select(4) }}
- 2 3
- 23
- 20
- 以上都不准确
- C++表达式 3 * 4 % 5 / 6 的值是( )。 {{ select(5) }}
- 10
- 5
- 2
- 0
- 下面的C++代码中变量N和M都是整型 ,则执行时如果先输入10并输入一个制表符后输入20并回车 ,其输出的数值是( )。
{{ select(6) }}
- {30}
- 1020
- {N+M}
- 不输出 ,继续等待输入
- 当前是9月 ,编写C++代码求N个月后的月份 。横线处应填入的代码是( )。
1
2
3
4
5
6
7
int N , M;
cin >> N ;
M = ______________ ;
if (M == 0 )
printf("%d个月后12月 " , N ) ;
else
printf("%d个月后是%d月 " , N , M ) ;
{{ select(7) }}
- N % 12
- 9 + N % 12
- (9 + N ) / 12
- (9 + N ) % 12
- 下面C++代码执行后的输出是( )。
1
2
3
4
int n = 0 ;
for (int i =0 ; i < 100 ; i++)
n += i % 2; cout << n ;
{{ select(8) }}
- 5050
- 4950
- 50
- 49
- 下面的C++代码执行后输出是( )。
1
2
3
4
int N = 0 , i;
for (i = -100 ; i < 100 ; i++)
N += i % 10 ; cout << N ;
{{ select(9) }}
- 900
- 100
- 0
- -100
- 下面C++代码执行后输出是( )。
{{ select(10) }}
- 1#2#
- 1#2#END
- 1#2
- 1#2#3#4#END
- 下面的C++代码用于求N的镜面数(N的个位到最高位的各位数字依次反过来出现在数字中 ,但高位0将被忽略 ,不输出) ,如输入1234 ,则将输出 4321 ,又如输入120 ,则将输出 21 ,错误的选项是( )。
{{ select(11) }}
- N != 0
- not (N == 0 )
- N = 0
- N > 0
- 下面C++代码用于交换两个正整数a和b的值 ,不能实现交换的代码是( )。口 A.
1
2
3
4
5
6
7
8
cout << "输入第一个正整数 : " ;
cin >> a ;
cout << "输入第二个正整数 : " ;
cin >> b ;
temp = a ;
a = b ;
b = temp ;
cout << "a= " << a << " b= " << b << endl;
{{ select(12) }}
- 下面C++代码用于获得正整数N的第M位数 ,约定个位数为第1位 ,如N等于1234 ,M等于2 ,则输出3 。假设M的值是大于等于1且小于等于N的位数 。横线处应填入的代码是( )。
{{ select(13) }}
- N % div / 10
- N / div / 10
- N % div % 10
- N / div % 10
- 下面C++代码执行后输出是( )。
1
2
3
4
5
6
7
num = 0 ;
while (num <= 5 ){
num += 1;
if (num == 3 )
continue ;
printf("%d# " , num) ;
}
{{ select(14) }}
- 1#2#4#5#6#
- 1#2#4#5#6
- 1#2#3#4#5#6#
- 1#2#3#4#5#6
- 下面C++代码用于记录多个输入数中的最大数和最小数(输入 -999 则输入结束) ,相关说法错误的是 ( ) 。
题号 1 2 3 4 5 6 7 8 9 10
答案 x
×
x x V
{{ select(15) }}
- 程序运行时如果第一个数输入 -999 ,则输出将是 -999 -999
- 程序输入过程中 ,如果输入的第一个数不是 -999 ,则如果待输入的数据中没有 -999 ,则程序能求出已输入整数中的最大数和最小数
- 如果用于输入考试成绩, 即成绩中不可能有 -999 ,则程序能求出已输入成绩中的最高成绩和最低成绩
- 可以将 cin >> now_num; 移动到 while (now_num != -999) { 下面 ,结果不变
二、判断题
共10题,每题2分,共20分。
- 在集成开发环境里调试程序时 ,要注意不能修改源程序, 因为如果修改 ,就要终止调试、关闭该文件并重新打开 ,才能再次开始调试 。 ( ) {{ select(16) }}
TrueFalse
- 执行C++表达式 10 % 0 .5 将报错, 因为 0 .5 所在位置只能是整数 。( ) {{ select(17) }}
TrueFalse
- 下面C++代码执行后将输出 9 。 ( ) {{ select(18) }}
TrueFalse
- 下面C++代码执行后将输出 55 。 ( )
1
2
3
4
n = 0 ;
for (int i = 0 ; i > -10 ; i--)
n = n + i * -1; cout << n ;
{{ select(19) }}
TrueFalse
- 将下面C++代码中的 L1 行的 i = 0 修改为 i = 1 , 其输出与当前代码输出相同 。 ( )
1
2
3
4
cnt = 0 ;
for (int i = 0 ; i < 100 ; i++) // L1 cnt += i;
cout << cnt
{{ select(20) }}
TrueFalse
- 将下面C++代码中的 i < 10 修改为 i <= 10 ,其执行后输出相同 。 ( )
1
2
3
4
5
6
7
int n , i;
n = i = 0 ;
while (i < 10){
n += i;
i += 1; }
cout << n ;
{{ select(21) }}
TrueFalse
- 下面的C++代码执行后将输出 45 。 ( )
1
2
3
4
5
6
7
int n , i;
n = i = 0 ;
while (i < 10){
i += 1;
n += i; }
cout << n ;
{{ select(22) }}
TrueFalse
- 执行C++代码 cout << (12 + 12 .12) 将报错, 因为 12 是 int 类型 ,而 12 .12 是 floa t类型 ,不同类型不能直接运算 。 ( ) {{ select(23) }}
TrueFalse
- 下面C++代码执行时将导致无限循环(也称死循环) 。 ( ) {{ select(24) }}
TrueFalse
- 下列C++代码用于求斐波那契数列, 即第1个数为0 ,第2个数为1 ,从第三个数开始 ,依次是其前两个数之和 。如果输入的值为大于1的正整数 ,该代码能实现所求 。 ( )
3.1 编程题 1
. 试题名称:商店折扣
. 时间限制: 1.0 s
· 内存限制:512.0 MB
3.1.1 题目描述
商店正在开展促销活动 ,给出了两种方案的折扣优惠 。第一种方案是购物满
元减 y 元 ;第二种方案是直接打 n折 ,也就是说价格变为原先的
。这里的 z , y,7n 均是正整数 ,并且 1 ≤ y <
,
≤ n < 10 。
需要注意的是 ,第一种方案中满减优惠只能使用一次 。例如购物满 10 元减 3 元时 ,若挑选了价格总和为 33 元的物品 ,只能减免 3 元 ,需要支付 30 元。
小明在商店挑选了价格总和为
元的物品 ,结账时只能使用一种优惠方案 。小明最少需要支付多少钱呢?
3.1.2 输入格式
四行, 四个正整数 ar,y, n, p ,含义见题目描述。
3.1.3 输出格式
一行 ,一个小数 ,表⽰小明最少需要支付多少钱 ,保留两位小数。
3.1.4 样例
3.1.4.1 输入样例 1
1
2
3
4
3.1.4.2 输出样例 1
3.1.4.3 输入样例 2
3.1.4.4 输出样例 2
3.1.5 数据范围
对于所有测试点 ,保证 1 ≤ y <
≤ 1
,
≤ n <
,
≤ p ≤ 100。
3.1.6 参考程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include
#include
using namespace std ;
int x , y , n , p ;
double a1 , a2;
int main() {
scanf("%d%d%d%d " , &x , &y , &n , &p) ; a1 = p ;
if (a1 >= x ) a1 -= y;
a2 = p * 0 .1 * n ;
printf("% .2lf\n " , min(a1 , a2)) ; return 0 ;
}
3.2 编程题 2
. 试题名称:金字塔
. 时间限制: 1.0 s
. 内存限制:512.0 MB
3.2.1 题目描述
金字塔由 n 层石块垒成 。从塔底向上 ,每层依次需要 n x n, (n 1) x (n 1),.… , 2 x 2, 1 x 1 块石块 。请问搭建金字塔总共需要多少块石块?
3.2.2 输入格式
一行 ,一个正整数
,表⽰金字塔的层数。
3.2.3 输出格式
一行 ,一个正整数 ,表⽰搭建金字塔所需的石块数量。
3.2.4 样例
3.2.4.1 输入样例 1
1
3.2.4.2 输出样例 1
1
3.2.4.3 输入样例 2
1
3.2.4.4 输出样例 2
55
3.2.5 数据范围
对于所有测试点 ,保证 1 ≤ n ≤ 50。
3.2.6 参考程序
{{ select(25) }}
TrueFalse