C语言 CS50 现金有效进项退出程序



我不确定为什么我的更改值从未在第二个循环中被计算,我的打印语句也不会在最后运行并输出硬币。当输入有效输入时,程序应将浮点数转换为 int 并进入下一个 while 循环。然后,根据更改值,应检查每个if语句中的条件是否为真,直到while条件为假。

#include <cs50.h>
#include <stdio.h>
int main(void) {
int coins = 0;
float n;
int change;
do
{
n = get_float("How much do I owe you? n");
} while (n < 0); // continue prompt while true less than zero
change = n * 100;
while (change > 0)
{
if (change > 25) // change .25 cents
{
coins = coins + 1;
change = change - 25;
}
else if (change > 5 && change <= 10)  // change 10 cents
{
coins = coins + 1;
change = change - 10;
}
else if (change > 1 && change <= 5)  // change 5 cents
{
coins = coins + 1;
change = change - 5;
}
else  // change 1 cents
{
coins = coins + 1;
change = change - 1;
}
return coins;
}
printf("%dn", coins);
}

问题来自while循环内的return coins;行。

你应该写这样的东西:

while (change > 0) 
{
/*update coins and change
but do not use return.*/
}
printf("%dn", coins);
/* as return will exit from your function, 
you want it at the end*/
return coins;

最新更新