编辑代码

#include <stdio.h>

void findChange(int amount, int coins[], int n) {
    int i = n - 1; // 从面值最大的硬币开始
    while(amount > 0 && i >= 0) {
        int count = amount / coins[i]; // 使用面值最大的硬币的个数
        if(count > 0) {
            printf("%d张%d面值的硬币\n", count, coins[i]);
            amount -= count * coins[i]; // 更新找零金额
        }
        i--; // 递减面值,继续找零
    }
    if(amount > 0) {
        printf("无法找零\n");
    }
}

int main() {
    int coins[] = { 1, 2, 5, 10, 20, 50, 100 }; // 硬币的面值数组
    int n = sizeof(coins) / sizeof(coins[0]); // 硬币的个数
    int amount;
    printf("请输入要找零的金额:");
    scanf("%d", &amount);
    printf("找零方案如下:\n");
    findChange(amount, coins, n);
    return 0;
}