c语言问题求各位为我解答

将一元纸币兑换成1分、2分和5分硬币,要求兑换总的枚数为50枚,问共有多少种换法?请编程计算

你题目的解答代码如下:

#include <stdio.h>
#include <math.h>
int main()
{
    int count = 0;
    for (int i = 0; i <= 20; i++)
    {
        for (int j = 0; j <= 50; j++)
        {
            int k = 50 - i - j;
            if (k >= 0 && i * 5 + j * 2 + k == 100)
            {
                printf("5分:%d  2分:%d  1分:%d  \n", i, j, k);
                count++;
            }
        }
    }
    printf("共有%d种分法\n", count);

    return 0;
}

img

如有帮助,望采纳!谢谢!

三层循环就行了

//将一元纸币兑换成1分、2分和5分硬币,要求兑换总的枚数为50枚
#include <stdio.h>
int main()
{
    int i,j;
    for(i=0;i<=20;i++)
        for(j=0;j<=50;j++)
        {
              if((50-i-j)+j*2+i*5 == 100)
                  printf("5分%d个,2分%d个,1分%d个\n",i,j,50-i-j);
         }

    return 0;
}

函数问题
设1,2,5的个数分别为:x,y,z;
则x+y+z=50
而1x+2y+5z=100
消去x可得
y+4z=50
y的取值范围为0-50
z的取值范围为(50-y)/4
x,y,z的值必须为整数,所以对每一种x,y,z的组合进行整数验证。
对符合要求的xyz进行累加操作即可



```c
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int y,sum=0;//只需要一个y其实就可以了
    for(int i=0;i<51;i++)
    {
        y=i;//此处穷举所有可能的y
        if(((50-y)/4)%10==0)//此处判断z有没有余数,没有余数则sum加1
        sum++;//只要y和z是整数,x必定是整数,不需要再多余验证。
    }
    printf("%d\n",sum);
    return 0;
}


```