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

看板Examination (國家考試)作者 (Ellie是我的最愛~)時間12年前 (2014/06/12 18:42), 12年前編輯推噓11(11024)
留言35則, 7人參與, 最新討論串1/1
以下是問題及當時憑記憶所記得的答案 可以請版友們幫我看看嗎 三小題加起來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

06/12 18:45, , 1F
捷徑的第一小題 無須計算所有的運算元或運算子即可決定
06/12 18:45, 1F

06/12 18:45, , 2F
結果的計算方式 你的寫法比較像舉例 他考的應是"定義"
06/12 18:45, 2F

06/12 18:46, , 3F
第二小題跟你寫得差不多
06/12 18:46, 3F

06/12 18:47, , 4F
第三小題我多回答了 當為true時 C會回傳1 當為false回傳0
06/12 18:47, 4F

06/12 18:47, , 5F
也許差在這吧
06/12 18:47, 5F

06/12 18:49, , 6F
感謝 那請問迴圈改遞迴那邊可以幫我看看嗎
06/12 18:49, 6F

06/12 18:53, , 7F
我已忘記自己怎寫且我也被扣10分 也許是沒防呆要考慮n是
06/12 18:53, 7F

06/12 18:53, , 8F
負值吧
06/12 18:53, 8F

06/12 18:54, , 9F
你真的沒寫 fact(n-1) 還是po文時筆誤?
06/12 18:54, 9F

06/12 18:55, , 10F
另外負值沒處理也是問題, 會掉進無窮迴圈
06/12 18:55, 10F

06/12 18:55, , 11F
第3小題沒寫出是否會print
06/12 18:55, 11F

06/12 18:58, , 12F
應該是筆誤啦 那邊如果錯應該一分都沒有
06/12 18:58, 12F
※ 編輯: qaz5620 (114.39.134.214), 06/12/2014 18:58:48

06/12 18:59, , 13F
感謝提醒 我筆誤了 那邊是N-1
06/12 18:59, 13F

06/12 19:01, , 14F
看了一下25473那篇上榜文 他沒寫0只被扣5分
06/12 19:01, 14F

06/12 19:01, , 15F
我有寫0卻被扣10分 到底怎回事啊 囧
06/12 19:01, 15F

06/12 19:06, , 16F
改考券的人不同?我0跟負數都處理了也被扣5分,不知在
06/12 19:06, 16F

06/12 19:06, , 17F
扣什麼 @@ (剛拿到成績單)
06/12 19:06, 17F

06/12 21:02, , 18F
老實說 我也不太懂 我只依稀記得我好像有用//
06/12 21:02, 18F

06/12 21:02, , 19F
在if的後面註明遞迴終止條件的樣子 應該是改的人不同?
06/12 21:02, 19F

06/12 21:10, , 20F
我剛想到會不會是輸入人按錯的時候要處理負數?
06/12 21:10, 20F

06/12 21:16, , 21F
階乘的n好像必須是自然數 http://ppt.cc/H5zx
06/12 21:16, 21F

06/12 21:16, , 22F
我也不太確定是不是因為這樣
06/12 21:16, 22F

06/12 21:17, , 23F
我也是被扣五分,真的不太懂..話說大於0的INT就是自然數
06/12 21:17, 23F

06/12 21:20, , 24F
講錯,0也是自然數XDDDD
06/12 21:20, 24F

06/13 00:38, , 25F
我的意思是 <0應該為不合法
06/13 00:38, 25F

06/13 09:57, , 26F
我在想是不是要寫主程式才給全分?
06/13 09:57, 26F

06/13 09:57, , 27F
雖然他題目只要求改寫成遞迴 但給10分或許要寫主程式
06/13 09:57, 27F

06/13 09:57, , 28F
說錯 給20分
06/13 09:57, 28F

06/13 11:45, , 29F
唉,我在猜是不是大家最後都沒再多寫 return 1;
06/13 11:45, 29F

06/13 11:46, , 30F
早年的turbo C 編譯器,不寫最後的return會過不了
06/13 11:46, 30F

06/13 11:46, , 31F
只能請bigwhite大解釋了,亂猜也不是辦法
06/13 11:46, 31F

06/14 10:29, , 32F
第一題舉例請用AND OR取代&& ||
06/14 10:29, 32F

06/14 10:31, , 33F
第二題優點 減少程式碼執行數量 效率較佳 缺點容易有邏輯
06/14 10:31, 33F

06/14 10:31, , 34F
錯誤 需編譯器支援
06/14 10:31, 34F

06/14 10:34, , 35F
最後那提應該用if(n<=1) 才可以處理到1以下的條件
06/14 10:34, 35F
文章代碼(AID): #1JcOG1Kf (Examination)
文章代碼(AID): #1JcOG1Kf (Examination)