[考題] 103關務 程式語言概要

作者: qaz5620 (Ellie是我的最愛~)   2014-06-12 18:42:06
以下是問題及當時憑記憶所記得的答案
可以請版友們幫我看看嗎 三小題加起來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語言處理||短路運算方式
}
作者: Sunofgod ( )   2014-06-12 18:45:00
捷徑的第一小題 無須計算所有的運算元或運算子即可決定結果的計算方式 你的寫法比較像舉例 他考的應是"定義"第二小題跟你寫得差不多第三小題我多回答了 當為true時 C會回傳1 當為false回傳0也許差在這吧
作者: qaz5620 (Ellie是我的最愛~)   2014-06-12 18:49:00
感謝 那請問迴圈改遞迴那邊可以幫我看看嗎
作者: Sunofgod ( )   2014-06-12 18:53:00
我已忘記自己怎寫且我也被扣10分 也許是沒防呆要考慮n是負值吧
作者: claudia4096 (泠)   2014-06-12 18:54:00
你真的沒寫 fact(n-1) 還是po文時筆誤?另外負值沒處理也是問題, 會掉進無窮迴圈
作者: bloodyaugust (bloodyaugust)   2014-06-12 18:55:00
第3小題沒寫出是否會print
作者: Sunofgod ( )   2014-06-12 18:58:00
應該是筆誤啦 那邊如果錯應該一分都沒有
作者: qaz5620 (Ellie是我的最愛~)   2014-06-12 18:59:00
感謝提醒 我筆誤了 那邊是N-1看了一下25473那篇上榜文 他沒寫0只被扣5分我有寫0卻被扣10分 到底怎回事啊 囧
作者: claudia4096 (泠)   2014-06-12 19:06:00
改考券的人不同?我0跟負數都處理了也被扣5分,不知在扣什麼 @@ (剛拿到成績單)
作者: okstephen1 (ㄌㄩㄝ)   2014-06-12 21:02:00
老實說 我也不太懂 我只依稀記得我好像有用//在if的後面註明遞迴終止條件的樣子 應該是改的人不同?我剛想到會不會是輸入人按錯的時候要處理負數?階乘的n好像必須是自然數 http://ppt.cc/H5zx我也不太確定是不是因為這樣
作者: gary22204 (大頭蛇)   2014-06-12 21:17:00
我也是被扣五分,真的不太懂..話說大於0的INT就是自然數講錯,0也是自然數XDDDD
作者: okstephen1 (ㄌㄩㄝ)   2014-06-13 00:38:00
我的意思是 <0應該為不合法
作者: Sunofgod ( )   2014-06-13 09:57:00
我在想是不是要寫主程式才給全分?雖然他題目只要求改寫成遞迴 但給10分或許要寫主程式說錯 給20分
作者: claudia4096 (泠)   2014-06-13 11:45:00
唉,我在猜是不是大家最後都沒再多寫 return 1;早年的turbo C 編譯器,不寫最後的return會過不了只能請bigwhite大解釋了,亂猜也不是辦法
作者: lingpxs (Kelly Lin)   2014-06-14 10:29:00
第一題舉例請用AND OR取代&& ||第二題優點 減少程式碼執行數量 效率較佳 缺點容易有邏輯錯誤 需編譯器支援最後那提應該用if(n<=1) 才可以處理到1以下的條件

Links booklink

Contact Us: admin [ a t ] ucptt.com