CCF编程能力等级认证GESP—C++3级—20250628
CCF编程能力等级认证GESP—C++3级—20250628
- 单选题(每题 2 分,共 30 分)
- 判断题(每题 2 分,共 20 分)
- 编程题 (每题 25 分,共 50 分)
- 奇偶校验
- 分糖果
单选题(每题 2 分,共 30 分)
1、8位二进制原码能表示的最小整数是:( )
A. -127
B. -128
C. -255
D. -256
正确答案:A
2、反码表示中,零的表示形式有:
A. 1种
B. 2种
C. 8种
D. 16种
正确答案:B
3、补码 1011 1011 对应的真值是( )
A. -69
B. -59
C. -68
D. -58
正确答案:A
4、若X的8位补码为 0000 1010,则 X/2 的补码是( )。
A. 0000 0101
B. 1000 0101
C. 0000 0101 或 1000 0101
D. 算术右移后结果取决于符号位
正确答案:A
5、二进制数 1101.101 对应的十进制数是( )
A. 13.625
B. 12.75
C. 11.875
D. 14.5
正确答案:A
6、补码加法中,若最高位和次高位进位不同,则说明( )
A. 结果正确
B. 发生上溢
C. 发生下溢
D. 结果符号位错误
正确答案:B
7、 八进制数 35.6 对应的十进制数是( )
A. 29.75
B. 28.5
C. 27.625
D. 30.25
正确答案:A
8、二进制数 1010 | 1100 的结果是( )
A. 1000
B. 1110
C. 1010
D. 1100
正确答案:B
9、以下哪个位运算可以交换两个变量的值(无需临时变量)( )
A. a = a ^ b; b = a ^ b; a = a ^ b;
B. a = a & b; b = a | b; a = a & b;
C. a = a | b; b = a ^ b; a = a ^ b;
D. a = ~a; b = ~b; a = ~a;
正确答案:A
10、如何正确定义一个长度为5的整型数组( )
A. int array = new int[5];
B. array int[5];
C. int[] array = {1,2,3,4,5};
D. int array[5];
正确答案:D
11、以下程序使用枚举法(穷举法)求解满足条件的三位数,横线处应该填入的是()
#include <iostream>
using namespace std;
int main() {int count = 0;for (int i = 100; i <= 999; i++) {int a = i / 100;————————————————————int c = i % 10;if (a * a + b * b == c * c) {count++;}}cout << count << endl;return 0;
}
A. int b = (i / 10) / 10;
B. int b = (i / 10) % 10;
C. int b = (i % 10) / 10;
D. int b = (i % 10) % 10;
正确答案:B
12、 以下程序模拟了一个简单的小球反弹过程,横线处应该填入的是()
#include <iostream>
using namespace std;
int main() {int height = 10;int distance = 0;for (int i = 1; i <= 5; i++) { // 模拟5次落地——————————————————————height /= 2;distance += height;}cout << distance << endl;return 0;
}
A. distance += height/2;
B. distance += height;
C. distance += height*2;
D. distance += height+1;
正确答案:B
13、C++代码 string s = “GESP考试”; ,s占据的字节数是()
A. 10
B. 8
C. 8或10
D. 取决于计算机采用什么编码
正确答案:D
14、C++语句 string s=“Gesp Test”; 执行s.rfind(“e”)以后,输出的是()
A. 1
B. 2
C. 6
D. 3
正确答案:C
15、字符串"Gesp考试",字符数是( )
A. 10
B. 8
C. 6
D. 字符数多少取决于编码
正确答案:C
判断题(每题 2 分,共 20 分)
1、C++中 string 的 == 运算符比较的是字符串的内存地址,而非内容
正确答案:错误
2、string 的 substr(1, 3) 返回从下标1开始的3个字符的子串。
正确答案:正确
3、x 是浮点数, (x >> 1) 等价于 x / 2
正确答案:错误
4、string(“hello”) == “hello” 的比较结果为true。
正确答案:正确
5、sort 可以直接用于排序 set 中的元素。
正确答案:错误
6、(x & 1) == 0 可以判断整数 x 是否为偶数。
正确答案:正确
7、string 的 substr(2, 10) 在字符串长度不足时会抛出异常。
正确答案:错误
8、在数学纸面计算中, pow(2, 3) 的计算结果一定是8,但是在C++中,如果遇到数据类型是浮点数,那就不一定正确。
正确答案:正确
9、在 C++ 中,枚举的底层类型可以是非整型(如 float 或 double )。
正确答案:错误
10、函数声明 double f(); 返回 int 时,会自动转换为 double
正确答案:正确
编程题 (每题 25 分,共 50 分)
奇偶校验
【问题描述】
数据在传输过程中可能出错,因此接收方收到数据后通常会校验传输的数据是否正确,奇偶校验是经典的校验方式之一。
给定n个非负整数c1,c2,...,cnc_1, c_2, ..., c_nc1,c2,...,cn代表所传输的数据,它们的校验码取决于这些整数在二进制下1的数量之和的奇偶性。如果这些整数在二进制下共有奇数个1,那么校验码为1;否则校验码为0。你能求出这些整数的校验码吗?
【输入格式】
第一行,一个正整数n,表示所传输的数据量。
第二行,n个非负整数c1,c2,...,cnc_1, c_2, ..., c_nc1,c2,...,cn, 表示所传输的数据。
【输出格式】
输出一行,两个整数,以一个空格分隔:
第一个整数表示c1,c2,...,cnc_1, c_2, ..., c_nc1,c2,...,cn, 在二进制下1的总数量;
第二个整数表示校验码(0或1)。
【样例输入 1】
4
71 69 83 80
【样例输出 1】
13 1
【样例输入 2】
6
1 2 4 8 16 32
【样例输出 2】
6 0
【数据范围】
对于所有测试点,保证1≤n≤100,0≤ci≤2551≤n≤100,0≤c_i≤2551≤n≤100,0≤ci≤255。
分糖果
【问题描述】
有 位小朋友排成一队等待老师分糖果。第 位小朋友想要至少 颗糖果,并且分给他的糖果数量必须比分给前一位小朋友的糖果数量更多,不然他就会不开心。
老师想知道至少需要准备多少颗糖果才能让所有小朋友都开心。你能帮帮老师吗?
【输入格式】
第一行,一个正整数n,表示小朋友的人数。
第二行,n个正整数a1,a2,…,ana_1,a_2,…,a_na1,a2,…,an,依次表示每位小朋友至少需要的糖果数量。
【输出格式】
输出一行,一个整数,表示最少需要准备的糖果数量。
【样例输入 1】
4
1 4 3 3
【样例输出 1】
16
【样例输入 2】
15
314 15926 53589793 238462643 383279502 8 8 4 1 9 7 1 6 9 3
【样例输出 2】
4508143253
【数据范围】
对于所有测试点,保证1≤n≤1000,1≤ai≤1091≤n≤1000,1≤a_i≤10^91≤n≤1000,1≤ai≤109。