求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;
}
可是输出的答案明显错误。
请问算法哪里出错了。