对为什么代码不正确 运行 感到困惑

Confused with why code not running correctly

**我做了一些更改,我只是想知道您是否可以帮助我找出它不是 运行ning 的原因。当我 运行 它打印文本但输入永远不会停止 运行ning。 ** 该程序旨在复制(?)贪心算法。它首先询问用户欠了多少零钱,然后提供了可以用来找零的最少硬币数量。

如果您能为我的代码提供任何帮助,我将不胜感激。


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

int main(void)

{
    //declared variables
    float change;
    int num = 0;

    // prompts for amount owed

    printf("Please provide the amount owed: ");
    change = GetFloat();
    while (change != 0)

        change = change * 100;
    int owed = round(change);

    {
        // if statements for calculating number of coins required
        if (owed >= 25)
        {
            owed = owed - 25;
            num ++;
        }
        if (owed >= 10 && owed < 25)
        {
            owed = owed - 10;
            num ++;
        }
        if (owed >= 5 && owed < 10)
        {
            owed = owed - 5;
            num ++;
        }
        if (owed >= 1 && owed < 5)
        {
            owed = owed - 1;
            num ++;
        }
    }
    printf("%d\n", num);
}

当我修改 while 语句并注释掉 'change = change * 100;' 它开始工作。但是,在这样做时,round 函数不会执行。

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

    // change = change * 1000;
    // int owed = round(change);

据我了解,部分

while (change != 0)
    change = change * 100;
如果在 change 非零时开始,

是一个无限循环。根据平台的不同,乘法最终会达到 NaN 或正无穷大,从而导致循环永远持续下去。