cs50 pset 1 Cash仅打印出零

时间:2020-06-20 22:22:21

标签: cs50

我试图弄清楚我的代码出了什么问题,我检查了方括号是否还可以,但是我仍然无法弄清楚。这是pset 1现金

#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美元

预期产量:4个硬币

1 个答案:

答案 0 :(得分:0)

您的错误是您确实要说cents = round(cents * 100)时说cents = dollars * 100

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