高考申論題
112年
[電力工程] 計算機概論
第 二 題
📖 題組:
四、請回答以下問題: C 程式 ```c 01 #include
02 int main()
03 {
04 int i, j, n, order;
05 scanf("%d", &n);
06 order = 0 ;
07 for ( i = 0; i < n-1 ; i ++)
08 for ( j = i ; j < n-1 ; j++)
09 order = order + 1 ;
10 printf("%d ", order);
11 }
```
Python 程式
```python
01 def aloha(k):
02 if(k >0):
03 rs=k+aloha(k-1)
04 else:
05 rs=0
06 return rs
07
08 n=int(input())
09
10
11 a=[0 for i in range(n+1)]
12
13 i = 0
14 while i < len(a):
15 a[i]=aloha(i)
16 i = i + 1
17
18 print("theResults:")
19 print(a, end='\n')
```
四、請回答以下問題: C 程式 ```c 01 #include
📝 此題為申論題,共 2 小題
小題 (二)
如下列Python程式,其目的為何?如果執行該程式,並輸入整數6,則輸出的結果是什麼?寫出其詳細步驟。(15分)
思路引導 VIP
這題分為三個部份:回答程式目的、給出輸入6的結果、寫出詳細步驟。先分析程式:函式 aloha(k) 是一個遞迴函式,當 k>0 時返回 k + aloha(k-1),否則返回 0。這顯然是在計算從 1 加到 k 的總和(即前綴和/等差級數和)。主程式中宣告了一個長度為 n+1 的陣列/串列 a(初始全為0)。然後透過 while 迴圈,將 aloha(i) 的結果依序填入 a[i] 中。若輸入 n=6,陣列長度為 7,對應索引 0 到 6,分別存入 0, 1, 3, 6, 10, 15, 21。最後將字串和陣列印出。
小題 (一)
若執行下列的C程式,且輸入整數10,則程式輸出的結果是什麼?說明其計算過程。(10分)
思路引導 VIP
這是一題雙層巢狀迴圈(Nested Loop)的執行次數追蹤題。首先,看懂變數與條件:n被輸入為10,所以迴圈條件 n-1 為 9。外層迴圈 i 從 0 跑到 8(i < 9);內層迴圈 j 從 i 跑到 8(j < 9)。因此,對於每個固定的 i,內層迴圈執行的次數為 9 - i。將所有的執行次數加總,就是變數 order 的最終值。計算:9 + 8 + 7 + ... + 1 = 45。