我在EDX:計算機科學的Pset1上,並且在「改變時間」的最後。 在這裏你應該做一個代碼,一旦給出一個數字,應該找到你需要的最少數量的硬幣。 我已經讓我的代碼,但我似乎無法找到如何使它,所以它發現最低限度。這裏是我的代碼:我如何使它成爲我的代碼尋找最低金額的硬幣?
{
printf ("How much do I owe you?\n"); //Get a non-negative number
float change = GetFloat();
while (change < 0)
{
printf ("Please enter a non-negative number\n");
change = GetFloat();
}
int total = 0;
while (change >=.25)
{
change = change - .25;
total++;
}
while (change >=.1 && change <.25)
{
change = change - .1;
total++;
}
while (change >=.05 && change <.10)
{
change = change - .05;
total++;
}
while (change > 0 && change <.05)
{
printf ("%i\n", total);
}
當我把在0.15,它給我的3回答,但應該說2 此外,一些其他的東西我做給我一個數字,但其不是最小值。 我怎樣才能使它始終找到最低金額?
請注意浮點類型的擬似性錯誤。在這種情況下,我猜你不應該使用浮點值,而應該使用整數。 – MikeCAT
(1)你最後的'while'循環看起來很亂。它應該減去.01並增加'total',而是打印總數。它可能是一個粘貼錯誤,但'printf'應該在循環之外。你可以用17美分來測試它(2)正如MikeCAT所說,浮點錯誤在這裏是一個問題。最好的解決方案是使用便士而不是美元,並將整數用於變量。所以1.00會變成100.然後你的算術將是確切的。當你把.15放在 –
時。它處理兩個while循環,但在最後一個循環中,該值不是精確的0,它可能類似於0.000000001,或者浮點數可能有一些錯誤。 – mssirvi