這是我的測試輸出:爲什麼我的程序在某些測試中正常工作,而不是爲其他人測試?
:) greedy exists
:) greedy compiles
:(input of 0.41 yields output of 4
expected "4\n", not "3\n"
:(input of 0.01 yields output of 1
expected "1\n", not "0\n"
:) input of 0.15 yields output of 2
:) input of 1.6 yields output of 7
:) input of 23 yields output of 92
:) input of 4.2 yields output of 18
:) rejects a negative input like -.1
:) rejects a non-numeric input of "foo"
:) rejects a non-numeric input of ""
這是代碼:
#include <stdio.h>
#include <cs50.h>
void count_coins();
int coin = 0;
float change = 0;
int main(void)
{
do
{
change = get_float("How much change is owed? ");
}
while (change < 0);
count_coins();
printf("%i\n", coin);
}
void count_coins()
{
while (change > 0.24)
{
coin++;
change -= 0.25;
// printf("%.2f\n", change);
}
while (change > 0.09)
{
coin++;
change -= 0.10;
// printf("%.2f\n", change);
}
while(change > 0.04)
{
coin++;
change -= 0.05;
// printf("%.2f\n", change);
}
while (change >= 0.01)
{
coin++;
change -= 0.01;
// printf("%.2f\n", change);
}
}
什麼是應該發生的?你採取了哪些調試步驟? –
也許你假設'浮動'可以保存你試圖存儲的確切數字,但它不能。數字可能會在這裏和那裏近似,以適應「浮動」如何工作的規範。你所做的比較很可能會導致怪異的行爲。你應該在那裏使用整數,用'100'來表示'1.00'等。 – Havenard
@DaveNewton該程序假設計算需要給出的最小數量的硬幣作爲改變。我注意到問題是當我們到達時(改變> 0.01) –