c - 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);
}
解决方案
所以既然主要问题已经解决了,在这一点上我不妨提出另一个实现:
#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);
}
这样你就可以避免任何循环,只使用除法和提醒。
推荐阅读
- windows - 默认情况下如何取消隐藏 .git 文件?
- python - QRadioButton如何添加选择检查?
- android - 如何在 Twilio 可编程语音中查找“发件人”电话号码和“收件人”电话号码
- ruby-on-rails - 授权查询不起作用的Rails
- java - testNGCucumberRunner.provideFeatures 中的空指针异常
- javascript - 在两个表单上启用单击操作
- vb.net - 如何获取最后插入的 id 以将其插入另一个表?
- g1ant - 为什么G1ANT软件的插件面板中没有Addon.Ocr.Tesseract和Addon.Recorder?
- java - Java XML - “1 个 IllegalAnnotationExceptions 计数”
- javascript - 验证 json 有效负载中元素的值