C语言如何输出把一百元换成一元,十元,二十元的张数的和是最少张数十四张的呢

img

img


如何输出三种钱,想加为九十九元的最小张数的呢?求解刚学C语言实在是想不出来。

每种币值有没有至少一张的要求?

那要 a<=100 不能写为 a<=99

张数和到至少14张写法:第9行写为:
if (a+10*b+20*c==100 && a+b+c>=14)

供参考:

#include<stdio.h>
#include<string.h>
int main()
{
    int M[3] = { 20,10,1 }, N, b[3]={0}, i;
    while (scanf("%d", &N) == 1 && N != 0)//输入金额为0时,结束输入
    {
        for (i = 0, memset(b,0,sizeof(b)); N != 0; i++)//直到余数为零
        {
            b[i] += N / M[i];//从20元面额开始,先除以20,得到商, 将所有商对应存入数组b[]。
            N %= M[i];   //除以 20,得到余数。。。
        }
        printf("%d元*%d+%d元*%d+%d元*%d = %d\n",M[0],b[0],M[1],b[1],M[2],b[2],b[0]+b[1]+b[2]);//输出
    }
    return 0;
}