c语言,换硬币。将一笔零钱(大于8分,小于1元,精确到分)换成5分、2分和1分的硬币,每种硬币至少 c 将一笔零钱(大于8分,小于1元, 精确到分)换成5分、2...

来源:编辑vide
#include <stdio.h>
void func(int n)
{
    int v1, v2, v5;
    int ,i, j, k;
    int num;
    v1 = 1;
    v2 = 2;
    v5 = 5;
    num = 0;
    for (i = 1; i <= n/v5; i++)
    {
        for (j = 1; j <= n/v2; j++)
        {
            for (k = 1; k <= n/v1; k++)
            {
                if ((i * v5 + j * v2 + k * v1) == n)
                {
                    printf("方法:1分数量: %d 2分数量: %d 5分数量: %d
", k, j, i);
                    num++;
                }
            }
        }
    }
    printf("总共有 %d 种换法
", num);
}
int main()
{
    scanf("%d", &n);
    if (n >= 8 && n <= 100)
    {
        func(n);
    }
    return 0 ;
}


这个题数据比较大,需要动态规划来求解。。首先题目要求每种硬币至少有一枚,那么先取出1分,2分和5分各一枚,这样刚好是8分钱。题目描述说了这比钱大于8分,小于1元,所以没有影响,剩下有多少种方式就动态规划(DP)求解吧。不知道DP你会不会,不行的话我等下给你一下代码参考好了……先举样例说明一下,处理N=10,10-8=2,也就是付款=2分的方式有多少,那么明显就是2*1或者1*2两种

我会编写 :)

但是,10分好少。。真心不值

输入金额,问有几种换发?
针对每一种换法,输出各种面额硬币的数量和硬币的总数量。

输入 5 角 7 分,都应该输出什么?
楼主给个样例吧。

C语言。将一笔零钱(大于8分,小于1元,精确到分)换算成1分,2分,5分的硬币组合。~

这个,有一个更为全面的代码,实现的功能:
硬币的个数;
硬币组合的方式
#include intmain(){ int n;//用于用户输入的分钱数 int x,y,z;//x是1分,y是2分,z是5分(硬币个数) int num=0;//用于保存有多少种方法 printf("请输入金额:"); scanf("%d",&n); for(x=1;x<=n;x++) for(y=1;y<=n/2;y++) for(z=1;z<=n/5;z++) { if(x+2*y+5*z==n) { printf("1分%d个,2分%d个,5分%d个
",x,y,z); num++; } } printf("一共有%d种方法
",num);}运行的结果:

#include"stdio.h"
int main(void)
{
int count, fen1, fen2,fen5, money;
int repeat, ri;

scanf("%d",&repeat);
for(ri = 1; ri <=repeat; ri++){
scanf("%d",&money);
count=0;
for(fen5=money/5;fen5>=1;fen5--)
for(fen2=money/2;fen2>=1;fen2--)
for(fen1=money/1;fen1>=1;fen1--)
if(fen5*5+fen2*2+fen1*1==money){
printf("fen5:%d,fen2:%d,fen1:%d,total:%d
",fen5, fen2, fen1,fen5+fen2+fen1);
count++;}
printf("count =%d
", count);
}
return 0;
}

13235083706:c语言,换硬币。将一笔零钱(大于8分,小于1元,精确到分)换成5分、2分和...
利泊师答:k <= n/v1; k++) { if ((i * v5 + j * v2 + k * v1) == n) { printf("方法:1分数量: %d 2分数量: %d 5分数量: %d\n", k, j, i); num++; } } } } printf("总共有 %d 种换法\n", num);}int main(){ scanf(...

13235083706:C语言。将一笔零钱(大于8分,小于1元,精确到分)换算成1分,2分,5分的...
利泊师答:硬币的个数;硬币组合的方式 include <stdio.h>intmain(){ int n;//用于用户输入的分钱数 int x,y,z;//x是1分,y是2分,z是5分(硬币个数) int num=0;//用于保存有多少种方法 printf("请输入金额:"); scanf("%d",&n); for(x=1;x<=n;x++) for(y=1;...

13235083706:c 将一笔零钱(大于8分,小于1元, 精确到分)换成5分、2分和1分的...
利泊师答:include"stdio.h"int main(void){ int count, fen1, fen2,fen5, money;int repeat, ri;scanf("%d",&repeat);for(ri = 1; ri <=repeat; ri++){ scanf("%d",&money);count=0;for(fen5=money/5;fen5>=1;fen5--)for(fen2=money/2;fen2>=1;fen2--)for(fen1=money/1;fen...

13235083706:换硬币问题,用c语言编写
利泊师答:int main(){ int a1,a2,a5,n,count=0,total;scanf("%d",&n);if(n>=8 && n<=100){ for(a1=1;a1<=n;a1++){ for(a2=1;a2<=n/2;a2++){ for(a5=1;a5<=n/5;a5++){ if(n==(a1+2*a2+5*a5)){ total=a1+a2+a5;count++;printf("fen5:%d,fen2:%d,fen1:%d,total:...

13235083706:c语言怎么换钱
利泊师答:main(){ int i,j,k;int rmb=1000;int sum=0;for(i=1;;i++){ for(j=1;;j++){ for(k=1;;k++){ if((i+2*j+5*k)==1000)sum++;} } } printf("%d",sum);} 输入在一行中给出待换的零钱数额x∈(8,100)。要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换...

13235083706:c语言程序编写换硬币程序怎么写?
利泊师答:\x0d\x0a printf("%d元可兑换成%d个1分硬币和%d个2分硬币和%d个5分硬币。\n",n,oneCount,twoCount,fiveCount);\x0d\x0a }\x0d\x0a return count; \x0d\x0a}\x0d\x0a \x0d\x0avoid main()\x0d\x0a{ \x0d\x0a int n=0;\x0d\x0a printf("请输入金额...

13235083706:C语言初学者问题,零钱换整钱
利泊师答:x是每摞硬币的厚度,单位为mm,n为10元张数,算式为:x/1.8+x/2*10+x/1.5*5=100n(我想你应该能看懂)。ps:其实不用简化,但是简化之后为16x=180n,即x=11.25n 设变量x,n,x和n都为整数(就是int类型),做for循环(就是n=1开始循环,输出x/1.8,x/1.5,x/2,10n),我用...

13235083706:C语言换零钱:把一元人民币兑换成硬币,共有多少种兑换方法?
利泊师答:define FIVE 5//定义五角 int main(){ int i;int count = 0;//初始化为0 //控制循环数量,考虑兑换不会超过SUM/FIVE,//所以可以以此控制循环次数,加快运行速度 for(i=0;i<=SUM/FIVE;i++)if((SUM - FIVE*i)>=0)//判断,只要剩下的是大于等于0的硬币数,即满足要求 count++;printf...

13235083706:c语言用穷举法实现一元人民币换成一分、两分、五分的硬币共五十枚的硬币...
利泊师答:要用穷举法实现一元人民币换成一分、两分和五分的硬币共五十枚的硬币方案,可以使用三个循环来遍历所有可能的组合。下面是一个用C语言实现该程序的示例:```include <stdio.h> int main() { int count = 0; // 记录方案数量 // 穷举所有可能的组合 for (int oneFen = 0; oneFen <= 100;...

13235083706:用C语言,一张一元钞票换成一分 二分 五分硬币 每种至少八枚 一共有...
利泊师答:每种至少8枚,一共是1*8+2*8+5*8=64,那剩下的就是36就够了 int flag=0;//统计方案的变量 for(i=0;i<=36;i++) //这个变量是统计1分的,最多只能有36个 for(j=0;j<=18;j++) //统计2分,最多只能有18个 for(k=0;k<=7;j++) //统计5分,最多只能有7个 if((...