You are on page 1of 3

金門技術學院 資管系 夜二技一年級 程式設計 94 上學期 期末考 出題者 : 陳鍾誠

學號 : 姓名 : 分數 :
1. 填充題 (20%)
public class ParamTest { class CDegree {
public static void main(String args[]) { double t;
int x = 10; CDegree(double pt) {
t = pt;
System.out.println("x="+x);
}
modifyValue(x); public String toString() {
System.out.println("x="+x); return "攝氏"+t+"度";
int [] a = {10, 5}; }
}
System.out.println("a[0]="+a[0]);
modifyArray(a); class FDegree extends CDegree {
System.out.println("a[0]="+a[0]); FDegree(double pt) {
super(pt);
System.out.println("a[1]="+a[1]);
}
} public String toString() {
return "華氏 "+((9.0/5.0)*t+32)+"度";
static void modifyValue(int x) { }
}
x += 5;
} public class DegreeTest {
public static void main(String[] args) {
CDegree c = new CDegree(30.0);
static void modifyArray(int[] a) {
System.out.println("c.t="+c.t);
a[0] += 5; System.out.println("c.toString()="+c.toString());
} FDegree f = new FDegree(30.0);
} System.out.println("f.t="+f.t);
System.out.println("f.toString()="+f.toString());
c.t += 10;
System.out.println("c.t="+c.t);
}
}
ParamTest 的輸出 : DegreeTest 的 輸出 :
x= c.t=
x= c.toString()=
a[0]= f.t=
a[0]= f.toString()=
a[1]= c.t=

2.函數 (20%)
(1) 請以廻圈的方式定義一個函數 sum(),可以 將 a 陣列 (2) 請以廻圈的方式定義一個函數 reverse() 可以 將 a 陣列
的加總傳回 。(例如:若 a = {1,2,3} , 呼叫 sum(a) 後,傳 反轉 。 (例如:若 a = {1,2,3} , 呼叫 reverse 後, a 變成
回 6) {3,2,1} )
static void reverse(int[] a) {
static int sum (int[] a) {

}
}

1
金門技術學院 資管 系 夜二技一年級 程式設計 94 上學期 期末考 出題者 : 陳鍾誠
學號 : 姓名 : 分數 :
3. 程式題 (20%)

(1) 請寫出下列遞回函數 (2) 下列類別 Point 代表一個點,其座標以 (x, y) 兩


f(0) = 0 個整數表示。
f(n) = 2*f(n-1)+1 a. 請寫一個建構函數 Point(int px, int py) 設定該點
的初始直。
static int f(int n) { b. 請寫一個函數 double dist(Point p) 可以算出該點
與 p 點之間的距離。

class Point {
int x, y;

} }
4. 三度空間的物件 (20%)

以下宣告一個代表三度空間物體的類別 Object3D, class Test {


並繼 // (1). 請填入程式碼。
承該類別後宣告一個球體類別與一個立方體類別。 public static double sum(Object3D o[]) {

class Object 3D {
double volume() { return 0.0; }
}
class Ball3D extends Object3D {
double r;
Ball3D(double pr) { r = pr ; } }
double volume() { return (4.0/3.0) * 3.14 * r * r *r ; } // (2). 請填入程式碼。
} public static void main(String[] args) {
class Cube3D extends Object3D {
double w;
Cube3D(double pw) { w = pw ; }
double volume() { return w * w *w ; }
}

請填入右列主程式中的空白段:
(1) 請寫一個 sum 函數計算所有傳入之三度空間物
體的總體積。
(2) 請寫一個主程式,宣告一個 Object3D 陣列,該 }
陣列一個半徑為 2.0 的球體與一個長寬高都為 }
1.0 的立方體,接著利用 sum 計算出其總體積後
印出。

2
金門技術學院 資管 系 夜二技一年級 程式設計 94 上學期 期末考 出題者 : 陳鍾誠
學號 : 姓名 : 分數 :
5. 時間物件 (20%)
(1) 請定義一個時間物件,包含 時(hour)、分(minute)、秒
(second) 等三個欄位。

(2) 請建立一個建構函數 Time(int h, int m, int s) 、可以設


定時為 h, 分為 m, 秒為 s。

(3) 請建立一個函數 String toString(),可以將該時間轉換


為字串傳回。

(4) 請建立一個函數 String format12(),可以將該 24 小時


的時間轉換成 12 小時制的字串後傳回。

(5) 請建立一個函數 int diff(Time tx),可以取得該物件與


tx 相減後的秒數,然後傳回。

以下是上述函數的一個呼叫範例,僅供參考。
public class Test {
public static void main(String[] args) {
Time t1 = new Time(16,14,20); // 16 時 14 分 20 秒。
Time t2 = new Time(12,5,0); // 12 時 5 分 0 秒。
System.out.println("t1.toString ()="+t1.toString());
System.out.println("t1. format12()="+t1. format12());
int t3 = t1.diff(t2);
System.out.println("t3="+t3+"秒");
}
}

輸出:
t1.toString() = 16 時 14 分 20 秒。
t1. format12()=下午 4 時 14 分 20 秒。
t3= 14960 秒

You might also like