CS50 Pset1现金代码无法正常工作

时间:2020-10-04 16:33:31

标签: c cs50 greedy

所以我刚开始学习CS50课程,我正在用贪婪算法做第一个问题集。当我运行程序时,它会问正确的问题,当我回答时,它不会给出输出。我不知道怎么了。 这是代码

#include <stdio.h>
#include <cs50.h>
#include <math.h>

int main (void)

{

float n;
int cents;
int coins = 0;

// Prompt user for amount owed
     do
     {
        n = get_float("Change owed?:");
     }
     while (n < 0);

// convert input into cents
     cents = round(n * 100);

//loop for minimum coins
    while (cents >= 25)
{
    cents = cents - 25;
    coins++;
}
    while (cents >= 10)
{
    cents = cents - 10;
    coins++;
}
    while (cents >= 5)
{
    cents = cents - 5;
    coins++;
}
    while (cents >= 1)
{
    cents = cents - 1;
    coins++;
//Print number of coins
printf("%i\n", coins);
}
}

1 个答案:

答案 0 :(得分:0)

您将打印方法置于while循环内,如果其条件的计算结果为false,则不会执行其主体。

发生的事情是什么都不会打印,除非cents到达最后一个while循环时会大于或等于1。

更改此:

while (cents >= 1)
{
    cents = cents - 1;
    coins++;
    //Print number of coins
    printf("%i\n", coins);
}

对此:

while (cents >= 1)
{
    cents = cents - 1;
    coins++;
}
//Print number of coins
printf("%i\n", coins);

通过此更改,无论代码流是否进入最后一个while循环,都将执行print方法。