cs50 pset 1 cash 只打印出零

cs50 pset 1 cash only prints out zeros

我试着弄清楚我的代码有什么问题,我检查了括号是否正常,但我还是想不通 out.this 是 pset 1 cash

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

int main(void)
{
 {

 float dollars;
   int cents = 0;
   int coin_amount = 0;

do
    {
//prompt user for amount of change
    dollars = get_float("change: ");
    }
 while (cents < 0);
    
  cents = round(cents * 100);

    
     while (cents >= 25)
    {
        cents = cents - 25;
        coin_amount++;
    }
    while (cents >= 10)
    {
        cents = cents - 10;
        coin_amount++;
    }
    while (cents >= 5)
    {
        cents = cents - 5;
        coin_amount++;
    }
    while (cents >= 1)
    {
        cents = cents - 1;
        coin_amount++;
    }
  printf("%d\n",coin_amount);
}

输入:1 美元

预期 Output:4 个硬币

你的错误是当你真正想说 cents = dollars * 100

时却说了 cents = round(cents * 100)

由于缺乏一致的缩进,很难阅读代码,而且您的第一个 do while 循环也无法正常工作。它检查美分的价值,但在您退出循环之前,您实际上不会尝试将美元转换为美分。换句话说,do-while 循环只会 运行 恰好一次。您可以将负数放入其中并破坏程序的意图。您需要在该循环中转换为美分。如果可行,请点赞。