一、選擇題
第 2 題?
在二維數組按行優先存儲的情況下,元素 `a[i][j]` 前的元素個數計算如下:
1. **前面的完整行**:共有 `i` 行,每行 `n` 個元素,總計 `i * n` 個元素。
2. **當前行的前面元素**:在行內,`a[i][j]` 前有 `j` 個元素(索引從 0 開始)。
因此,總元素個數為 **`i * n + j`**。
**驗證示例**:
- 對于 `a[1][1]`(假設 `n=3`):`i=1`, `j=1`,計算得 `1*3 + 1 = 4`,即前面有 4 個元素。
- 對于 `a[0][0]`:計算得 `0*3 + 0 = 0`,正確。
- 對于 `a[2][2]`(`n=4`):計算得 `2*4 + 2 = 10`,正確。
**錯誤選項分析**:
- **A. `i*n + j - 1`**:少算 1 個元素(如 `a[0][0]` 結果為 `-1`,錯誤)。
- **C. `j*n + i`**:假設列優先存儲(非常見情況),與題意不符。
- **D. `i*n + j + 1`**:多算 1 個元素(如 `a[0][0]` 結果為 `1`,錯誤)。
**正確答案**:**B. `i*n + j`**
第 4 題 單選題
題目:按照 “先進后出” 原則組織數據的結構是 ( )
A. 隊列
B. 棧
C. 雙向鏈表
D. 二叉樹
答案:**B. 棧**
**詳細解釋**: ?
1. **先進后出(FILO)原則**的含義是:**最早進入結構的元素最后被訪問或刪除**,而最后進入的元素最先被訪問或刪除。這種特性類似于生活中疊放的盤子,最后放上去的盤子會被最先取用。
2. **選項分析**:
? ?- **A. 隊列**:隊列遵循**先進先出(FIFO)**原則,即先進入隊列的元素先被處理(如排隊買票)。與題目要求的“先進后出”相反,因此排除。
? ?- **B. 棧**:棧的插入(`push`)和刪除(`pop`)操作均在**棧頂**進行,最后壓入棧的元素最先被彈出,完美符合“先進后出”原則。例如,函數調用棧、撤銷操作(Ctrl+Z)均基于棧實現。
? ?- **C. 雙向鏈表**:雙向鏈表允許在任意位置插入或刪除節點,沒有強制限制元素的訪問順序,因此與“先進后出”無關。
? ?- **D. 二叉樹**:二叉樹是分層存儲數據的樹形結構,元素的訪問順序取決于遍歷方式(如前序、中序、后序遍歷),而非“先進后出”規則,因此排除。
3. **結論**:只有**棧**嚴格遵循“先進后出”原則,因此正確答案是 **B. 棧**。
第 5 題 單選題
題目:用 0、1、2、3、4 這五個數字,能組成多少個沒有重復數字的多位偶數?
A. 144 B. 147 C. 160 D. 163
要解決用0、1、2、3、4組成沒有重復數字的多位偶數的問題,需分類討論末位為0、2、4的情況,并逐位分析各長度的數。
### 解題思路
1. **末位為0**:
? ?- 末位固定為0,剩余數字為1、2、3、4,首位不能為0。
? ?- **兩位數**:首位有4種選擇(1、2、3、4),共4種。
? ?- **三位數**:首位4種,第二位3種,共4×3=12種。
? ?- **四位數**:首位4種,第二位3種,第三位2種,共4×3×2=24種。
? ?- **五位數**:4!(即24種)。
? ?- 總計:4 + 12 + 24 + 24 = **64種**。
2. **末位為2**:
? ?- 末位固定為2,剩余數字為0、1、3、4,首位不能為0。
? ?- **兩位數**:首位有3種選擇(1、3、4),共3種。
? ?- **三位數**:首位3種,第二位3種(含0),共3×3=9種。
? ?- **四位數**:首位3種,第二位3種,第三位2種,共3×3×2=18種。
? ?- **五位數**:首位3種,剩余三位排列3!,共3×6=18種。
? ?- 總計:3 + 9 + 18 + 18 = **48種**。
3. **末位為4**:
? ?- 計算方式與末位為2完全對稱,結果也為**48種**。
**總數**:64(末位0) + 48(末位2) + 48(末位4) = **160種**。
### 答案
**C. 160**
### 講解教案
1. **明確問題**:用0、1、2、3、4組成無重復數字的多位偶數(兩位及以上)。
2. **關鍵條件**:
? ?- 偶數末位必須是0、2、4。
? ?- 首位不能為0。
3. **分類討論**:
? ?- **末位為0**:剩余數字自由排列(首位不為0),計算各位數可能。
? ?- **末位為2或4**:末位固定后,首位從非0數字中選擇,中間位可含0。
4. **逐位計算**:
? ?- 按位數(兩位、三位、四位、五位數)分別統計,避免重復或遺漏。
5. **匯總結果**:將三類末位情況的結果相加,得總數160。
通過系統分類和逐位分析,確保所有可能情況被覆蓋,最終得出正確答案為**C. 160**。