c语言设计算法解决找零钱问题。输入商品费用与支付给商家的费用,编程计算需要找回的钱,100元~1分各多少张。
时间: 2024-10-05 22:01:41 浏览: 81
在C语言中,你可以通过设计一个贪心算法来解决找零钱的问题。这种算法的基本思路是从大面额的钞票开始,尽可能多地使用大面额的钞票找零,然后递减到小面额。以下是简单的步骤:
1. 定义变量:
- `change` 存储剩余需要找零的总金额。
- `coins[]` 一个数组存储各个面值(如:100、50、20、10、5、2、1、0.5、0.1、0.01等)的计数。
2. 循环条件:
- 当 `change > 0` 且 `coins[i] > 0` 时,循环继续,其中 `i` 是当前考虑的钞票面额。
3. 内部循环:
- 检查能否使用当前面额 `coins[i]` 进行找零,如果可以,更新 `change` 和 `coins[i]` 的值。
- 如果 `change >= coins[i]`,则从 `change` 中扣除 `coins[i]`,同时减少 `coins[i]` 的数量。
4. 结束循环后,打印出每个面额所需的张数。
下面是一个简化的示例代码片段:
```c
#include <stdio.h>
void findChange(int amount, int coinValues[]) {
int change = amount;
for (int i = 0; i < sizeof(coinValues) / sizeof(coinValues[0]); ++i) {
while (change >= coinValues[i]) {
change -= coinValues[i];
printf("%d %s\n", coinValues[i], "元" + (coinValues[i] == 1 ? "" : "s")); // 打印面额和单位
}
}
}
int main() {
int payment = 273; // 支付的费用
int coinValues[] = {100, 50, 20, 10, 5, 2, 1, 0.5, 0.1, 0.01}; // 面值数组
findChange(payment, coinValues);
return 0;
}
```
运行此程序,它将输出找零的具体细节。
阅读全文