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

E1011 CCF-GESP编程能力等级认证-C++ - 202603 CCF-GESP C++三级真题-考试

选择题 共15道

01 如果字符变量 _1 的值是字符 1 ,那么 (int)_1 的值是? 2分
登录后查看选项
02

a,b是整型变量,各自有互不相同的初始值。下列程序实现了什么效果( )。

a=a^b;
b=a^b;
a=a^b;
2分
登录后查看选项
03

关于下列正确的程序段,说法正确的是( )。

char str1[] = "Hello";
char str2[] ={'H','e','l','l','0'};
2分
登录后查看选项
04

关于以下程序段,说法正确的是( )。

int x=10;
cout<<(x++) + (++x)<<endl;
2分
登录后查看选项
05 8 位二进制下,十进制数-15 的补码是( )。 2分
登录后查看选项
06  三进制数 2102(3) 转换成十进制是:( )。 2分
登录后查看选项
07 二进制数 10110101 是某数的 8 位补码,该数的十进制是( )。 2分
登录后查看选项
08 已知 unsigned char c = 0x0F; (十六进制 0F = 二进制 00001111 ),执行 c = c << 3; 后, c 的十进制值是:( )。 2分
登录后查看选项
09 补码的情况下,关于按位取反运算,用笔计算的情况下,以下说法错误的是:( ) 2分
登录后查看选项
10

执行以下 C++ 代码后, sub 的值是( )。

string str = "GESP2026";
string sub = str.substr(4, 2);
2分
登录后查看选项
11

执行以下代码后,输出结果是:( )。

int arr[] = {5, 10, 15, 20, 25, 30};
int count = sizeof(arr) / sizeof(arr[0]);
cout << count;
2分
登录后查看选项
12

执行以下代码后,输出结果是:( )。

char s[10] = "abcde";
int a = sizeof(s) / sizeof(s[0]);
int b = strlen(s);
cout << a - b;
2分
登录后查看选项
13 以下问题中,最不适合用枚举法解决的是:( ) 2分
登录后查看选项
14  用枚举法解决 “鸡兔同笼问题:头共 35 个,脚共 94 只,求鸡和兔的数量”,以下枚举逻辑最合理的是:( ) 2分
登录后查看选项
15

模拟 “字符串加密”:规则为 “每个字符 ASCII 码 + 3,若超过 z (122) 则从 a 重新开始”,以下代码中正确的条件判断是:( )

for (int i = 0; i < str.length(); i++) {
	// 需补充条件:
	_______________________
	else {
		str[i] += 3;
	}
}
2分
登录后查看选项

判断题 共10道

16 定义 int arr[5] = {1,2,3}; ,则 arr[3] 的值为 0, arr[5] 是合法下标。 2分
登录后查看选项
17 定义 double arr[10]; ,未手动初始化时,数组中所有元素的默认值为 0.0。 2分
登录后查看选项
18  定义 int arr[] = {1,2,3}; ,则 sizeof(arr) 的结果为 12( int 占 4 字节)。 2分
登录后查看选项
19

下面的流程图是用来求 1+2+3+…+10 的和。请判断:这个流程图的逻辑正确还是错误?

2分
登录后查看选项
20

下面流程图的功能是计算 5 对 2 取余数,输出结果为 1。

2分
登录后查看选项
21 已知大写字符 A 的ASCII编码的十六进制表示为 0x41 ,计算字符 m 的ASCII编码的八进制表示为 155(八进制)。 2分
登录后查看选项
22 在 C++ 位运算中,各种不同的运算符有优先级的区分,使用括号能够解决优先级的问题。 2分
登录后查看选项
23

由于在 0~255 范围内, char 类型和 int 类型可以互换,因此在这里 x 和 y 相等。

char x='1';
int y=1;
2分
登录后查看选项
24 在C++语言中,表达式 ((0xf0 + 0x15) == 255) 的值为 true 。 2分
登录后查看选项
25 如果 a 为 int 类型的变量,且 a 的二进制最低位为 0 ,则表达式 ((a & 3 & 1) == 0) 的值为true 。 2分
登录后查看选项

编程题 共2道

26

二进制回文串

题目描述

对于一个正整数 ,我们将其转换为不含前导零的二进制表示,如果这个二进制序列从左向右读与从右向左读完全相同,则称该数为二进制回文数。例如,9 的二进制表示为 (1001)2,是二进制回文数;12 的二进制表示为 (1100)2,不是二进制回文数。

你的任务是:给定一个正整数 n,计算在 1 到 n 的范围内二进制回文数的数量。

输入

输入一行,包含一个正整数 n。

输出

输出一行,包含一个数,表示在 1 到 n 的范围内二进制回文数的数量。

数据范围

1≤n≤10^5

输入样例1

15

输出样例1

6

25分

C0412
登录后作答
27

凯撒密码

题目描述

凯撒密码是一种替换加密技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是 3 的时候,所有的字母 A 将被替换成 D,B 被替换成 E,C 被替换成 F,以此类推,W 被替换成 Z,X 被替换成 A,Y 被替换成 B,Z 被替换成 C。这个加密方法是以罗马共和时期凯撒的名字命名的,据称当年凯撒曾用此方法与其将军们进行联系。

但是和所有的利用字母表进行替换的加密技术一样,凯撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。

现在给你一个已破解的凯撒密码明文与密文,与一个有相同偏移量的未破解凯撒密码密文,请你帮忙破解它。

输入

输入共三行:

第一行包含一个字符串,表示已破解的凯撒密码明文;

第二行包含一个字符串,表示已破解的凯撒密码密文;

第三行包含一个字符串,表示待破解的凯撒密码密文。

输出

输出一行,包含一个字符串,表示待破解的凯撒密码对应的明文。

数据范围

保证密码长度均不超过1000,所有字符串由大写字母组成。

输入样例1

ABCDEFGVWXYZ

DEFGHIJYZABC

WKHTXLFNEURZQIRAMXPSVRYHUWKHODCBGRJ

输出样例1

THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG

25分
登录后作答