我的错误在哪里? CS50 greedy.c

Where is my mistake? CS50 greedy.c

有人可以看看下面的代码并告诉我我做错了什么吗?我附上了 check50 支票。 非常感谢

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

int main(void)
{

    float change;
    do
    {
        printf("O hai! How much change is owed?\n");
        change = get_float();
    }
    while (change < 0 );


    float cents = change *100;   // create float cents

    // initialise counter with 0
    int counter = 0;

    // loop as long as cents  bigger than 0
    while (cents > 0)
    {

        // substract 25 cents each time
        while (cents >= 25)
        {
            cents = cents - 25;
            counter++;
        }
         // substract 10 cents each time
        while (cents >= 10)
        {
            cents = cents - 10;
            counter++;
        }
         // substract 5 cents each time
        while (cents >= 5 )
        {
            cents = cents - 5;
            counter++;
        }
         // substract 1 cent each time
         while (cents >= 1 )
        {
            cents = cents - 1;
            counter++;
        }

    }

    printf("%i\n", counter);
}
Checking..........

:)贪婪存在

:)贪心编译

:) 0.41 的输入产生 4

的输出

:) 0.01 的输入产生 1

的输出

:( 输入 0.15 产生输出 2 没有找到“2\n”

:) 1.6 的输入产生 7

的输出

:) 23 的输入产生 92 的输出

:( 4.2 的输入产生 18 的输出 等待程序退出时超时

:) 拒绝像 -.1

这样的负输入

:) 拒绝 "foo"

的非数字输入

:) 拒绝非数字输入“”

这样做:

int cents = round(change * 100);

只是因为在这个上下文中没有分片段。

这也确保错误输入例如 7.324(而不是 7.32)得到 'corrected'。