我想輸入球的總數,每5個一數,最後輸出剩的球數。
他編譯成功,但沒有算出剩下的球數,只輸出第一行 有幾顆球: 而已。
請問我該怎麼改呢??
謝謝。
嗨~ 邦友您好:
首先給你一個肯定,
做為一個新手,
你描述問題表達的很清楚,
讓人能看懂您想問的問題,給你一個讚。
只是建議問程式問題時,
除了貼上截圖外,
方便的話,也可以貼上原程式碼,
方便回答的人複製你的程式碼除錯哦~
(其實因為你的程式碼短是還好,
若程式很長就很建議也貼上原程式碼)
好啦~ 開始解惑~
正所謂魔鬼藏在細節裡呢,
主要錯誤是錯在你的第九行
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);
}
希望有幫助到您~