我不明白为什么第一个循环不起作用.即使填充的欠款浮动实际上大于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)
你需要改变
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)