在C中循环.程序中的第一个循环不起作用并且是无限的

Sch*_*lky -3 c loops cs50

我不明白为什么第一个循环不起作用.即使填充的欠款浮动实际上大于0,它也是一个无限循环.为什么循环不起作用?

#import <cs50.h> 
#import <stdio.h>

int main(void)
{
    float owed = -1 ;

    while (owed < 0) 
    {
        printf("O hai! How much change is owed?\n") ;
        float owed = GetFloat() ;
        owed = owed * 100 ;
    }

    int coins = 0 ;

    while (owed >= 25)
    {
        owed = owed - 25 ;
        coins = coins + 1 ;
    }

    while (owed >= 10)
    {
        owed = owed - 10 ;
        coins = coins + 1 ;
    }

    while (owed >= 5)
    {
        owed = owed - 5 ;
        coins = coins + 1 ;
    }

    while (owed >= 1) 
    {
        owed = owed - 1 ;
        coins = coins + 1 ;
    }

    printf("%i\n", coins) ;
}
Run Code Online (Sandbox Code Playgroud)

Ed *_*eal 5

你需要改变

float owed = GetFloat() ;
Run Code Online (Sandbox Code Playgroud)

owed = GetFloat() ;
Run Code Online (Sandbox Code Playgroud)

因为你有两个owed不同的范围.(你不是在换外面的!)

编辑

PS:你可以改变一下:

while (owed >= 25)
{
    owed = owed - 25 ;
    coins = coins + 1 ;
}
Run Code Online (Sandbox Code Playgroud)

int new_coins = ((int)owed)/25;
coins += new_coins;
owed = owed - 25.0f * new_coins;
Run Code Online (Sandbox Code Playgroud)