我的代码不打印名为 coins 的变量

My code does not print the variable called coins

为什么我的代码没有打印名为 coinsint? 运行 调试系统时我没有看到任何错误。

#include <cs50.h>
#include <stdio.h>

int main(void)
{  // getting the user validation  
    printf("please enter a amount of change \n");

    int change = get_int();
    int coins = 0;
    if (change > 0 && change <= 0  && change != 0)
        printf("Change: %i\n", change);

    if (change > 0)
    {
        printf("Change: %i\n", change);
    }

    if (change < 0 )
    {
        printf("please enter a positve number \n");
    }

    if (change == 0)
    {
        printf("Coins: 0 \n");
    }
    //were it counts the amount of coins


    float changef = (int)change;
    float qaurter = 0.25;
    float dime = 0.10;
    float nickel = 0.05;
    float penny = 0.01;



    while (changef / qaurter)
    {
     coins++;
     return changef - qaurter;
    }

    while (changef / dime)
    {
     coins++;
     return changef - dime;
    }

    while (changef / nickel)
    {
     coins++;
     return changef - nickel;
    }

    while (changef / penny)
    {
     coins++;
     return changef - penny;
    }
    printf("Coins: %i\n",coins);

}

你的循环是用 return 语句编写的:

while (changef / qaurter)
{
    coins++;
    return changef - qaurter;
}

main()返回相当于退出程序。您需要修改代码以避免在循环中使用 return。例如(包括拼写修复):

while (changef / quarter)
{
    coins++;
    changef -= quarter;
}

尽管坦率地说,您可以完全避免循环:

int extra = changef / quarter;
coins += extra;
changef -= extra * quarter;

但是,在可行之前还有更多的手术要做,因为您只能更改整数美元,但您有 quarter 和朋友定义为 float 具有小数值的变量。您要么只需要以美分计算 (int quarter = 25;),要么首先允许用户输入浮点值,或者……