NTUBIME96-HW 板


LINE

╔═════════════╗ ║九十二學年度期中考試題解答║ ╚═════════════╝ 【第一題】 A = 9 B = 0 C = 0 D = 2 E = 160 【第二題】 2 (換行) 5 3 (換行) 5 4 (換行) 5 3 (換行) 5 1 (換行) 5 P.S. 這題有一大票人因為那個 5 掛蛋....... 雖然很同情,但是填充題就是這樣.... 【第三題】 0000000000 ++++++++++ 0000000000 ++++++++++ 0000000000 P.S. 怎麼很多人寫 0+0+0+.... 呢? @@ 【第四題】 a = 10 a = 30 a = 10 a = 5 a = 5 a = 15 a = 16 a = 5 a = 16 a = 17 P.S. 基本上像這種題目,如果中間有哪個不會的話, 最好寫個「a = 」然後空下來,讓閱卷的人知道你只有這個不會, 而不是後面一整串都搞錯。 否則的話,就好像答案卡畫錯格一樣,那扣下來是很傷的... 這次我是根據你考卷上計算的痕跡來判斷, 不過如果你考卷白白的超乾淨,那就.......... 【第五題】 #include <iostream> #include <cmath> using namespace std; void main() { int i = 1; // 計數器 while(i <= 10) cout << pow(2, i++) << " "; // 帶入 power function,印出值,然後把計數器加 1 cout << endl; } P.S. 老師特別規定要用 while,用 for 的人我酌扣兩分。 【第六題】 #include <iostream> using namespace std; float my_exp(int n); // 計算指數函數的函式 void main() { // 呼叫函式並印出值 for(int i=1; i<=10; i++) cout << "my_exp(" << i << ") = " << my_exp(i) << endl; } float my_exp(int n) { float e = 1; // 指數函數的值,第一項為 1 float temp = 1; // 計算個別項的變數 // 計算後面 19 項 for(int i=1; i<20; i++) { temp *= float(n) / i; // 連乘以達到次方與階乘的效果 e += temp; // 累計各項次 } return e; } P.S. 看清楚,第 20 項是 (x^19 / 19!) 喔! 另外,請注意 temp *= float(n) / i; 這一行。 因為 n 和 i 都是 int type,所以程式會以 int 下去運算, 那出來就變整數了。是故一定要先轉成 float 再去除 i, 算出來的質才會是小數。這是很常見的 bug 來源, 請務必要特別小心。 (又,我看到有些人寫 float(n/i),這樣是沒用的。) 【第七題】 #include <iostream> #include <iomanip> using namespace std; void main() { int a1 = 0; // 第 n-2 項 int a2 = 1; // 第 n-1 項 int a3; // 第 n 項 // 先印出首二項 cout << setw(5) << a1 << "," << setw(5) << a2 << ","; // 然後是剩下的 18 項 for(int i=2; i<20; i++) { // 計算這一項應該是多少 a3 = a1 + a2; // 每一項都是前兩項的和 a1 = a2; // 前進一項 a2 = a3; // 前進一項 // 算完了就印出來 cout << setw(5) << a3 << ","; // 每五項換個行 if((i+1)%5 == 0) cout << endl; } } P.S. 我發現很多人喜歡用遞迴,的確它在某些地方是很方便, 但是切記它會佔用大量的記憶體,並造成程式效能低落。 基本上,如果能不用的話,就最好不要用。 【第八題】 #include <iostream> using namespace std; int find_GCD(int, int); // 找出 GCD 的函式 void main() { int int1, int2; // 給人家輸入用 cout << "Please input two intergers : "; cin >> int1 >> int2; cout << "(" << int1 << ", " << int2 << ") = " << find_GCD(int1, int2) << endl; } int find_GCD(int a, int b) { int c = 0; // 暫存器 while(1) { // 輾轉相除法 c = a % b; // 看看餘數是多少 if(c == 0) // 除盡了,那除數就是 GCD return b; // 沒除盡,把除數拿來當下次的被除數,餘數當下次的除數 a = b; b = c; } } 【第九題】 #include <iostream> #include <ctime> #include <cstdlib> #include <cstdio> using namespace std; int two_dice(); // 擲骰子函式 void main() { cout << "這是一個閒閒擲骰子的程式..........\n" << "每次丟兩顆,共丟一萬次,\n" << "我會把每次的結果都印出來,\n" << "希望你有足夠的動態視力去看它.........\n" << "最後我還會把這一萬次的平均值告訴你,\n" << "可以順便複習一下機率.........@@\n\n"; cout << "隨便按個鍵,要開始丟了........\n"; getchar(); int d = 0; // 這次的結果 float avg = 0; // 平均值 for(int i=0; i<10000; i++) { d = two_dice(); // 丟啊... cout << "第 " << i << " 次擲骰的結果是:" << d << endl; avg += d; // 累加 } avg /= 10000.0f; // 平均 cout << "\n丟完了,平均值是 " << avg << "\n"; } int two_dice() { int d1 = rand()%6 + 1; // 第一顆骰子 int d2 = rand()%6 + 2; // 第二顆骰子 return d1+d2; // 兩顆加起來傳回去 } 最後說一下評分標準: 1. 語法錯誤一次扣一分。 2. 邏輯錯誤視情況而定,從 2 分到 8、9 分都有可能。 3. 如果老師有特別要求(比如說要寫成函式什麼的)而沒有達到,扣兩分。 4. include 和 using 我不會特別去挑你有沒有漏掉, 說實在要去記哪個函式在哪個標頭檔也是滿無聊的。 然而有兩個情形例外,我還是會扣分: a) 你有寫但是寫錯了,這種算在語法錯誤的帳上。 b) 你什麼都沒寫,那我會開始懷疑你是不是根本不知道有這回事..... ※ 有件事要特別提一下: 有幾位同學提出質問,他們引用的時候寫成這樣: #include "iostream.h" 然後不寫 using,為什麼我扣了一分? 的確這樣 compile 會過,但是那並不代表你應該這樣寫。 這要牽扯到 C++ 的演革,早期的 C++ 是沒有 namespace 的, 此一觀念一直到了第三版才被列入標準。 在新標準中,名稱空間的標示是必須的, 你如果不想每次都寫 abc::ooxx,那就請加個 using。 然而有許多程式是在第三版 C++ 誕生前就已經存在, 為了能夠與這些程式共存,所以制定出沒有 .h 的 header file, 讓編譯器以此為依據而達到向下相容的目的--這就是你能通過檢查的原因。 但是,namespace 之所以會被加入標準,就是因為名稱衝突實在太容易發生了, 我自己就遇到過許多遍........相信我,當你花了許多時間去 debug, 到頭來卻發現是這種問題的時候,要有強烈的自制力才不會去砸電腦......... 就如同許多 C++ 與 C 的差異一樣,這個規則有其必要性,是應該要去遵守的。 尤其現在是在學習的階段,我認為應該要養成習慣使用新的規則, 這是我扣分的理由。 最後,如果你仍然對你的成績有疑問, 歡迎下來農機館地下 105 實驗室,找個姓熊的理論。 (什麼?為什麼是 105? 呃,因為 405 太小了,所以每年都要有倒楣鬼被放逐......) bear -- 這次的經典: 有位仁兄在第六題給我這樣寫: e = 1+x+x*x/2+x*x*x/2*3+x*x*x*x/2*3*4+x*x*x*x*x/2*3*4*5 +x*x*x*x*x*x/2*3*4*5*6+...........(我沒力了....) 真是好樣的...... 比起來那些在第七題用 cout 印 20 個數字的人真是太和藹可親了.......... -- 你不也是獵人嗎? 來抓我啊! --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.94.173 ※ 編輯: SuperBEAR 來自: 140.112.94.173 (11/27 19:02)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:e-shopping站內搜尋

TOP