C中的更改计算程序

Change Calculation Program in C

我刚开始学习编程,正在尝试编写一个程序来显示任何给定数量的找零需要每种面额的货币数量。 我在日本留学,所以货币是日元,但我认为基本代码是通用的。我在网上看到过其他类似的程序,但我的有一些额外的功能可能是我的问题的原因,但我不确定。

首先用户输入收银机中是否有两千日元的钞票。 (因为这些账单并不常见)。 然后输入应付总额。然后输入支付了多少。然后它会计算找零和每种面额的多少,然后显示出来。

但是,在您输入支付的金额后,光标会移动到下一行并无限期地停留在那里。我不知道是什么原因造成的。我唯一的猜测是它在某个地方陷入了循环。

有人发现问题了吗? (*我把要打印的文字换成了英文)

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main(void)
{
    //入力
    int aru;

    printf("Are there 2-thousand yen bills in the register?\n 1.) Yes\n 2.) No\n "); //レジに2千円札が入ってますか?\n 1.) 入ってます\n 2.)入ってません
    scanf("%d", &aru);

    int total, paid;

    printf("Enter Total Price  ");//お会計を記入して下さい。 
    scanf("%d", &total);
    printf("Enter Amount Paid ");//お客さんのお支払った合計を記入してください。
    scanf("%d", &paid);

    //計算
    if (paid < total)
    {
        printf("Insufficiant amount paid\n");//お金を十分にもらいませんでした
    }
    if (paid > total)
    {
    int change = paid - total;
    int ichi = 0, go = 0, ju = 0, goju = 0;
    int hyaku = 0, gohyaku = 0, sen = 0, nisen = 0, gosen = 0;

    while (change > 5000)
    {
        change - 5000;
        gosen++;
    }
    while (change > 2000)
    {
        if (aru == 1)
        {
            change - 2000;
            nisen++;
        }
        else
        {
            nisen = 0; //skips calculating 2000 yen bills if answer was 'no'
        }
    }
    while (change > 1000)
    {
        change - 1000;
        sen++;
    }
    while (change > 500)
    {
        change - 500;
        gohyaku++;
    }
    while (change > 100)
    {
        change - 100;
        hyaku++;
    }
    while (change > 50)
    {
        change - 50;
        goju++;
    }
    while (change > 10)
    {
        change - 10;
        ju++;
    }
    while (change > 1)
    {
        change - 1;
        ichi++;
    }

    //出力
    printf(" %d \n", gosen);
    printf(" %d \n", nisen);
    printf(" %d \n", sen);
    printf(" %d \n", gohyaku);
    printf(" %d \n", hyaku);
    printf(" %d \n", goju);
    printf(" %d \n", ju);
    printf(" %d \n", go);
    printf(" %d \n", ichi);
}
    return 0;
} 
while (change > 5000) //This is an infinite loop 
{
    change - 5000; //no change is made to change
    gosen++;
}

您可能需要 change -= 5000; 而不是 change - 5000; 这在您的代码中有几个地方。 change-=5000 等价于

 change = change-5000;