2025年3月 GESP C++ 2级认证考试真题(含编程操作题部分)
选 单选题(共 15 题,每题 2 分)
2025年春节有两件轰动全球的事件,一个是DeepSeek横空出世,另一个是贺岁片《哪吒2》票房惊⼈,入了
全球票房榜。下面关于DeepSeek与《哪吒2》的描述成⽴的是( )。
对整型变量N,如果它能够同时被3和5整除,则输出N是含有至少两个质因数。如果用流程图来描述处理过
程,则输出语句应该在哪种图形框中( )。
下面C++代码执行,其输出是( )。
int a=3, b = 4;
a == b;
b == a;
cout << a << ' ' << b << endl;
求三色彩球的颜色。有数量无限的红(Red)绿(Green)蓝(Blue)三种彩球排成一行,每组先为5个红色球,随后3
个绿色,最后为2个蓝色。每个球都有编号,从左到右依次为1,2,3……。输入整数代表编号,求该编号球的颜色。下
面是C++代码是实现,正确说法是( )。
int N, remainder;
cin >> N;
remainder = N % 10; // remainder变量保存余数
if((1 <= remainder) && (remainder<= 5))
cout << "Red";
else if ((6 <= remainder) && (remainder <= 8))
cout << "Green";
else if ((remainder == 9) || (remainder == 0))
cout << "Blue";
下面C++代码执行后其输出是( )。
int tnt = 0;
for (int i = 0; i < 10;i ++)
if (i % 3)
tnt += 1;
else
tnt += 2;
cout << tnt;
下面C++代码执行后输出是( )。
int i;
for (i = 10; i > 0; i -= 2)
break;
cout << i;
下面C++代码执行后输出是( )。
int i;
for (i =0; i < 10; i++){
if (i % 3 == 0)
continue;
cout << "0" << "#";
}
if (i >= 10)
cout << "1" << "#";
下面C++代码执行后的输出是( )。
int i,j;
for (i = 0; i < 5; i++)
for (j = i; j > 0; j -= 1)
printf("%d-",j);
下面C++代码执行后,将输出能被2整除且除以7余数为2的数。下列选项不能实现的是( )。
for (int i = 0; i < 100; i++)
if _______________________
cout << i << " ";
下面C++代码用于求1到N之间正整数中含有3的数的个数,比如123和32都是符合条件的数。则前后两处
横线应填入代码分别是( )。
int i,j;
int cnt = 0, N;
cout << "请输入正整数N:";
cin >> N;
for (i = 1; (j=i) < N; i++)
while (j != 0)
if (j % 10 == 3){
cnt +=1;
__________;
}
else
__________;
cout << cnt << " ";
在数学中N!表⽰N的阶乘,即1到N的乘积,如3!=123,且0! = 1。下面的两段C++代码用于求1到N
的阶乘之和,如N为3,则结果是9(1!+2!+3!的值)。选项中的说法正确的是( )。
// 实现1
int i,N;
cin >> N;
int tnt = 0, last = 1;
for (i = 1; i < N + 1; i++){
last *= i;
tnt += last;
}
cout << tnt << endl;
// 实现2
int i,N;
cin >> N;
int tnt = 0, tmp;
for (i = 1; i < N + 1; i++){
tmp = 1;
for (int j = 1; j < i + 1; j++)
tmp *= j;
tnt += tmp;
}
cout << tnt << endl;
哥德巴赫猜想是指大于2的偶数都可以分解为两个质数之和,下面的代码用于验证4-1000之内的偶数能否分
解为两个质数之和。下面C++代码中假设isPrime()是已经定义好用于判断正整数N是否为质数, 返回bool值。对该段代
码,错误的说法是( )。
for (i = 4; i < 1000; i += 2)
for (j = 2; j < i; j++)
if (isPrime(j) && isPrime(i-j)){
printf("%d=%d+%d\n", i, j, i-j);
break;
}
已知C++代码和执行后的期望输出如下,相关说法正确的是( )。
int i,j;
int last, N;
cout << "请输入层数N:";
cin >> N;
last = 1;
for (i = 1; i < N; i++){
for (j = 1; j < i + 1; j++){ // L1
if (last > 9)
last = 1;
cout << last << " ";
last += 1;
}
printf("\n");
}
请输入层数N:10
1
2 3
4 5 6
7 8 9 1
2 3 4 5 6
7 8 9 1 2 3
4 5 6 7 8 9 1
2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
在C++中,( )最适合填入横线处连续5次正确生成1到10之间的随机整数?
for(int i=0; i<5; i++)
__________________;
在C++中,如果a和b均为float类型的变量,那么二者如果相差足够小(比如0.000001),就可以视作
相等。比如2.2345676和2.2345677就可以视作相等。下列哪个表达式能用来正确判断“a等于b” ( )。
判 判断题(共 10 题,每题 2 分)
C++、Python都是高级编程语⾔,它们的每条语句最终都要通过机器指令来完成。( )
在C++代码中,假设N为正整数,则N - N / 10 * 10与N % 10都将获得N的个位数。( )
C++语句cout << ((10 <= N <= 12)? "true":"false")中,假设整型变量N为12,则其输出为
true。原因是执行10 <= N后其值为true,true与12相比仍然是true。( )
C++表达式(sqrt(N) * sqrt(N)) == N中的N如果为正整数,则表达式的值为true,相当于开平方后平方
是本身。( )
下面C++执行后将输出3*2=6。 ( )
int a=2, b = 3;
a=a-b;
b=a+b;
a=b-a;
printf("%d*%d=%d\n", a, b, a*b);
下面C++代码执行后将输出10。( )
int i;
for (i = 0; i < 10; i++)
continue;
cout << i << endl;
下面C++代码执行后将输出1。( )
int i;
for (i = 1; i < 10; i++){
break;
continue;
}
cout << i << endl;
下面的C++代码执行后将输出10行"OK"。( )
for (int i = 0; i < 5; i++)
for(int j = 0; j < i; j++)
printf("OK\n");
将下面C++代码中的for循环中的i = 1调整为i = 0的输出结果相同。( )
int tnt = 0;
for (int i = 1; i < 5; i++) // i=1
tnt += i;
cout << tnt;
下面C++代码执行后将输出0123。( )
for (i = 0; i < 5; i++)
for (i = 0; i < i; i++)
continue;
printf("%d\n", i);
编 编程操作题(共 2 题,共 50 分)
试题名称:等差矩阵
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
⼩ A 想构造⼀个 ⾏ 列的矩阵,使得矩阵的每⼀⾏与每⼀列均是等差数列。⼩ A 发现,在矩阵的第 ⾏第 列填
⼊整数 ,得到的矩阵能满⾜要求。你能帮⼩ A 输出这个矩阵吗?
输入格式
⼀⾏,两个正整数 。
输出格式
共 ⾏,每⾏ 个由空格分割的整数,表⽰⼩ A 需要构造的矩阵。
数据范围
对于所有测试点,保证 , 。
试题名称:时间跨越
时间限制:1.0 s | 内存限制:512.0 MB
输入格式
输⼊包含五⾏,每⾏⼀个正整数,分别代表 。
输出格式
输出四个正整数,代表 。
数据范围
对于全部数据,保证有 。数据保证为合法时间。
3.2.13 提示
闰年判断规则
普通闰年:年份能被 4 整除,但不能被 100 整除。
世纪闰年:年份能被 400 整除。
满⾜以上任意⼀条规则的年份就是闰年,否则是平年。