试卷总分:100分


选择题 15题 30分

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15


判断题 10题 20分

16 17 18 19 20 21 22 23 24 25


编程题 2题 50分

26 27

E1092 CCF-GESP编程能力等级认证-C++ -2026-06 CCF-GESP C++二级真题-考试

选择题 共15道

01

学校组织到未来农场参观,小明听讲解员介绍,在智能温室中,湿度传感器可以连续检测土壤的湿度变化,并将检测到的湿度数据实时发送给中央控制器。中央控制器根据这些数据判断是否开启灌溉系统。请问,这里的湿度传感器所发挥的作用,类似于计算机系统中的哪一类组件?

2分
登录后查看选项
02

小明去农场参观回来后就在自己的电脑上安装了一个 3D 农场仿真模拟系统,因为他今年买的二手电脑有点老旧,系统运行时经常弹出“系统内存不足”的警告,导致系统卡顿严重。他计划通过增加物理内存来解决问题。请问他应该购买以下哪种硬件组件?

2分
登录后查看选项
03

有关如下 C++ 代码的说法,正确的是( )。

float a = 3 + 3.5;
cout << a;
2分
登录后查看选项
04

下面选择项中,与 C++ 表达式 not (x > 5 or y <= 10) 等价的是( )。

2分
登录后查看选项
05

小明在某开发环境中执行 C++ 代码 cout << (2.5 + 2.25) << ' ' << (2.2 + 2.1) 时输出 4.75 4.300000000000001 ,其原因最可能是( )。

2分
登录后查看选项
06

执行如下 C++ 程序后,当输入 4 时,输出的最后一行是( )。

int n;
cin >> n;
for (int i = n; i > 0; i--) {
	for (int j = 0; j < i; j++)
		cout << j + 1 << ' ';
	cout << endl;
}
2分
登录后查看选项
07

下面的 C++ 代码执行后其输出是( )。

int tnt = 0;
for (int i = 1; i < 5; i += 3) {
	for (int j = 0; j < i; j++)
		tnt += 1;
	cout << tnt << "#";
}
cout << tnt;
2分
登录后查看选项
08

下面的 C++ 代码执行之后的输出是( )。

int i;
for (i = -2; i < 2; i++)
	if (not i % 3 == 0)
		cout << i << "#";
cout << i;
2分
登录后查看选项
09

下面的 C++ 代码执行后其输出是( )。

int cnt = 0, i, j;
for (i = 0; i < 3; i++) {
	j = i;
	while (j) {
		cnt += 1;
		j -= 1;
	}
}
cout << i << ' ' << j << ' ' << cnt;
2分
登录后查看选项
10

下面 C++ 代码执行后其输出是( )。

int count = 0, i, j;
for (i = 1; i < 4; i++)
	for (j = 0; j < i; j++) {
		if (j % 3 != 0)
			continue;
		count += 1;
		break;
	}
cout << i << ' ' << j << ' ' << count;
2分
登录后查看选项
11

如下 C++ 代码执行后输出是 1 2 3 4 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 。横线处应该填入的运算符是( )。

int num = 1;
for (int i = 0; i < 35; i++) {
	cout << num << " ";
	if (num _______ 10)
		num _______ 2;
	else
		num _______ 1;
}
2分
登录后查看选项
12

如下数字图形在通过执行后续的 C++ 代码时,输入 10 来输出。横线处应填入的代码是( )。

1 1 1 1 1 1 1 1 1 1
1 1 0 0 0 0 0 0 0 1
1 0 1 0 0 0 0 0 0 1
1 0 0 1 0 0 0 0 0 1
1 0 0 0 1 0 0 0 0 1
1 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 1 0 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 0 0 0 1 1
1 1 1 1 1 1 1 1 1 1
int N;
cin >> N;
for (int i = 1; i < N + 1; i++) {
	for (int j = 1; j < N + 1; j++)
		if (________)
			cout << "1 ";
		else
			cout << "0 ";
	cout << endl;
}
2分
登录后查看选项
13

英文 corner case 通常翻译为极端案例或边角案例,通常指正常范围以外的问题或者情形。在如下 C++ 代码中,变量都是整型,则 corner case 最应该是( )。

int tnt = 0, cnt = 0;
while (1) {
	int score;
	cin >> score;
	if (score == -1)
		break;
	tnt += score;
	cnt += 1;
}
cout << tnt / cnt;
2分
登录后查看选项
14

如下 C++ 代码执行后,输入 4 后,输出的数字图形是( )。

int n;
cin >> n;
for (int i = n; i > 0; i--) {
	for (int j = 0; j < n - i; j++)
		cout << "0 ";
	for (int k = 0; k < i; k++)
		cout << k + 1 << " ";
	cout << endl;
}
2分
登录后查看选项
15

某学校举办“校园演讲比赛”,每位选手由 8 位评委打分(分数为 0~10 的整数),且每位评委必须打分。计分规则:去掉一个最高分,去掉一个最低分。如下程序通过键盘先输入选手编号,然后依次输入 8 个分数,并计算最终得分。下列说法正确的是( )。

for (int i = 0; i < 10; i++) {
	int id, score;
	printf("输入选手编号: ");
	scanf("%d", &id);
	int max_score = 0, min_score = 100; // 最高分和最低分
	int total_score = 0; // 总分
	for (int j = 1; j < 9; j++) {
		printf("输入选手第%d个成绩:", j);
		scanf("%d", &score);
		if (max_score < score)
			max_score = score;
		if (min_score > score)
			min_score = score;
		total_score += score;
	}
	total_score = total_score - max_score - min_score;
	printf("%d号选手的成绩:\
			去掉一个最高分%d,\
			去掉一个最低分%d,\
			最后成绩是:%d", id, max_score, min_score, total_score);
}
2分
登录后查看选项

判断题 共10道

16

又到期末考试周,小明发现这次许多闭卷考试不仅禁止携带手机、平板电脑,还有最近比较时髦的各类 AI眼镜(也有叫智能眼镜)也同样不允许带入考场。这些 AI 眼镜应该也是内置了操作系统并可能支持 Wi-Fi 或蓝牙连接。

2分
登录后查看选项
17

C++ 代码 cout << (not ('5' % 2 == 0) == ((not '5' % 2) == 0)) 执行后的输出是 1 。

2分
登录后查看选项
18

执行 C++ 语句 cout << (int(3.5) * 2) 将输出 6 。

2分
登录后查看选项
19

下面 C++ 代码执行后将输出 1-4-7- 。

for (int i = 1; i < 10; i += 3) {
	if (not i % 3)
		break;
	cout << i << "-";
}
2分
登录后查看选项
20

执行如下 C++ 代码,将从小到大依次输出 abs(N) 个整数,并在最后输出 1 。

int N;
cin >> N;
int start_num = 1, end_num = N + 1, i;
if (N < 0)
	start_num = N, end_num = 0;
for (i = start_num; i < end_num; i++)
	cout << i << " ";
cout << endl << ((i - 1) == abs(N)) << endl;
2分
登录后查看选项
21

如下 C++ 代码执行后,输出值为 9 。

int cnt = 0, i;
for (i = 0; i < 10; i++) {
	for (int j = 0; j < i; j++)
		cnt += 1;
	break;
}
cout << i;
2分
登录后查看选项
22

如下 C++ 代码执行时如输入 10 ,输出将是 100 。

int cnt = 0, N;
cout << "请输入正整数:";
cin >> N;
for (int i = 0; i < N; i++)
	for (int j = -i; j < i; j++)
		cnt += 1;
cout << cnt;
2分
登录后查看选项
23

如下 C++ 代码执行其输出是 3 。

int count = 0;
int i = 0;
while (i < 3) {
	int j = 0;
	while (j < 3) {
		if (i + j >= 3)
			count += 1;
		j += 1;
	}
	i += 1;
}
cout << count;
2分
登录后查看选项
24

如下 C++ 代码执行时如果输入正整数,其输出将是输入的正整数。

int N;
cin >> N;
int i = 0, Nbase = 1;
int rst = 0;
while (N != 0) {
	rst = rst + N % 10 * Nbase;
	N /= 10, Nbase *= 10;
	i += 1;
}
cout << rst;
2分
登录后查看选项
25

如下 C++ 代码执行时如输入 5 ,将输出代码后的字符图形。

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

000010000
000121000
001232100
012343210
123454321
2分
登录后查看选项

编程题 共2道

26

完全平方数计数

题目描述

小杨同学正在研究完全平方数。

  • 平方:一个数的平方等于这个数乘以这个数本身。
  • 完全平方数:指可以恰好表示为某个正整数的平方的数。

例如,9 是完全平方数,因为 9=32=3×3;但 27 不是,因为 27 不能表示为任何正整数的平方。

给定两个正整数 l 和 r(保证 l≤r),小杨同学想知道 l 到 r 之间的所有正整数中(包含 l 和 r),有多少个数是完全平方数。

输入

输入两行,第一行为一个正整数 l,第二行为一个正整数 r。

输出

输出一个非负整数,表示 l 到 r 中,有多少个正整数是完全平方数。如果 l 到 r 中没有完全平方数,则输出 0 。

数据范围

1≤l≤r≤2000

输入样例1

1

21

输出样例1

4

25分

C0731
登录后作答
27

菱形

题目描述

给定正整数 n,在 (2n-1)×(2n-1) 个网格的画布中,使用字符画一个边长为 n 个网格的菱形。其中,空白网格使用 . 表示,菱形边所在的网格用 + 表示。

例如当 n=3 时,图形如下:

..+.. 
.+.+. 
+...+ 
.+.+. 
..+.. 

输入

输入一个正整数 n

输出

输出2n-1行,表示按要求画的菱形。

数据范围

3≤n≤15

输入样例1

4

输出样例1

...+...

..+.+..

.+...+.

+.....+

.+...+.

..+.+..

...+...

25分

C0732
登录后作答