You are on page 1of 3

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

學號 : 姓名 : 分數 :
1. 填充題 (20%)
public class ParamTest { class CDegree {
public static void main(String args[]) { double t;
CDegree(double pt) {
int x = 10; t = pt;
System.out.println("x="+x); }
modifyValue(x); public String toString() {
return "攝氏"+t+"度";
System.out.println("x="+x);
}
int [] a = {10, 5}; }
System.out.println("a[0]="+a[0]);
modifyArray(a); class FDegree extends CDegree {
FDegree(double pt) {
System.out.println("a[0]="+a[0]); 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= 10 c.t= 30
x= 10 c.toString()= 攝氏 30 度
a[0]= 10 f.t= 30
a[0]= 15 f.toString()= 華氏 86 度
a[1]= 5 c.t= 40

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

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) 可以算出該點與
if (n == 0) p 點之間的距離。
return 0;
else class Point {
return 2*f(n-1)+1; int x, y;
} Point(int px, int py) {
x = px ; y = py ;
}
double dist(Point p) {
double dx = p.x-x ;
double dy = p.y-y ;
return Math.sqrt(dx*dx+dy*dy) ;
}
}
4. 三度空間的物件 (20%)

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


繼 // (1). 請填入程式碼。
承該類別後宣告一個球體類別與一個立方體類別。 public static double sum(Object3D o[]) {
double vsum = 0.0;
class Object3D { for (int i=0; i<o.length; i++) {
double volume() { return 0.0; } vsum = vsum + o[i].volume();
} }
class Ball3D extends Object3D { return vsum;
double r; }
Ball3D(double pr) { r = pr ; } // (2). 請填入程式碼。
double volume() { return (4.0/3.0) * 3.14 * r * r *r ; } public static void main(String[] args) {
} Ball3D b = new Ball3D(2.0);
class Cube3D extends Object3D { Cube3D c = new Cube3D(1.0);
double w; Object3D o[] = { b, c };
Cube3D(double pw) { w = pw ; } double s = sum(o);
double volume() { return w * w *w ; } System.out.println("總和="+s);
} }
請填入右列主程式中的空白段: }
(1) 請寫一個 sum 函數計算所有傳入之三度空間物體的
總體積。
(2) 請寫一個主程式,宣告一個 Object3D 陣列,該陣列
一個半徑為 2.0 的球體與一個長寬高都為 1.0 的立方
體,接著利用 sum 計算出其總體積後印出。

2
金門技術學院 資管系 夜二技一年級 程式設計 94 上學期 期末考 出題者 : 陳鍾誠
學號 : 姓名 : 分數 :
5. 時間物件 (20%)
(1) 請定義一個時間物件,包含 時(hour)、分(minute)、秒 class Time {
(second) 等三個欄位。 int hour, minute, second;
Time(int h, int m, int s) {
(2) 請建立一個建構函數 Time(int h, int m, int s) 、可以設定時 hour = h; minute = m; second = s;
為 h, 分為 m, 秒為 s。 }

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


字串傳回。 return hour+"時"+minute+"分"+second+"秒";
}
(4) 請建立一個函數 String format12(),可以將該 24 小時的
時間轉換成 12 小時制的字串後傳回。 String format12() {
if (hour > 12)
(5) 請建立一個函數 int diff(Time tx),可以取得該物件與 tx return "下午"+(hour-12)+"時"+minute+"分"
相減後的秒數,然後傳回。 +second+"秒";
else
以下是上述函數的一個呼叫範例,僅供參考。 return "上午"+(hour)+"時"+minute+"分"
public class Test { +second+"秒";
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 秒。 int diff(Time tx) {
System.out.println("t1.toString ()="+t1.toString()); return (hour-tx.hour)*3600+
System.out.println("t1. format12()="+t1. format12()); (minute-tx.minute)*60+
int t3 = t1.diff(t2); (second-tx.second);
System.out.println("t3="+t3+"秒"); }
} }
}

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

You might also like