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。