高普考題庫
109 年 109年公務人員高等考試三級考試暨普通考試

程式語言

本卷皆為申論題,點「看答案與解析」查看擬答。

申論 1㈠請將下面程式改寫為尾遞迴(tail recursion)的形式。(15分)
申論 2假設每個int變數占用4 bytes,每個指標變數也占用4 bytes。下面的C程式印出的結果為何?(25分)# include <stdio.h>typedef int T1[10][9];int main(){struct {T1*a[10];int(*b)[100];} f[10][10][10];printf("p1 = %d\n",(int)sizeof(f[1][5]));printf("p2 = %d\n",(int)sizeof(f[2][3][4].a));printf("p3 = %d\n",(int)sizeof(f[3][2][6].b));printf("p4 = %d\n",(int)(f - &f[5]));printf("p5 = %d\n",(int)(f[6][2] - f[3][3]));}
申論 3下面的C程式印出的結果為何?(作答必須解釋計算過程,只寫答案而未加解釋,只能得部分分數。)(25分)# include <stdio.h>int foo1(int p){if (p >= 90) return(foo1(foo1(p-11)));return(p+10);}int foo2(int p){if (p < 91) return(foo2(p+11));return(p);}int foo(int p){return(foo1(foo2(p)));}int main(int argc, char **argv){int q;q = 65;printf("foo(%d)= %d.\n", q, foo(q));q = 83;printf("foo(%d)= %d.\n", q, foo(q));q = 95;printf("foo(%d)= %d.\n", q, foo(q));q = 100;printf("foo(%d)= %d.\n", q, foo(q));q = 142;printf("foo(%d)= %d.\n", q, foo(q));return(0);}
申論 4物件導向程式語言有繼承的觀念,請解釋單一繼承(single inheritance)與多重繼承(multiple inheritance)的意義、差別及實作方法。(25分)