标题:求10元兑换散钱问题 三层for循环
只看楼主
xiaohui19918
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-11
结帖率:0
已结贴  问题点数:20 回复次数:4 
求10元兑换散钱问题 三层for循环
题目为:
(1)    要将10元的人民币兑换为。
①    1分、2分和5分一张的人民币;
②    1角、2角和5角一张的人民币;
③    1元、2元和5元一张的人民币;
要求每种币至少有1张,请问各有多少种兑换方法?已知主函数如下:
#include <stdio.h>
#define info1 "10元换成1分2分5分的方法共有:"
#define info2 "10元换成1角2角5角的方法共有:"
#define info3 "10元换成1元2元5元的方法共有:"
main()
{
printf("%s%d种\n", info1,Exchange(10,0.01,0.02,0.05) );  
    printf("%s%d种\n", info2,Exchange(10,0.1,0.2,0.5) );
    printf("%s%d种\n", info3,Exchange(10,1,2,5) );
}



我的做法为:
#include <stdio.h>
#define info1 "10元换成1分2分5分的方法共有:"
#define info2 "10元换成1角2角5角的方法共有:"
#define info3 "10元换成1元2元5元的方法共有:"
int Exchange(int n,double x,double y,double z);
int main()
{
    printf("%s%d种\n", info1,Exchange(10,0.01,0.02,0.05) );
    printf("%s%d种\n", info2,Exchange(10,0.1,0.2,0.5) );
    printf("%s%d种\n", info3,Exchange(10,1,2,5) );
    return 0;
}
int Exchange(int n,double x,double y,double z)
{
    int i,j,k,total=0;
    for (i=1; i<10; i++)
        for (j=1; j<5; j++)
            for (k=1; k<2; z++)
                if (i*x+j*y+k*z==n)
                    total++;
    return total;
}

可是输出的答案明显错误。
请问算法哪里出错了。
搜索更多相关主题的帖子: 人民币兑换 include 
2011-11-11 14:15
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
得分:10 
程序代码:
#include <stdio.h>
#define info1 "10元换成1分2分5分的方法共有:"
#define info2 "10元换成1角2角5角的方法共有:"
#define info3 "10元换成1元2元5元的方法共有:"
int Exchange(int n, double x, double y, double z);
int main()
{
    printf("%s%d种\n", info1, Exchange(10,0.01,0.02,0.05) );
    printf("%s%d种\n", info2, Exchange(10,0.1,0.2,0.5) );
    printf("%s%d种\n", info3, Exchange(10,1,2,5) );
    return 0;
}
int Exchange(int n, double x, double y, double z)
{
   int total=0;
    for (int i=1; i<(int)n/z; i++)
        for (int j=1; j<(int)n/y; j++)
            for (int k=1; k<(int)n/x; k++)
                if ((i*z+j*y+k*x)==n)
                    total++;
    return total;
}


[ 本帖最后由 liao06550107 于 2011-11-11 20:10 编辑 ]

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2011-11-11 14:56
wuyijiang07
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:74
专家分:177
注 册:2011-10-21
得分:10 
你算法中不同的币,可换的钱数没有换都是10,5,2肯定不对了,2楼的程序不错
2011-11-11 15:13
xiaohui19918
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-11
得分:0 
回复 楼主 xiaohui19918
二楼你好,first,祝你光棍节快乐吧。
其实要是让我自己写代码,我也能编出来,可是这是我们老师给我的题目,要求主函数不能修改。

首先,我把你的代码拷贝之后再编译,发现结果为:0,0,2。 肯定也是错误的;
其次,你编的exchange函数增加了一个函数,就离题了。
请问按着原题目的要求,再改一下代码,使之输出正确结果么?

提示:46240,455,2。
谢谢
2011-11-11 15:39
xiaohui19918
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-11-11
得分:0 
回复 2楼 liao06550107
可是我改成了:
int Exchange(int n,double x,double y,double z)
 {
     int i,j,k,total=0;
     for (i=1; i<n/x; i++)
         for (j=1; j<n/y; j++)
             for (k=1; k<n/z; z++)
                 if (i*x+j*y+k*z==n)
                     total++;
     return total;
 }
发现结果还是错的。 怎么办?

2011-11-11 15:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-354970-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058403 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved