【问题标题】:cs50 pset1 cash: for loop producing errors for some valuescs50 pset1 cash: for 循环对某些值产生错误
【发布时间】:2020-06-22 05:16:43
【问题描述】:

我希望程序为用户提供他们找零所需的最少硬币,但我的循环并不总是提供正确的答案(值 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);

}

【问题讨论】:

    标签: c cs50


    【解决方案1】:

    镍币(和便士)的起点是错误的。对于 .41 示例:

    四分之一循环从 41 开始
    角钱循环开始于 41 % 25 = 16
    nickles 循环从 41 % 10 = 1 开始

    这是个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-13
      • 2017-07-04
      • 2018-12-09
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多