用C语言编写一个程序,输出用1元、2元和5元的纸币组成10元钱的所有组合。
时间: 2024-10-27 11:12:08 浏览: 23
在C语言中,我们可以使用递归的方式来编写一个程序,找出所有用1元、2元和5元纸币组成的10元零钱组合。以下是一个简单的示例:
```c
#include <stdio.h>
// 定义一个函数,用于递归地找到组合
void findCombinations(int money, int coins[], int index) {
if (money == 0) { // 当剩余金额为0时,找到了一个有效的组合
printf("[");
for (int i = 0; i < index; i++) {
if (coins[i] != 0) {
printf("%d ", coins[i]);
}
}
printf("]\n");
return;
}
// 如果还有未使用的纸币,尝试将它们加入到组合中
if (index < 3 && coins[index] <= money) {
coins[index]++;
findCombinations(money - coins[index], coins, index);
coins[index]--;
}
// 如果当前纸币大于剩余金额,继续尝试下一个纸币
else {
findCombinations(money, coins, index + 1);
}
}
int main() {
int coins[] = {1, 2, 5}; // 纸币种类及面额
int targetMoney = 10; // 目标金额
findCombinations(targetMoney, coins, 0);
return 0;
}
```
这个程序会打印出所有可能的组合,例如 `[5 5 0]`、`[5 2 2 1]`、`[2 2 2 2 1]`等。
阅读全文