iT邦幫忙

1

C語言 問題1

我想輸入球的總數,每5個一數,最後輸出剩的球數。
他編譯成功,但沒有算出剩下的球數,只輸出第一行 有幾顆球: 而已。https://ithelp.ithome.com.tw/upload/images/20190727/201186855MXJR25eC3.png
請問我該怎麼改呢??

謝謝。

1 個回答

8
心原一馬
iT邦研究生 5 級 ‧ 2019-07-28 00:22:47
最佳解答

嗨~ 邦友您好:
首先給你一個肯定,
做為一個新手,
你描述問題表達的很清楚,
讓人能看懂您想問的問題,給你一個讚。

只是建議問程式問題時,
除了貼上截圖外,
方便的話,也可以貼上原程式碼,
方便回答的人複製你的程式碼除錯哦~
(其實因為你的程式碼短是還好,
若程式很長就很建議也貼上原程式碼)

好啦~ 開始解惑~
正所謂魔鬼藏在細節裡呢,
主要錯誤是錯在你的第九行

scanf("%d ",&total);

這時你可能會納悶:
「咦?這個感覺跟教科書上寫的一樣啊?怎麼可能錯呢?」
因為你的scanf函數裡多打了一個空格,
正確應這樣寫:

scanf("%d",&total);

實際運行時,你輸入一個數字不會有反應,
要輸入第二個數字才會繼續印出剩下幾顆球
因為scanf函數用空格符結尾時,
會跳過空格去讀下一個數字,
所以需要輸入兩個數字才算讀取數字結束而不是一個。
附上參考資料 (原文解說有點長,看看就好)。

但是如果光是這樣改的話,
你會發現答案可能還是錯的,
因為邏輯上,我們應該是要
「先把球的數量讀進來,再去算餘數」,而非
「先算餘數,再把球的數量讀進來」。
(一開始並不知道有幾顆球啊~)
因此,您的第7行

int remainder = total % count;

應移至scanf函數之後,
計算的結果才是對的。
小馬完整修改程式碼如下:

#include <stdio.h>

int main()
{
    int total;
    int count=5;
    printf("有幾顆球:");
    scanf("%d",&total);
    int remainder = total % count;
    printf("剩下 %d 顆球\n", remainder);
}

希望有幫助到您~

謝謝~~/images/emoticon/emoticon41.gif

我要發表回答

立即登入回答