高考申論題
112年
[資訊處理] 程式設計
第 一 題
關於以下C程式碼:
01 #include
02 #define SIZE 10
03 #define THREE 3
04 unsigned int f1(unsigned int a, unsigned int b){ return (a&&!b); }
05 unsigned int f2(unsigned int a, unsigned int b){ return (a<06 unsigned int f3(unsigned int a, unsigned int b){ return (a&~b); }
07 int f4(int a, int b) { return a*b+a-b; }
08 int f5(int a, int b) {
09 int data[SIZE];
10 for (int i=1, k=0; i11 if (i%3==0) data[k++]=f4(i, i+1);
12 }
13 return data[b];
14 }
15 int f6(int a, int b) {
16 int data[][THREE] = {{4,3,2},{3,4,2},{2,3,3}};
17 for (int i=0; i18 for (int j=0; j19 if (i>a || j>b)
20 data[i][j]= data[j][i]+b;
21 }
22 }
23 return data[a][b];
24 }
25 int main() {
26 printf("%u\n", f1(6, 2));
27 printf("%u\n", f2(6, 2));
28 printf("%u\n", f3(7, 2));
29 printf("%d\n", f4(3, 12));
30 printf("%d\n", f5(15, 3));
31 printf("%d\n", f5(3, 15));
32 printf("%d\n", f6(1, 1));
33 printf("%d\n", f6(3, 2));
34 return 0;
35 }
請說明程式執行後,程式碼編號26~33的輸出,以及其運算邏輯。(25分)
01 #include
02 #define SIZE 10
03 #define THREE 3
04 unsigned int f1(unsigned int a, unsigned int b){ return (a&&!b); }
05 unsigned int f2(unsigned int a, unsigned int b){ return (a<06 unsigned int f3(unsigned int a, unsigned int b){ return (a&~b); }
07 int f4(int a, int b) { return a*b+a-b; }
08 int f5(int a, int b) {
09 int data[SIZE];
10 for (int i=1, k=0; i11 if (i%3==0) data[k++]=f4(i, i+1);
12 }
13 return data[b];
14 }
15 int f6(int a, int b) {
16 int data[][THREE] = {{4,3,2},{3,4,2},{2,3,3}};
17 for (int i=0; i
20 data[i][j]= data[j][i]+b;
21 }
22 }
23 return data[a][b];
24 }
25 int main() {
26 printf("%u\n", f1(6, 2));
27 printf("%u\n", f2(6, 2));
28 printf("%u\n", f3(7, 2));
29 printf("%d\n", f4(3, 12));
30 printf("%d\n", f5(15, 3));
31 printf("%d\n", f5(3, 15));
32 printf("%d\n", f6(1, 1));
33 printf("%d\n", f6(3, 2));
34 return 0;
35 }
請說明程式執行後,程式碼編號26~33的輸出,以及其運算邏輯。(25分)
📝 此題為申論題
思路引導 VIP
看到本題,首先要辨識出這是一道C語言的程式碼追蹤題。解題關鍵在於逐行分析每個函式的運算邏輯,特別是位元運算、陣列索引以及邊界條件。
- 針對
f1、f2、f3,須釐清「邏輯運算 (&&, !)」、「位元左移 (<<)」與「位元遮罩 (&~)」的差異。
🤖
AI 詳解
AI 專屬家教
【考點分析】 本題測驗考生對C語言基本語法與運算子的掌握,包含:邏輯運算子與位元運算子的差異、位元移位運算、陣列操作與走訪、以及陣列越界存取(Out of bounds)造成的未定義行為(Undefined Behavior)。 【理論/法規依據】
▼ 還有更多解析內容