CS50 现金有效输入退出程序

标签 c while-loop return-value do-while cs50

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

#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("%d\n", coins);
}

最佳答案

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

你应该这样写:

while (change > 0) 
{
    /*update coins and change
      but do not use return.*/
}

printf("%d\n", coins);

/* as return will exit from your function, 
    you want it at the end*/
return coins;

关于CS50 现金有效输入退出程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52150783/

相关文章:

c - 删除单向链表中的元素

c - 如何将输出格式化为 6 列?

c - 如何检查变量是否为 C 中的 "const"限定符类型?

c++ - 一个循环语句完成后如何循环?

function - 如何从事件处理程序获取返回数据?

C 的 strtod() 返回错误值

c - c程序的程序输出

python - 值错误: I/O operation on closed file (File shouldn't be closed)

java - JOptionPane 输入验证

java - java中类中何时返回值或使用getter