阿摩線上測驗 登入

申論題資訊

試卷:107年 - 107 地特四等 程式設計概要#73697
科目:程式設計
年份:107年
排序:0

題組內容

一、下列程式皆以 C 語言語法呈現,請依據所給程式片段回答問題。

申論題內容

⑷若下列程式片段目的是要判斷 x 是否能被 2,3,4,5 整除,若可被 整除就輸出可被整除之訊息。請問程式有何錯誤?請說明該如何修正 方能符合預期目的。(10 分)5c1b2c461cc11.jpg

詳解 (共 4 筆)

詳解 提供者:芷

/為除法運算子

整數/整數結果會是整數的結果

假設x=2

2/2=1

2/3=0

2/4=0

2/5=0

這樣輸出會是:2能被3整除


應該要把/改成%(取餘數)才能達到預期的效果




參考資料

詳解 提供者:able9514476
將條件式的/改成%(餘數除)
詳解 提供者:hchungw
該代碼片段的目的是判斷變數 x 是否可以被 2、3、4 或 5 整除。如果 x 能被這些數中的任何一個整除,它將輸出一條相應的消息。
然而,這段代碼有個邏輯錯誤。因為 4 是 2 的倍數,如果 x 可以被 4 整除,那麼它也肯定可以被 2 整除。由於使用了 else if 結構,一旦發現 x 可以被 2 整除,程式就會跳過檢查是否可以被 4 整除的代碼。
為了修正這個錯誤並且確保代碼能夠按預期工作,應該分別檢查 x 是否可以被這些數整除,而不是使用 else if 鏈。每個條件都應該獨立檢查。
這裡是修正後的代碼:
if (x % 2 == 0) printf("%d 能被 2 整除\n", x);
if (x % 3 == 0) printf("%d 能被 3 整除\n", x);
if (x % 4 == 0) printf("%d 能被 4 整除\n", x);
if (x % 5 == 0) printf("%d 能被 5 整除\n", x);
這樣修改後,不論 x 能被哪些數整除,程式都會列印出相應的消息。即使 x 能被多個數整除,也會輸出多條消息。
詳解 提供者:澐
能不能整除需用取餘數