2024年03月真題
一、單選題(每題2分,共30分)
第 1 題 以下不屬于計算機輸入設備的有( )。
- A. 鍵盤
- B. 音箱
- C. 鼠標
- D. 傳感器
正確答案:B. 音箱
解析:
- A. 鍵盤:鍵盤是輸入設備。
- B. 音箱:音箱是輸出設備,不是輸入設備。
- C. 鼠標:鼠標是輸入設備。
- D. 傳感器:傳感器是輸入設備。
第 2 題 計算機系統中存儲的基本單位用B來表示,它代表的是( )。
- A. Byte
- B. Block
- C. Bulk
- D. Bit
正確答案:A. Byte
解析:
- A. Byte:Byte(字節)是計算機存儲的基本單位。
- B. Block:塊,不是計算機存儲的基本單位。
- C. Bulk:大宗,不是計算機存儲的基本單位。
- D. Bit:比特,是更小的存儲單位,不是B表示的單位。
第 3 題 常量7.0的數據類型是( )。
- A. double
- B. float
- C. void
- D. int
正確答案:A. double
解析:
- A. double:7.0 是一個雙精度浮點數(double)。
- B. float:7.0 是double類型,而不是float類型。
- C. void:void表示無類型,7.0不是void類型。
- D. int:7.0 不是整數類型。
第 4 題 下列關于C++語言的敘述,不正確的是( )。
- A. 變量定義時可以不初始化
- B. 變量被賦值之后的類型不變
- C. 變量沒有定義也能夠使用
- D. 變量名必須是合法的標識符
正確答案:C. 變量沒有定義也能夠使用
解析:
- A. 變量定義時可以不初始化:這在C++中是正確的。
- B. 變量被賦值之后的類型不變:這在C++中是正確的。
- C. 變量沒有定義也能夠使用:這是錯誤的,變量必須先定義才能使用。
- D. 變量名必須是合法的標識符:這在C++中是正確的。
第 5 題 以下不可以作為C++標識符的是( )。
- A. x321
- B. 0x321
- C. x321_
- D. _x321
正確答案:B. 0x321
解析:
- A. x321:合法的標識符。
- B. 0x321:標識符不能以數字開頭,因此非法。
- C. x321_:合法的標識符。
- D. _x321:合法的標識符。
第 6 題 以下哪個不是C++語言的關鍵字?
- A. int
- B. for
- C. do
- D. cout
正確答案:D. cout
解析:
- A. int:C++關鍵字,用于聲明整數類型。
- B. for:C++關鍵字,用于循環控制。
- C. do:C++關鍵字,用于do-while循環。
- D. cout:C++標準庫對象,不是關鍵字。
第 7 題 如果a、b和c都是int類型的變量,下列哪個語句不符合C++語法?
- A. c = a + b;
- B. c += a + b;
- C. c = a = b;
- D. c = a ++ b;
正確答案:D. c = a ++ b;
解析:
- A. c = a + b;:符合語法,表示c等于a和b的和。
- B. c += a + b;:符合語法,表示將a和b的和加到c上。
- C. c = a = b;:符合語法,表示將b賦值給a,然后將a賦值給c。
- D. c = a ++ b;:不符合語法,++是后置遞增運算符,不能與二元運算符直接組合使用。
第 8 題 如果用兩個int類型的變量a和b分別表達長方形的長和寬,則下列哪個表達式不能用來計算長方形的周長?
- A. a + b * 2
- B. 2 * a + 2 * b
- C. a + b + a + b
- D. b + a * 2 + b
正確答案:A. a + b * 2
解析:
- A. a + b * 2:計算的是長加上寬的兩倍,不是周長。
- B. 2 * a + 2 * b:計算的是周長。
- C. a + b + a + b:計算的是周長。
- D. b + a * 2 + b:計算的是周長。
第 9 題 表達式((3 == 0) + ‘A’ + 1 + 3.0)的結果類型為( )。
- A. double
- B. int
- C. char
- D. bool
正確答案:A. double
解析:
- A. double:表達式的結果包含一個浮點數3.0,最終結果為double類型。
- B. int:最終結果為double,而不是int。
- C. char:最終結果為double,而不是char。
- D. bool:最終結果為double,而不是bool。
第 10 題 如果a為int類型的變量,且a的值為6,則執行a *= 3;之后,a的值會是( )。
- A. 3
- B. 6
- C. 9
- D. 18
正確答案:D. 18
解析:
- A. 3:錯誤,a的值不會變為3。
- B. 6:錯誤,a的值不會保持不變。
- C. 9:錯誤,a的值不會是9。
- D. 18:正確,a *= 3等價于a = a * 3,因此a的值是18。
第 11 題 如果a和b均為int類型的變量,下列表達式不能正確判斷“a等于0且b等于0”的是( )。
- A. (a == 0) && (b == 0)
- B. (a == b == 0)
- C. (!a) && (!b)
- D. (a == 0) + (b == 0) == 2
正確答案:B. (a == b == 0)
解析:
- A. (a == 0) && (b == 0):正確判斷。
- B. (a == b == 0):錯誤的邏輯表達式,不能正確判斷。
- C. (!a) && (!b):正確判斷。
- D. (a == 0) + (b == 0) == 2:正確判斷。
第 12 題 如果a為int類型的變量,下列哪個表達式可以正確求出滿足“大于等于a 且是4的倍數”的整數中最小的?
- A. a * 4
- B. a / 4 * 4
- C. (a + 3) / 4 * 4
- D. a - a % 4 + 4
正確答案:C. (a + 3) / 4 * 4
解析:
- A. a * 4:不正確,計算的是a的四倍。
- B. a / 4 * 4:不正確,計算的是a四舍五入到最近的4的倍數。
- C. (a + 3) / 4 * 4:正確,計算大于等于a且是4的倍數的最小值。
- D. a - a % 4 + 4:不正確,計算的是下一個4的倍數,不一定大于等于a。
第 13 題 在下列代碼的橫線處填寫( ),可以使得輸出是“20 10”。
#include <iostream> using namespace std; int main(){ int a = 10, b = 20; a = ______________;//在此處填入代碼 b = a / 100; a = a % 100; cout << a << " " << b << endl; return 0;
- A. a + b
- B. (a + b) * 100
- C. b * 100 + a
- D. a * 100 + b
正確答案:D. a * 100 + b
解析:
- A. a + b:不正確,a + b 的值是 30,不符合題意。
- B. (a + b) * 100:不正確,(a + b) * 100 的值是 3000,不符合題意。
- C. b * 100 + a:不正確,b * 100 + a 的值是 2010,不符合題意。
- D. a * 100 + b:正確,a * 100 + b 的值是 1020,當
b = a / 100
時,b 的值是 10,當a = a % 100
時,a 的值是 20,符合題意。
第 14 題 在下列代碼的橫線處填寫( ),可以使得輸出是“1248”。
#include <iostream> using namespace std; int main(){ for(int i = 1; i <= 8;______)//在此處填入代碼 cout << i; return 0; }
- A. i++
- B. i *= 2
- C. i += 2
- D. i * 2
正確答案:B. i *= 2
解析:
- A. i++:不正確,i++的值是1到8,不符合題意。
- *B. i = 2:正確,i *= 2的值是1, 2, 4, 8,符合題意。
- C. i += 2:不正確,i += 2的值是1, 3, 5, 7,不符合題意。
- D. i * 2:不正確,i * 2不是一個合法的表達式。
第 15 題 執行以下C++語言程序后,輸出結果是( )。
#include <iostream> using namespace std; int main(){ int sum = 0; for(int i = 1; i <= 20; i ++) if(i % 3 == 0 || i % 5 == 0) sum += i; cout << sum << endl; return 0; }
- A. 210
- B. 113
- C. 98
- D. 15
正確答案:C. 98
解析:
- A. 210:不正確,210是1到20之間能被3或5整除的數(3, 5, 6, 9, 10, 12, 15, 18, 20)的和,但題目中只加和20以內的數。
- B. 113:不正確。
- C. 98:正確,程序對能被3或5整除的數(3, 5, 6, 9, 10, 12, 15, 18)的和進行累加,結果為98。
- D. 15:不正確,15不是正確的和。
2 判斷題
第 1 題 在Windows 系統中通過鍵盤完成對選定文本移動的按鍵組合是先Ctrl+X,移動到目標位置后按Ctrl+V。( √ )
解析:
- 這個描述是正確的。在Windows系統中,Ctrl+X用于剪切選定的文本,然后Ctrl+V用于在目標位置粘貼該文本。
第 2 題 程序員用C、C++、Python、Scratch等編寫的程序能在 CPU 上直接執行。( × )
解析:
- 程序員編寫的代碼需要經過編譯或解釋才能在CPU上執行。C和C++程序需要編譯,Python和Scratch程序需要解釋。
第 3 題 在C++語言中,注釋不宜寫得過多,否則會使得程序運行速度變慢。( × )
解析:
- 注釋在編譯過程中會被忽略,不影響程序的運行速度。注釋的作用是幫助程序員理解代碼。
第 4 題 在C++語言中,標識符中可以有數字,但不能以數字開頭。( √ )
解析:
- 在C++中,標識符可以包含字母、數字和下劃線,但不能以數字開頭。
第 5 題 '3’是一個int類型常量。( × )
解析:
- '3’是一個字符常量,其類型是char,而不是int。
第 6 題 if 語句中的條件表達式的結果必須為bool類型。( × )
解析:
- 在C++中,if語句中的條件表達式結果不一定必須是bool類型。C++會將條件表達式的結果隱式轉換為bool類型,任何非零值都被視為true,零值被視為false。
第 7 題 for 語句的循環體至少會執行一次。( × )
解析:
- 這是錯誤的。for語句的循環體可能一次也不執行,這取決于初始條件是否滿足。
第 8 題 如果a為int類型的變量,則賦值語句a = a + 3;是錯誤的,因為這條語句會導致a無意義。( × )
解析:
- 這是錯誤的。賦值語句a = a + 3是合法的,表示將a的當前值增加3。
第 9 題 如果a為int類型的變量,則表達式(a / 4 == 2)和表達式(a >= 8 && a <= 11)的結果總是相同的。( √ )
解析:
- a / 4 == 2:表示 a 除以 4 的結果等于 2,這只有當 a 為 8、9、10 或 11 時才為真。
- a >= 8 && a <= 11:表示 a 的值在 8 到 11 之間,包括 8 和 11。
- 因此,這兩個表達式的結果總是相同的。
第 10 題 表達式(3.5 * 2)的計算結果為7.0,且結果類型為double。( √ )
解析:
- 這個描述是正確的。3.5和2都是浮點數,相乘結果為7.0,結果類型為double。
3 編程題
3.1 編程題1
題目名稱:每月天數
題面描述
小明剛剛學習了每月有多少天,以及如何判斷平年和閏年,想到可以使用編程方法求出給定的月份有多少天。你能做到嗎?
輸入格式
輸入一行,包含兩個整數,分別表示一個日期的年、月。
輸出格式
輸出一行,包含一個整數,表示輸入月份有多少天。
樣例
輸入
2022 1
輸出
31
輸入
2020 2
輸出
29
參考程序:
#include <iostream> // 引入標準輸入輸出庫
using namespace std;int main() {int y = 0, m = 0; // 定義年和月的變量并初始化cin >> y >> m; // 讀取輸入的年和月bool leap = false; // 定義一個布爾變量用于判斷是否為閏年if (y % 400 == 0) // 判斷是否為閏年,能被400整除的是閏年leap = true;if (y % 4 == 0 && y % 100 != 0) // 判斷是否為閏年,能被4整除但不能被100整除的是閏年leap = true;if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) // 判斷是否為大月cout << 31 << endl; // 輸出大月的天數else if (m == 4 || m == 6 || m == 9 || m == 11) // 判斷是否為小月cout << 30 << endl; // 輸出小月的天數else if (leap) // 判斷是否為閏年的2月cout << 29 << endl; // 輸出閏年2月的天數else // 平年的2月cout << 28 << endl; // 輸出平年2月的天數return 0; // 程序結束
}
解釋:
這個程序首先讀取輸入的年份和月份。然后通過一系列條件判斷確定該月份的天數。如果年份是閏年且月份是2月,則該月有29天;如果不是閏年的2月,則該月有28天。對于大月和小月,通過月份的判斷直接輸出對應的天數。
3.2 編程題2
題目名稱:長方形面積
題面描述
小明剛剛學習了如何計算長方形面積。他發現,如果一個長方形的長和寬都是整數,它的面積一定也是整數。現在,小明想知道如果給定長方形的面積,有多少種可能的長方形,滿足長和寬都是整數?
如果兩個長方形的長相等、寬也相等,則認為是同一種長方形。約定長方形的長大于等于寬。正方形是長方形的特例,即長方形的長和寬可以相等。
輸入格式
輸入一行,包含一個整數 ( A ),表示長方形的面積。約定 ( 2 ≤ A ≤1000 )。
輸出格式
輸出一行,包含一個整數 ( C ),表示有 ( C ) 種可能的長方形。
樣例
輸入
4
輸出
2
輸入
6
輸出
2
參考程序:
#include <iostream> // 引入標準輸入輸出庫
using namespace std;int main() {int area = 0, cnt = 0; // 定義面積變量和計數器變量并初始化cin >> area; // 讀取輸入的面積for (int w = 1; w * w <= area; w++) { // 遍歷所有可能的寬度,直到寬度的平方超過面積if (area % w == 0) // 判斷該寬度是否能整除面積cnt++; // 如果能整除,計數器加1}cout << cnt << endl; // 輸出計數器的值return 0; // 程序結束
}
解釋:
這個程序讀取長方形的面積,然后通過遍歷所有可能的寬度,判斷是否可以整除面積來確定長方形的寬度。對于每一個可能的寬度,如果面積能被寬度整除,就增加計數器。最終輸出計數器的值,即滿足條件的長方形數量。