C中的更改计算程序

标签 c loops calculator

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

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

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

有人发现问题了吗? (*我将要打印的文本切换为英文)

#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;

关于C中的更改计算程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37427415/

相关文章:

c - 将值附加到动态数组的末尾

c - 在C中初始化图时如何分配内存?

linux - 为简单的 awk 命令写一个 for 循环 (linux)

c - GMP 计算器卡在幂数上

javascript 体积计算器,根据宽度、长度和深度

java - 如何让罗马数字计算器处理负数

c - mmap 成功后出现总线错误

javascript - 循环时输出中额外的 + ; javascript

Python Noob - 愚蠢的问题?在 Python 解释器中工作,而不是在 CLI 中工作

c - ATT 中从汇编代码恢复 C 代码的不同答案