首页 > 解决方案 > C语言中的简单硬币兑换机程序

问题描述

所以我必须制作一个 Coin Change Maker 程序,用户在其中输入价格和他们支付的金额,输出必须是他们的硬币零钱,一角硬币,镍币,便士。由于某种原因,我的程序不会给出正确的输出。如果我输入价格为 40 美分并输入我支付的金额为 50 美分,它说所需的更改是 10 美分但 2 毛钱,所以它给了我额外的毛钱。如果有人可以帮助我,将不胜感激。

int main()
{

    int numberOfQuarters =0;
    int numberOfDimes =0;
    int numberOfNickels =0;
    int numberOfPennies =0;

    int price;
    int paid;
    int change;



    printf("Please enter the price of your item in cents: ");
    scanf("%d", &price);

    printf("Please enter the amount of money you gave in cents: ");
    scanf("%d", &paid);

    change = (paid - price);
    printf("Change required: %d", change);

    while(change >= 25)
    {
        numberOfQuarters++;
        if(numberOfQuarters >0 )
        {
            change = (change - (numberOfQuarters * 25));
        }
        printf("\nNumber of Quarters:%d", numberOfQuarters);
    }

    while((change >= 10) && (change < 25))
    {
        numberOfDimes++;
        if(numberOfDimes > 1)
        {
            change = (change - (numberOfDimes * 10));
        }
    }
    while((change >= 5) && (change < 10))
    {
        numberOfNickels++;
        if(numberOfNickels >0)
        {
            change = (change - (numberOfNickels * 5));
        }
    }

    printf("\nThe number of quarters: %d", numberOfQuarters);
    printf("\nThe number of dimes: %d", numberOfDimes);
    printf("\nThe number of nickels: %d", numberOfNickels);
    printf("\nThe number of pennies: %d", change);

}

标签: c

解决方案


所以既然主要问题已经解决了,在这一点上我不妨提出另一个实现:

#include <stdio.h>

int main()
{

    int numberOfQuarters =0;
    int numberOfDimes =0;
    int numberOfNickels =0;
    int numberOfPennies =0;

    int price;
    int paid;
    int change;

    printf("Please enter the price of your item in cents: ");
    scanf("%d", &price);

    printf("Please enter the amount of money you gave in cents: ");
    scanf("%d", &paid);

    change = (paid - price);
    printf("Change required: %d", change);

    numberOfQuarters += change / 25;
    change %= 25;
    numberOfDimes += change / 10;
    change %= 10;
    numberOfNickels += change / 5;
    change %= 5;
    numberOfPennies = change;

    printf("\nThe number of quarters: %d", numberOfQuarters);
    printf("\nThe number of dimes: %d", numberOfDimes);
    printf("\nThe number of nickels: %d", numberOfNickels);
    printf("\nThe number of pennies: %d\n", change);

}

这样你就可以避免任何循环,只使用除法和提醒。


推荐阅读