一、下列的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>

arrow
arrow
    全站熱搜

    伊 發表在 痞客邦 留言(0) 人氣()