Object-Oriented Programming, Mid-term Test, 11/21/2000

Similar documents
Microsoft Word - CPMidTerm2010SpringSolution

untitled

Microsoft Word - CPMidTerm2011Spring

CHAPTER VC#

Microsoft Word - CPMidTerm2011SpringSolution

untitled

Microsoft Word - 第3章.doc

Microsoft Word - CPMidTerm2012SpringSolution

第3章.doc

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

新・解きながら学ぶJava

Microsoft Word - ch04三校.doc

untitled

碩命題橫式

新版 明解C++入門編

FY.DOC

untitled

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

Microsoft Word - 01.DOC

C/C++ Programming

<4D F736F F D DA5BFA6A1C476C1C92DBEC7ACECB8D5A8F728B57BB35D292E646F63>

CC213

untitled

untitled

《大话设计模式》第一章

第8組 王玉妏、黃怡君、殷秀菁

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

CHAPTER 1

untitled

Microsoft Word C-A卷.docx

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

一、

Object-Oriented Programming, Mid-term Test, 11/21/2000

<4D F736F F D B0D3B77EC3FEA7DEC3C0C476C1C9A5BFA6A1B8D5C3442DB57BA6A1B35DAD702DBEC7ACEC2E646F6378>

<313031A4C9BEC7C160BA5DB3E A457BAF4A4BDA769AAA9292E584C53>

nbqw.PDF

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

Microsoft PowerPoint - C_Structure.ppt

4

新・解きながら学ぶC言語

Scott Effective C++ C++ C++ Roger Orr OR/2 ISO C++ Effective Modern C++ C++ C++ Scoot 42 Bart Vandewoestyne C++ C++ Scott Effective Modern C++ Damien

CC213

extend

c_cpp

untitled

C/C++语言 - C/C++数据

新・明解C言語入門編『索引』

Microsoft Word - CPFinal2010Spring

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

C/C++程序设计 - 字符串与格式化输入/输出

投影片 1

提问袁小兵:

C 1

C/C++语言 - 运算符、表达式和语句

02

第一章 章标题-F2 上空24,下空24

untitled

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

運算子多載 Operator Overloading

Chapter12 Derived Classes

untitled

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Microsoft PowerPoint - 07-overloaded.ppt

1.5招募说明书(草案)

運算子多載 Operator Overloading

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

新版 明解C言語入門編

多媒體應用 13 新增專案並完成版面配置 <ExMusic01> <activity_main.xml> ImageView ID imgplay ImageView ID imgstop ImageView ID imgfront TextView ID txtsong TextView ID t

Microsoft Word - ACL chapter02-5ed.docx

( 总 第 1073 期 ) 浙 江 省 人 民 政 府 主 办 2015 年 3 月 17 日 出 版 省 政 府 令 省 政 府 文 件 目 录 浙 江 省 大 型 群 众 性 活 动 安 全 管 理 办 法 ( 浙 江 省 人 民 政 府 令 第 333 号 ) (3) 浙 江 省 人 民 政

3.1 num = 3 ch = 'C' 2

06-4.indd

運算子多載 Operator Overloading

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

C/C++ - 字符输入输出和字符确认

untitled

The Embedded computing platform

untitled

《美国名将全传——德怀特·戴维·艾森豪威尔》

全国计算机技术与软件专业技术资格(水平)考试

96年特種考試第一次司法人員考試試題解答

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

第一章 章标题-F2 上空24,下空24

The golden pins of the PCI card can be oxidized after months or years

Strings

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

資料結構之C語言重點複習

今天 年春季号 总 92 期

*

( ) / / / / / / /

(Microsoft Word - 8\244T\244\362\277\337\272]\244W\265L\246W.doc)

Microsoft Word - 專家本色 doc


但, 你 应 该 听 过 我 们 走 在 大 路 上 这 首 歌, 或 许 还 知 道 革 命 人 永 远 是 年 轻 那 支 歌 ; 并 且, 几 乎 可 以 肯 定, 你 在 戴 红 领 巾 的 那 阵, 必 然 唱 过 牛 儿 还 在 山 坡 吃 草, 放 牛 的 却 不 知 道 哪 儿 去

2 临 终 助 念 答 问 序 临 终 关 怀, 由 佛 门 净 宗 古 来 祖 师 大 德 提 倡 助 念 往 生, 现 今 已 渐 为 社 会 大 众 所 重 视, 在 台 湾, 台 大 长 庚 等 各 大 医 院, 也 都 设 有 助 念 室 ; 大 陆 上 许 多 道 场, 也 有 专 为

校园之星

Transcription:

通識計算機程式設計期中考試題參考解答, 4/17/2009 1. 撰寫一或數個 C# 敘述達成下列要求 : ( 假設 using System; 敘述已經包含於程式中 ) (a) 宣告 int 變數 x, bool 變數 b, double 常數 F = 7.0. (3%) int x; bool b; const double F = 7.0; (b) 在螢幕顯示一行字, 要求使用者輸入一個整數. (3%) Console.WriteLine(" 輸入一個整數 "); (c) 自鍵盤讀入一個整數., 並將其值存入已宣告之 int 變數 x (3%) x = Convert.ToInt16(Console.ReadLine()); 或 x = int.parse(console.readline()); (d) 令已宣告之 bool 變數 b 等於邏輯敘述 x < F 的結果. (3%) b = x < F; (e) 若.b 為真, 在螢幕顯示 x <= F 否則印出 x > F (3%) if (b) Console.WriteLine("x <= F"); else Console.WriteLine("x > F"); 或 1/14

string message = b? "x <= F" : "x > F"; Console.WriteLine(message); 2. 撰寫一或數個 C# 敘述達成下列要求 : ( 假設 using System; 敘述已經包含於程式中 ) (a) 使用遞減算子 -- 將已宣告設值之 int 變數 m 先減 1 後, 再設定 (assign) 給他處已宣告之 int 變數 k (3%) k = --m; (b) 令他處已宣告之 int 變數 r 等於他處已宣告設值之 int 變數 p 除以 10 的餘數 (3%) r = p % 10; (c) 宣告 double 變數 u, 並令其值為 double 變數 t 的平方根 (3%) double u = Math.Sqrt(t); (d) 宣告 string 變數 s, 利用三元運算子使其在他處已宣告設值之 double 變數 grade 大於等於 60 時等於 及格, 反之則等於 不及格 (3%) string s = (grade >= 60.0)? " 及格 " : " 不及格 "; (e) 宣告變數 c 為 char 型別, 並令其值為定位鍵 (tab) 字元 (3%) char c = '\t'; 3. 構想一個類別 Cube 如下圖之 UML 符號, 撰寫一或數個 C# 敘述達成下列要求 : ( 假設 using System; 敘述已經包含於程式中 ): 其中 (a) (b) (c) 要求寫測試程式片段,(d) 要求寫一完整類別程式 假設 Cube 類別程式碼中沒有多載建構式 2/14

(a) 產生一個 Cube 物件, 宣告命名為 cube (3%) Cube cb = new Cube(); (b) 利用屬性 Side, 可以設定或取得產生之立方體物件的邊長, 試寫一敘述設定 cube 的邊長為 2 (3%) cb.side = 2; (c).cube 內有一個函式 Volume 可以傳回產生之立方體物件的體積, 試寫一敘述呼叫 cube 的 Volume 函式計算體積, 並將結果存入一他處已宣告之 double 變數 v (3%) v = cb.volume(); (d) 撰寫完整之 Cube 類別程式 (6%) class Cube private int side; public int Side get return side; set side = value; public int Volume() return side * side * side; 4. 找出以下程式片段之錯誤, 並予更正. (a) (3%) const int L; L = 30; 常數宣告時應同時設定其值, 故應改為 const int L = 30; 3/14

(b) (3%) enum Status FAIL = 0, PASS = 1 Status st = PASS; 列舉型別之值使用時須加註列舉型別名稱, 故最後一行應改為 Status st = Status.PASS; (c) (3%) 以下程式片段應計算 1 到 10 加總的和. int i; int sum = 0; for ( i=1; i < 10; ++i ) sum += i; 這是 off-by-one error, 迴圈只加到 9, 沒有把 10 算進去 應改為 int i; int sum = 0; for (i = 1; i <= 10; ++i) sum += i; (d) (3%) 以下程式片段應印出 計程好累! 字樣 3 次. int n = 0; while ( n < 3 ) Console.WriteLine( 計程好累! ); 迴圈內控制變數不會改變其值, 造成無窮迴圈 應改為 int n = 0; while ( n < 3 ) 4/14

Console.WriteLine(" 計程好累!");; ++n; 或 int n = 0; while ( n < 3 ) ++n; Console.WriteLine(" 計程好累!");; (e) (3%) 下列程式片段呼叫函式 GetValues 得到變數 a 與 b 的新數值. int a; int b; GetValues( ref a, ref b ); static void GetValues( ref int a, ref int b ) a = 3; b = 5; 使用傳址引數必須先設定其值, 否則就應改用 out 引數 所以應改為 int a = 0; int b = 0; GetValues(ref a, ref b); 5/14

static void GetValues(ref int a, ref int b) a = 3; b = 5; 或 int a; int b; GetValues(out a, out b); static void GetValues(out int a, out int b) a = 3; b = 5; 5. 試寫出下列程式的輸出 (3%) using System; namespace MidTerm2009Problem5 struct SPoint2D public int x; public int y; public SPoint2D(int x, int y) this.x = x; this.y = y; 6/14

class CPoint2D public int x; public int y; public CPoint2D() x = 0; y = 0; public CPoint2D(int x, int y) this.x = x; this.y = y; SPoint2D spt1 = new SPoint2D(1, 2); SPoint2D spt2 = new SPoint2D(); SPoint2D spt3 = new SPoint2D(); spt2 = spt1; spt3 = spt1; Console.WriteLine("sPt1 = (0, 1)", spt1.x, spt1.y); Console.WriteLine("sPt2 = (0, 1)", spt2.x, spt2.y); Console.WriteLine("sPt3 = (0, 1)", spt3.x, spt3.y); CPoint2D cpt1 = new CPoint2D(1, 2); CPoint2D cpt2 = new CPoint2D(); CPoint2D cpt3 = new CPoint2D(); cpt2 = cpt1; cpt3 = cpt1; 7/14

Console.WriteLine("cPt1 = (0, 1)", cpt1.x, cpt1.y); Console.WriteLine("cPt2 = (0, 1)", cpt2.x, cpt2.y); Console.WriteLine("cPt3 = (0, 1)", cpt3.x, cpt3.y); spt1.x = 5; spt1.y = 6; spt2.x = 7; spt2.y = 8; Console.WriteLine("sPt1 = (0, 1)", spt1.x, spt1.y); Console.WriteLine("sPt2 = (0, 1)", spt2.x, spt2.y); Console.WriteLine("sPt3 = (0, 1)", spt3.x, spt3.y); cpt1.x = 5; cpt1.y = 6; cpt2.x = 7; cpt2.y = 8; Console.WriteLine("cPt1 = (0, 1)", cpt1.x, cpt1.y); Console.WriteLine("cPt2 = (0, 1)", cpt2.x, cpt2.y); Console.WriteLine("cPt3 = (0, 1)", cpt3.x, cpt3.y); 如下圖 8/14

6. 舉一個課堂與講義所授以外的例子, 以台大一般科系初學程式設計的同學應該能了解的程度為準, 解釋什麼是物件? 什麼是類別? (6%) ( 略 ) 7. 簡單說明 工程方法 如何用來開發程式 (6%) ( 參考 物件導向虛擬程式設計 講義,4.3 節 ) 8. 寫一程式檢驗所給三角形之三邊長是否構成一個直角三角形 本題滿分 25 分, 全部程式寫成一個大 Main 函式, 不區分函式及類別者, 最高得 20 分 ; 善用函式者, 最高得 22 分 ; 善用自創類別者, 最高得 24 分, 善用自創類別及 Debug.Assert 敘述設計者, 最高得 25 分 (25%) 寫成一個大 Main 函式, 不區分函式及類別 : using System; namespace MidTerm2009Problem8 9/14

Console.WriteLine(" 輸入三角形第一邊長 "); double a = double.parse(console.readline()); Console.WriteLine(" 輸入三角形第二邊長 "); double b = double.parse(console.readline()); Console.WriteLine(" 輸入三角形第三邊長 "); double c = double.parse(console.readline()); const double EPSILON = 1.0e-4; if (Math.Abs(a * a + b * b - c * c) < EPSILON Math.Abs(b * b + c * c - a * a) < EPSILON Math.Abs(c * c + a * a - b * b) < EPSILON) Console.WriteLine(" 大約是直角三角形 "); else Console.WriteLine(" 不是直角三角形 "); 使用函式 using System; namespace MidTerm2009Problem8 Console.WriteLine(" 輸入三角形第一邊長 "); double a = double.parse(console.readline()); Console.WriteLine(" 輸入三角形第二邊長 "); double b = double.parse(console.readline()); Console.WriteLine(" 輸入三角形第三邊長 "); double c = double.parse(console.readline()); if ( IsRTriangle( a, b, c ) ) 10/14

Console.WriteLine(" 大約是直角三角形 "); else Console.WriteLine(" 不是直角三角形 "); public static bool IsRTriangle(double a, double b, double c) const double EPSILON = 1.0e-4; bool result = Math.Abs(a * a + b * b - c * c) < EPSILON Math.Abs(b * b + c * c - a * a) < EPSILON Math.Abs(c * c + a * a - b * b) < EPSILON; return result; 使用自創類別 using System; namespace MidTerm2009Problem8 Console.WriteLine(" 輸入三角形第一邊長 "); double a = double.parse(console.readline()); Console.WriteLine(" 輸入三角形第二邊長 "); double b = double.parse(console.readline()); Console.WriteLine(" 輸入三角形第三邊長 "); double c = double.parse(console.readline()); 11/14

if ( RTriangleTester.IsRTriangle( a, b, c ) ) Console.WriteLine(" 大約是直角三角形 "); else Console.WriteLine(" 不是直角三角形 "); class RTriangleTester public static bool IsRTriangle( double a, double b, double c ) const double EPSILON = 1.0e-4; bool result = Math.Abs(a * a + b * b - c * c) < EPSILON Math.Abs(b * b + c * c - a * a) < EPSILON Math.Abs(c * c + a * a - b * b) < EPSILON; return result; 併用自創類別及 Debug.Assert 敘述 using System; using System.Diagnostics; namespace MidTerm2009Problem8 // 執行程式前先測試已知範例是否正確 Debug.Assert( RTriangleTesterTest.OK() ); 12/14

Console.WriteLine(" 輸入三角形第一邊長 "); double a = double.parse(console.readline()); Console.WriteLine(" 輸入三角形第二邊長 "); double b = double.parse(console.readline()); Console.WriteLine(" 輸入三角形第三邊長 "); double c = double.parse(console.readline()); if ( RTriangleTester.IsRTriangle( a, b, c ) ) Console.WriteLine(" 大約是直角三角形 "); else Console.WriteLine(" 不是直角三角形 "); class RTriangleTesterTest public static bool OK() bool success1 = RTriangleTester.IsRTriangle( 3.0, 4.0, 5.0); bool success2 = RTriangleTester.IsRTriangle( 13.0, 5.0, 12.0); bool success3 = RTriangleTester.IsRTriangle( 1.0, 1.41421, 1.0); bool success4 = RTriangleTester.IsRTriangle( 1.0, 1.41421, 1.732051); bool success5 =!RTriangleTester.IsRTriangle( 4.0, 4.0, 4.0); bool success6 =!RTriangleTester.IsRTriangle( 8.0, 8.0, 5.0); return success1 && success2 && success3 && success4 && success5 && success6; 13/14

class RTriangleTester public static bool IsRTriangle( double a, double b, double c ) const double EPSILON = 1.0e-4; bool result = Math.Abs(a * a + b * b - c * c) < EPSILON Math.Abs(b * b + c * c - a * a) < EPSILON Math.Abs(c * c + a * a - b * b) < EPSILON; return result; 14/14