试卷总分: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

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

选择题 共15道

01

第二届世界人形机器人运动会开幕式上,机器人方阵通过控制程序来完成整场表演。表演前,工程师们使用集成开发环境(IDE)编写并调试方阵的控制程序。下列关于IDE 功能的描述,错误的是()。

2分
登录后查看选项
02

计算机CPU 中的高速缓冲存储器(Cache)主要为提升系统性能而设计。下列关于Cache 的说法中正确的是()。

2分
登录后查看选项
03

执行如下C++代码,其输出是()。

cout << (3 == 3.0);
2分
登录后查看选项
04

执行如下C++ 代码,其输出是()。

cout << (bool(5) + bool(-5) + bool(5 .0));
2分
登录后查看选项
05

判断年份N 是否为闰年的规则是:能被4 整除但不能被100 整除,或者能被400 整除。以下C++表达式中,能正确判断N 是否为闰年的是()。

2分
登录后查看选项
06

执行如下C++ 代码,其输出是()。

int tot , i;
tot = 0 ;
for (i = 0 ; i < 10 ; i++)
	if (i)
		tot += 1;
cout << tot ;
2分
登录后查看选项
07

执行如下C++ 代码,当输入4 时,其输出是()。

int n , tot , i , j ;
cin >> n ;
tot = 0 ;
for (i = 1; i < n ; i++)
	for (j = 1; j < i; j++)
		tot += 1;
cout << tot ;
2分
登录后查看选项
08

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

int tnt , i;
tnt = 0 ;
for (i = 0 ; i < 10 ; i++)
	if (i % 3)
		tnt += i;
cout << tnt ;
2分
登录后查看选项
09

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

int tot = 0 , i;
for (i = -5 ; i < 5 ; i++)
	if (not(i % 3 != 0))
		tot += 1;
cout << tot ;
2分
登录后查看选项
10

有关如下C++代码描述,变量都是整型,错误的是()。

int n , limit , i;
cout << "请输入一个正整数: ";
cin >> n ;
if (n <= 1)
	printf("%d非素数", n);
else if (n == 2)
	printf("2是素数");
else {
	limit = sqrt(n) + 1;
	for (i = 2; i < limit ; i++)
		if (n % i == 0) {
			printf("%d非素数", n);
			break;
		}
	if (i >= limit)
		printf("%d是素数", n);
}
2分
登录后查看选项
11

执行以下C++代码后,最终的输出结果是()。

int total , i , j ;
total = 0 ;
i = 1;
while (i <= 3) {
	for (j = 1; j < i + 1; j++)
		total += i * j ;
	i += 1;
}
cout << total;
2分
登录后查看选项
12

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

int count , i , j ;
count = 0 ;
for (i = 1; i < 4 ; i++)
	for (j = 0 ; j < i; j++) {
		if (j % 3 == 0)
			continue ;
		count += 1;
		if (i * j >= 2)
			break;
	}
printf("%d %d %d ", i , j , count);
2分
登录后查看选项
13

如下的C++代码执行时输入12 将输出如下数字图形。注意:最后一行之前没有空格。横线处应填入的代码是()。

           0
          12
         345
        6789
       01234
      567890
     1234567
    89012345
   678901234
  5678901234
 56789012345
678901234567

int line , i , j , k;
i = 0 ;
cout << "请输入行数:";
cin >> line ;
for (j = 0 ; j < line ; j++) {
	for (k = 0 ; k <           ; k++) // L1
		cout << " ";
	for (k = 0 ; k < j + 1; k++) {
		cout << i;
		i += 1;
		if (i >= 10)
			i = 0 ;
	}
	cout << endl;
}
2分
登录后查看选项
14

小北的身高是1 .65 米。班上有n 个小朋友,小北想和身高最接近自己的人交朋友。如果有多个小朋友与小北的身高差相同,小北想和其中身高较矮的第一个小朋友做朋友。横线处应该填入的是()。

int n , i;
float target , h , best_height , min_diff , diff;
cout << "请输入小朋友的人数: ";
cin >> n ;
target = 1 .65 ;
best_height = 0 .0 ;
min_diff = 100 .0 ;
for (i = 0 ; i < n ; i++) {
	cout << "请输入第 " << i << " 个小朋友的身高: ";
	cin >> h ;
	diff = abs(h - target);
	if (          ) { // L1
		min_diff = diff;
		best_height = h ;
	}
}
cout << "小北的朋友身高为: " << best_height;
2分
登录后查看选项
15

小北的身高是1 .65 米。班上有n 个小朋友,小北想和身高最接近自己的人交朋友。如果有多个小朋友与小北的身高差相同,小北想和其中身高较矮的第一个小朋友做朋友。横线处应该填入的是()。

int n , i;
float target , h , best_height , min_diff , diff;
cout << "请输入小朋友的人数: ";
cin >> n ;
target = 1 .65 ;
best_height = 0 .0 ;
min_diff = 100 .0 ;
for (i = 0 ; i < n ; i++) {
	cout << "请输入第 " << (i + 1) << " 个小朋友的身高: ";
	cin >> h ;
	if (h > target)
		diff = h - target ;
	else
		diff = target - h ;
	if (diff < min_diff) {
		min_diff = diff;
		best_height = h ;
	} else if (diff == min_diff) {
		__________________
		__________________
	}
}
cout << "小北的朋友身高为:" << best_height;
2分
登录后查看选项

判断题 共10道

16

C++ 程序执行cin 或scanf 语句时通常是使用键盘等输入设备来输入某个变量的值。

2分
登录后查看选项
17

执行C++ 语句cout << ( 5 && 2 ); 将输出1。

2分
登录后查看选项
18

C++ 表达式2 * - '2' / 4 的值是-1。

2分
登录后查看选项
19

如下C++代码执行后的输出是10。

int a ;
a = 5 ;
a == +5 ;
cout << a ;
2分
登录后查看选项
20

执行C++ 代码cout << (not not 5) 将输出5。

2分
登录后查看选项
21

下面C++代码执行后将输出369 。

for (int i = 1; i < 10 ; i++)
	if (not(i % 3))
		cout << i;
2分
登录后查看选项
22

N 是整数,执行如下C++代码,将能输出0 到N 之间(包含N )所有数之和。

int N , tot , i;
cin >> N ;
tot = 0 ;
for (i = 0 ; i < N + 1; i++)
	tot += i;
cout << tot ;
2分
登录后查看选项
23

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

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

求解鸡兔同笼。在如下C++代码中,tou 代表鸡和兔的头总数,jiao 代表鸡和兔的脚总数。先后两个输入均为正整数。该程序能求解鸡兔同笼。

int tou , jiao , tu_tou , ji_tou ;
cout << "请输入鸡和兔的头总数:";
cin >> tou ;
cout << "请输入鸡和兔的脚总数:";
cin >> jiao ;
for (tu_tou = 0 ; tu_tou < tou + 1; tu_tou++) {
	ji_tou = tou - tu_tou ;
	if (tu_tou * 4 + ji_tou * 2 == jiao)
		printf("兔的数量=%d ,鸡的数量=%d\n ", tu_tou , ji_tou);
}
if (tu_tou == tou)
	printf("无解\n ");
2分
登录后查看选项
25

如果N 和M 均为整数,下列C++代码则可以判断正整数N 是M 的平方。比如9 是3 的平方。

int N , M;
cout << "请输入正整数N :";
cin >> N ;
cout << "请输入整数M :";
cin >> M;
if (int(sqrt(N)) == abs(M))
	printf("%d是%d的平方\n ", N , M);
2分
登录后查看选项

编程题 共2道

26

直角三角形

题目描述

小双刚学会勾股定理,得知直角三角形的斜边的平方等于两直角边的平方和。

小双创造了直角三角形数列:数列前两项由小双指定,从第三项开始,数列中的每个数字的平方等于前两项的平方和。

例如,第一项是 3.0,第二项是 4.0,则第三项是 sqrt(3.02 + 4.02) = 5.0,其中sqrt()为根号的意思。

其中表示的算术平方根,可以使用C/C++/Python 标准库中对应函数计算。

小双给定了数列的前两项,并给定一个数列上限,想让你算算数列的第几项会超过小双给定的数列上限?

输入

输入三行,第一行一个浮点数是数列第一项,第二行一个浮点数是数列第二项,第三行一个浮点数表示数列上限。

输出

输出一个正整数,表示第几项开始会超过小双给定的数列上限。

数据范围

输入均为不超过 10000 的正数。

题目保证给定第一项小于第二项。

输入样例1

3.0

4.0

10.0

输出样例1

6

25分

C0721
登录后作答
27

字符变换

题目描述

小明有一个的画布(8 行 16 列),画布中的格子从上到下从左到右编号,左上的编号为 1,第一排最后一个的编号为 16,最后一排第一个编号为 113,右下为 128。

初始画布中的每个格子都是 *,随后小明会给定三个正整数,小明会将对应编号的格子变为该正整数对应的ASCII编码字符。

最后请帮小明输出整个画布。

输入

输入包含三行,每行一个正整数,表示需要替换的画布格子编号。

输出

输出 8×16 的画布。

数据范围

输入范围是48到57,65到90,以及97到122(即ASCII 编码的0到9,A到Z,以及a到z)。

输入样例1

48

65

97

输出样例1

****************

****************

***************0

****************

A***************

****************

a***************

****************

25分

C0722
登录后作答