我真的是编程新手,我刚开始尝试哈佛CS50的一些问题。如果有人可以向我指出我的代码错误的原因,将不胜感激。

编译并运行代码后,没有任何输出。

另一方面,有人可以向我解释“回合”的工作原理吗?我不是真的从终端上的人那里得到它。谢谢!



#include <stdio.h>
#include <math.h>
int main(void)
{
  printf(" O hai! How much change is owed?\n");

  float change;
  change=GetFloat();
  double round(double change);
  int x= change*100;

  int i=0;

  while(x>25) {
    x=x-25;
    i++;
    return i;
  }

  while(x>10) {
    x= x-10;
    i++;
    return i;
  }

  while(x>5) {
    x=x-5;
    i++;
    return i;
  }

  while(x>1) {
    x=x-1;
    i++;
    return i;
  }

  printf("%d\n",i);

}

最佳答案

第一件事
在用户输入美元后
您应该立即将其乘以100以将其转换为美分
并使用舍入功能。
采用

change = round(change) ;


在你的代码中
因为变化是浮点值
但是我们需要整数形式的钱来计算使用的硬币数量
所以我们使用round将其更改为整数
由于我们无法使用浮点数来计算使用的硬币数量

然后:
return i ;
声明不应该使用
在每个循环中
从每个循环中删除它。

如果您在每个活块中使用它
它将计算那些特定的硬币
然后退出程序。
因此,删除所有这些return i语句
你可以写return 0 ;
之后
printf("%d\n", i);声明!

关于c - CS50 PSET 1贪婪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30640633/

10-10 21:41