【发布时间】:2017-03-28 04:13:43
【问题描述】:
我正在编写程序来计算给定零钱的最大零钱数量。我将所需的更改作为正浮点数,并将其乘以 100 将其转换为 int,因此金额以便士为单位。经测试,某些值有效,但其他值(例如 4.2)无效,当它应该是 18 时给出答案 22。我不知道为什么。可以请一些人帮忙。
int main (void)
{
float change;
do
{
printf("How much change do you want?\n");
change = get_float();
} while (change < 0);
int change1 = change * 100;
int coins = 0;
while (change1 != 0)
{
if (change1 >= 25)
{
change1 -= 25;
coins++;
}
else if (change1 >= 10)
{
change1 -= 10;
coins++;
}
else if (change1 >= 5)
{
change1 -= 5;
coins++;
}
else if (change1 >= 1)
{
change1 -= 1;
coins++;
}
}
//Print change
printf("%i\n", coins);
}
【问题讨论】:
-
您是否使用调试器单步执行了代码?
-
你需要调试它才能找到问题。在程序运行时逐行查看程序,看看数据哪里出错了。
-
请不要使用 20 世纪的
float甚至新奇的 21 世纪的double来解决“变化”问题。以整数美分、便士、最小面额工作。常见问题解答。
标签: c algorithm if-statement while-loop