cs50 pset1 cash:for 循环为某些值产生错误
cs50 pset1 cash: for loop producing errors for some values
我希望程序为用户提供找零所需的最少硬币数量,但我的循环并不总是提供正确的答案(值 0.41、0.75,...)。我知道“while”循环会是更好的解决方案,但是有人能告诉我那些“for”循环有什么问题吗?谢谢
float change;
do
{
change = get_float("Change owed:$ ");
}
while (change < 0);
int cents = round(change * 100);
int coins = 0;
for (int quarters = cents; quarters >= 25; quarters -= 25)
{
coins++;
}
for (int dimes = cents % 25; dimes >= 10; dimes -= 10)
{
coins++;
}
for (int nickels = cents % 10; nickels >= 5; nickels -= 5)
{
coins++;
}
for (int pennies = cents % 5; pennies >= 1; pennies -= 1)
{
coins++;
}
printf("%i\n", coins);
}
镍币(和便士)的起点是错误的。对于 .41 示例:
季度循环从 41
开始
dimes 循环从 41 % 25 = 16
开始
nickles 循环从 41 % 10 = 1
开始
这是个问题。
我希望程序为用户提供找零所需的最少硬币数量,但我的循环并不总是提供正确的答案(值 0.41、0.75,...)。我知道“while”循环会是更好的解决方案,但是有人能告诉我那些“for”循环有什么问题吗?谢谢
float change;
do
{
change = get_float("Change owed:$ ");
}
while (change < 0);
int cents = round(change * 100);
int coins = 0;
for (int quarters = cents; quarters >= 25; quarters -= 25)
{
coins++;
}
for (int dimes = cents % 25; dimes >= 10; dimes -= 10)
{
coins++;
}
for (int nickels = cents % 10; nickels >= 5; nickels -= 5)
{
coins++;
}
for (int pennies = cents % 5; pennies >= 1; pennies -= 1)
{
coins++;
}
printf("%i\n", coins);
}
镍币(和便士)的起点是错误的。对于 .41 示例:
季度循环从 41
开始
dimes 循环从 41 % 25 = 16
开始
nickles 循环从 41 % 10 = 1
这是个问题。