C 困惑于为什么代码不能正确运行

C 困惑于为什么代码不能正确运行,c,floating-point,rounding,infinite-loop,C,Floating Point,Rounding,Infinite Loop,**我做了一些修改,我只是想知道你是否能帮我找出它为什么不运行。当我运行它时,文本被打印出来,但输入从未停止运行** 该程序旨在复制(?)贪婪算法。它首先询问用户所欠的零钱是多少,然后提供可以兑换的最小硬币数量 我非常感谢您对我的代码的任何帮助 据我所知,这部分 while (change != 0) change = change * 100; 如果change为非零时启动,则为无限循环。根据平台的不同,乘法最终会达到NaN或正无穷大,从而导致循环永远继续。而(更改>0)没有任何意

**我做了一些修改,我只是想知道你是否能帮我找出它为什么不运行。当我运行它时,文本被打印出来,但输入从未停止运行** 该程序旨在复制(?)贪婪算法。它首先询问用户所欠的零钱是多少,然后提供可以兑换的最小硬币数量

我非常感谢您对我的代码的任何帮助



据我所知,这部分

while (change != 0)
    change = change * 100;

如果
change
为非零时启动,则为无限循环。根据平台的不同,乘法最终会达到
NaN
或正无穷大,从而导致循环永远继续。

而(更改>0)
没有任何意义。若条件为真,你们将得到无限循环进行取整。如果它是假的,就没有舍入。舍入结果未使用,因此丢失。有人在这里回答:为什么要将其舍入为整数?将0.478转换为int会得到0,因为0和1之间没有整数值。请提供最小的可复制示例。如果圆形不按预期工作,则移除与圆形不相关的任何东西。提供你收到了什么,你期望得到什么。我发现你的代码中包含了与round无关的bug。找到他们是你的工作。调试代码。
  change = GetFloat() * 100;
    while (change != 0)

    // change = change * 1000;
    // int owed = round(change);
while (change != 0)
    change = change * 100;