一、下列的C語言程式中,findMinMax函式接受一個一維陣列, 並將陣列中的最大值以及最小值利用傳址呼叫(call by address)的方式回傳。 請將程式碼中的空格編號及答案寫於申論試卷上。(每一個空格5分,共20分) void findMinMax(int *array, int size, int *min, int *max){ *min = array[0]; *max = array[0]; for(int i = 1; i < size; i++){ if(array[i] > *max) __1__ = array[i]; else if(array[i] < *min) __2__ ; }} void main() { int min, max; min = 0; max = 100; int a[] = {8, 9, 16, 0, 33, 45, 7, 22}; findMinMax(a, __3__ , &min, __4__ ); printf("min = %d\n", min); printf("max = %d\n", max); } 【答】 1.*max 2.*min = array[i] 3.sizeof(a)/sizeof(a[0]) 4.&max 二、請回答下列C語言程式問題: 1.定義函式int foo(int x) { x *= 2; return x;}。請問int x = 6; printf(“%d\n”, foo(x) + foo(x)); 輸出為何?(5分) 2.請問下列程式的輸出為何?(5分) void sp(int value) { if(value / 10) { printf("%d\n", value % 10); sp(value / 10); }else { printf("%d\n", value); } } void main() {sp(728); } 3.請問若是要在瀏覽器的標題列上秀出「Hello world」的文字, 下列HTML文件中的空白處應填入何種程式碼?(5分) <HTML><head> </head> <body></body>。 4.請問若是要使用C語言標準函式庫的atoi()函式,需要引入那個標頭檔(header file)?(5分) 【答】 1. 輸出為:24 2. 輸出為: 8 2 7 3.<title>Hello world</title> 4.stdlib.h 三、請用C語言,設計一個函式int gcd(int x, int y)。gcd函式會回傳整數x及y的「最大公因數」, 請用遞迴(recursive)的方式來完成gcd函式。(15分) 【答】 int gcd(int x, int y) { if(y == 0) return x; else return gcd(y, x%y); } 四、請用C語言設計一個函式int isPerfect(int x)。 當isPerfect回傳1時,代表x為「完美數」,若回傳0,代表x不是完美數。 若x是一個完美數,則x的所有小於x本身的正因數加總,會等於x。 舉例而言,令x=6,則所有小於x的正因數有1,2及3。因為1+2+3=6,所以6是完美數。(15分) 【答】 依提意得知,函式isPerfect(int x)將計算出x所有的因數的和(sum), 並且,如果和(sum)與x相等則return 1,否則return 0。 可得以下函式: int isPerfect(int x) { int sum = 0; for (int i=1; i < x; i++) { //從1,2,3,...,x-1 if(x % i == 0) //x除以i,如果餘數為0,則i即為x的因數 sum = sum + i; //將因數相加 } if(x == sum) //如果x的因素和等於x,則x為完美數 return 1; else return 0; } 五、名詞解釋: 1.請解釋並舉例說明Java語言中extends關鍵字的作用。(10分) 2.請解釋Java語言中覆寫(override)以及超載(overload)的差別。(10分) 3.請寫出XML中DTD的英文全名。(5分) 4.下圖是一個超連結,當你點選它時,瀏覽器會「開啟新的視窗」, 並連結到http://www.abc.efg/網址,請將此超連結的HTML語法寫出來。(5分) 這是超連結 【答】 1.extends擴充: 將已存在的類別沿用到新類別,不需要重複撰寫相同的函式,精簡程式碼。 已存在的類別以被很多程式碼使用,但又需新增相似的功能時,可以新建一個類別,將原類別extends進來, 在新類別內擴充原類別沒有的功能函式。 2. 覆寫(override): extends類別時,如果原有類別的函式功能不敷使用,可將該函式override,重新定義該函式的程式敘述。 需要注意的事項,override函式時,只可擴大父類別函式的權限,不能縮小父類別函式的權限。 超載(overload): 同一個函式名稱,可依照輸入參數型態的不同、數量的不同,呼叫對應的函式敘述。 可應用在類似功能函式的設計。 3.DTD: Document Type Definition 4.<a href="http://www.abc.efg/" target="_blank">這是超連結</a>
全站熱搜
留言列表