用c语言编写一个程序,用户输入一个整数,代表其手上拥有的现金数,然后显示出如何转换成最少数目的零钱,求最少的张数
时间: 2024-10-23 07:16:04 浏览: 32
在 C 语言中,你可以通过遍历硬币面额从大到小的组合来解决这个问题。例如,常见的硬币面额可能是 50、20、10、5、2 和 1 分。首先,将用户的现金数额除以每个面额,取余数得到当前剩余需要找零的部分,然后记录下最大的可以使用的硬币张数。循环结束后,所有的找零部分加起来就是所需的最小张数。
以下是一个简单的 C 程序示例:
```c
#include <stdio.h>
// 假设我们有六种面额:50、20、10、5、2 和 1
const int coins[] = {50, 20, 10, 5, 2, 1};
int num_coins[6];
void coinChange(int cash) {
for (int i = 0; i < sizeof(coins) / sizeof(coins[0]); ++i) {
while (cash >= coins[i]) {
cash -= coins[i];
num_coins[i]++;
}
}
}
int main() {
int inputCash;
printf("请输入您手中的现金数: ");
scanf("%d", &inputCash);
coinChange(inputCash);
printf("最少需要的硬币张数为:\n");
for (int i = 0; i < sizeof(num_coins) / sizeof(num_coins[0]); ++i) {
if (num_coins[i] > 0)
printf("%d分面额的硬币 %d张\n", coins[i], num_coins[i]);
}
return 0;
}
```
当你运行这个程序并输入现金数值,它会告诉你用每种硬币所需的张数,以及总张数。
阅读全文