作者qaz5620 (Ellie是我的最愛~)
看板Examination
標題[考題] 103關務 程式語言概要
時間Thu Jun 12 18:42:06 2014
以下是問題及當時憑記憶所記得的答案
可以請版友們幫我看看嗎 三小題加起來20分的題目我只拿到5分...
何謂布林運算子(Boolean Operator)之短路運算(Short-Circuit Evaluation)?
在&&運算式中 若遇到前面結果為FALSE 則不執行&&後面運算 結果為FALSE
在||運算式中 若遇到前面結果為TRUE 則不執行||後面運算 結果為TRUE
試述短路運算有何優點?又有何缺點?(8分)
優點 計算效率佳 可減少程式計算數量
缺點 容易使程式撰寫者發生邏輯錯誤
試述C語言如何處理布林運算子之短路運算。(8分)
int main void(){
int a=4; b=2; c=3;
if (a<b && b<c)
pintf("1"); //此段程式不會執行&&後面計算 為c語言處理&&短路運算方式
}
int main void(){
int a=4; b=2; c=3;
if (a>b || b<c)
pintf("1"); //此段程式不會執行||後面計算 為c語言處理||短路運算方式
}
----------------------------------
以及把迴圈改成遞迴的第四題
我的寫法是
int fact(int n){
if(n==0||n==1) return 1;
else return n*fact(n-1);
}
這樣寫我被扣了10分 請問哪邊寫不好呢 感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.134.214
※ 文章網址: http://www.ptt.cc/bbs/Examination/M.1402569729.A.529.html
※ 編輯: qaz5620 (114.39.134.214), 06/12/2014 18:42:40
推 Sunofgod:捷徑的第一小題 無須計算所有的運算元或運算子即可決定 06/12 18:45
→ Sunofgod:結果的計算方式 你的寫法比較像舉例 他考的應是"定義" 06/12 18:45
→ Sunofgod:第二小題跟你寫得差不多 06/12 18:46
→ Sunofgod:第三小題我多回答了 當為true時 C會回傳1 當為false回傳0 06/12 18:47
→ Sunofgod:也許差在這吧 06/12 18:47
→ qaz5620:感謝 那請問迴圈改遞迴那邊可以幫我看看嗎 06/12 18:49
推 Sunofgod:我已忘記自己怎寫且我也被扣10分 也許是沒防呆要考慮n是 06/12 18:53
→ Sunofgod:負值吧 06/12 18:53
→ claudia4096:你真的沒寫 fact(n-1) 還是po文時筆誤? 06/12 18:54
→ claudia4096:另外負值沒處理也是問題, 會掉進無窮迴圈 06/12 18:55
推 bloodyaugust:第3小題沒寫出是否會print 06/12 18:55
推 Sunofgod:應該是筆誤啦 那邊如果錯應該一分都沒有 06/12 18:58
※ 編輯: qaz5620 (114.39.134.214), 06/12/2014 18:58:48
→ qaz5620:感謝提醒 我筆誤了 那邊是N-1 06/12 18:59
→ qaz5620:看了一下25473那篇上榜文 他沒寫0只被扣5分 06/12 19:01
→ qaz5620:我有寫0卻被扣10分 到底怎回事啊 囧 06/12 19:01
推 claudia4096:改考券的人不同?我0跟負數都處理了也被扣5分,不知在 06/12 19:06
→ claudia4096:扣什麼 @@ (剛拿到成績單) 06/12 19:06
→ okstephen1:老實說 我也不太懂 我只依稀記得我好像有用// 06/12 21:02
→ okstephen1:在if的後面註明遞迴終止條件的樣子 應該是改的人不同? 06/12 21:02
→ okstephen1:我剛想到會不會是輸入人按錯的時候要處理負數? 06/12 21:10
→ okstephen1:我也不太確定是不是因為這樣 06/12 21:16
推 gary22204:我也是被扣五分,真的不太懂..話說大於0的INT就是自然數 06/12 21:17
推 gary22204:講錯,0也是自然數XDDDD 06/12 21:20
→ okstephen1:我的意思是 <0應該為不合法 06/13 00:38
推 Sunofgod:我在想是不是要寫主程式才給全分? 06/13 09:57
→ Sunofgod:雖然他題目只要求改寫成遞迴 但給10分或許要寫主程式 06/13 09:57
→ Sunofgod:說錯 給20分 06/13 09:57
→ claudia4096:唉,我在猜是不是大家最後都沒再多寫 return 1; 06/13 11:45
→ claudia4096:早年的turbo C 編譯器,不寫最後的return會過不了 06/13 11:46
→ claudia4096:只能請bigwhite大解釋了,亂猜也不是辦法 06/13 11:46
推 lingpxs:第一題舉例請用AND OR取代&& || 06/14 10:29
推 lingpxs:第二題優點 減少程式碼執行數量 效率較佳 缺點容易有邏輯 06/14 10:31
→ lingpxs:錯誤 需編譯器支援 06/14 10:31
推 lingpxs:最後那提應該用if(n<=1) 才可以處理到1以下的條件 06/14 10:34