为什么我的程序适用于某些测试而不适用于其他测试?
这是我测试的输出:
:) 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 #include void count_coins(); int coin = 0; float change = 0; int main(void) { do { change = get_float("How much change is owed? "); } 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); } }
正如Havenard已经写过的那样,问题是change
存储为float
。 对于这样的程序,必须将change
存储为整数值。
这是你的代码用int
而不是float
:
#include #include void count_coins (void); int coin = 0; int change = 0; int main (void) { do { change = 41; // insert a get integer function here } while (change < 0); count_coins(); printf("%i\n", coin); } void count_coins (void) { while (change >= 25) { coin++; change -= 25; } while (change >= 10) { coin++; change -= 10; } while(change >= 5) { coin++; change -= 5; } while (change >= 1) { coin++; change -= 1; } }