用c语言写,模拟超市找零,要求用最少的纸币数进行找零,第一个数输入消费金额,第二个数输入顾客给出纸币面额。 输入: 消费金额 纸币面额 输出: 所找纸币面额和张数
时间: 2024-10-04 12:02:13 浏览: 128
在 C 语言中,我们可以编写一个程序来解决这个超市找零的问题。这里我们采用贪心策略,即尽可能先使用大面额的纸币,直到无法再使用为止,然后逐步降到小面额。以下是简单的伪代码和实现思路:
```c
#include <stdio.h>
// 定义纸币面额常量
#define COIN_SIZES {100, 50, 20, 10, 5, 1} // {1元, 5元, 10元, 20元, 50元, 100元}
int coin_scales = sizeof(COIN_SIZES) / sizeof(int);
void minCoins(int amount, int* coins) {
int change = amount;
for (int i = coin_scales - 1; i >= 0; i--) { // 从大到小遍历纸币面额
while (change >= coins[i] && coins[i] > 0) { // 只要能用就用
change -= coins[i]; // 找零
coins[i]--;
}
}
printf("找零结果: ");
for (int i = 0; i <= coin_scales; i++) {
if (coins[i]) {
printf("%d元 %d张, ", coins[i], coins[i]);
}
}
}
int main() {
int amount, coins[coin_scales];
scanf("%d", &amount);
for (int i = 0; i < coin_scales; i++) {
scanf("%d", &coins[i]); // 初始化所有面额为0
}
minCoins(amount, coins);
return 0;
}
阅读全文