c语言
时间: 2023-06-21 16:23:57 浏览: 83
好的,请看下面的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int main()
{
int price, pay, change, remain;
int bill50 = 20, bill20 = 50, bill10 = 50, bill5 = 100, bill1 = 100;
printf("请输入商品价格:");
scanf("%d", &price);
printf("请输入支付金额:");
scanf("%d", &pay);
remain = pay - price; // 计算找回的零钱
if (remain < 0) { // 如果支付金额小于商品价格,则直接还回支付金额
printf("支付金额不足,退回%d元\n", pay);
} else if (remain == 0) { // 如果支付金额等于商品价格,则不用找零
printf("谢谢,欢迎再次购买!\n");
} else { // 否则计算找零
printf("找您%d元:\n", remain);
// 计算50元纸币个数
if (remain / 50 > 0 && bill50 > 0) {
int count = remain / 50 > bill50 ? bill50 : remain / 50;
printf("$50:%d张\n", count);
remain -= count * 50;
bill50 -= count;
}
// 计算20元纸币个数
if (remain / 20 > 0 && bill20 > 0) {
int count = remain / 20 > bill20 ? bill20 : remain / 20;
printf("$20:%d张\n", count);
remain -= count * 20;
bill20 -= count;
}
// 计算10元纸币个数
if (remain / 10 > 0 && bill10 > 0) {
int count = remain / 10 > bill10 ? bill10 : remain / 10;
printf("$10:%d张\n", count);
remain -= count * 10;
bill10 -= count;
}
// 计算5元纸币个数
if (remain / 5 > 0 && bill5 > 0) {
int count = remain / 5 > bill5 ? bill5 : remain / 5;
printf("$5:%d张\n", count);
remain -= count * 5;
bill5 -= count;
}
// 计算1元纸币个数
if (remain > 0 && bill1 > 0) {
printf("$1:%d张\n", remain);
bill1 -= remain;
}
}
return 0;
}
```
代码解释:
1. 首先,我们定义了5种面值的纸币数量,分别是50元、20元、10元、5元和1元。
2. 接着,我们让用户输入商品价格和支付金额。
3. 然后,我们计算找零的金额,如果支付金额小于商品价格,则直接还回支付金额;如果支付金额等于商品价格,则不用找零。
4. 最后,我们按照从大到小的顺序计算各种面值的纸币个数,直到找零的金额为0为止。
5. 注意:在计算找零的过程中,我们需要先判断纸币的数量是否足够。如果不足够,则只能用剩余的纸币来找零。
希望这个代码能够帮到您!
阅读全文