注册 登录
编程论坛 新人交流区

一道关于C语言的附加题```我还是初学``

zyx4144 发布于 2007-11-17 21:58, 4071 次点击
将100元人民币换成面值1元 2元 5元的钞票,给出所有的兑换方案,并显示对换方案的种类



这个程序用C语言具体怎么写?实在不会`在下初学
37 回复
#2
zyx41442007-11-17 22:41

都没有人理 ```郁闷呀

#3
zhangyi_19892007-11-17 23:28
  
#4
江山如画2007-11-17 23:38

跟解方程差不多撒,设1元有X个,2元Y个,5元Z个。
X+2Y+5Z=100;具体代码:
#include "stdafx.h"
int main(int argc, char* argv[])
{
int x;
int tt=0;
for(x=0;x<100;x++)
{
for(int y=0;y<100;y++)
{
for(int z=0;z<100;z++)
{
if(1*x+2*y+5*z==100)
{
printf("%d\t%d\t%d\n",x,y,z);
tt++;
}
}
}
}
printf("共有%d种方案\n",tt);
}

#5
zyx41442007-11-17 23:40
是要排序```不是要方法```
#6
江山如画2007-11-17 23:49
排序??????
说清楚点啊
#7
fanqie1432007-11-18 03:13
呵呵。
#8
zyx41442007-11-18 10:30
就是要用程序显示出总共有多少种的兑换方法??我写了几个程序都没办法完整的表达
#9
dengyixinos2007-11-18 10:44
lz的意思是要所有的兑换方法都要显示出来吗?
#10
huhuanqadn2007-11-18 10:59
不懂什么意思
#11
dengyixinos2007-11-18 15:13
lz
你的程序我想了两个办法

四楼的方法不是很完全 最傻的办法就是 用三个for循环进行遍历 还要排序是什么意思?

还有个办法就是用递归来进行 不过最后要对答案进行筛选
#12
zyx41442007-11-18 15:47
回复:(dengyixinos)lz的意思是要所有的兑换方法都要...

是的```

#13
giant6112007-11-18 16:53
似乎是枚举或者贪心
#14
lyhkent2007-11-18 17:21

同意四楼的,就是用C编程看有几种分配方案

#15
zyx41442007-11-18 17:55

如果用3个FOR循环没有办法把所有方法都列出来

比如这样
#include<stdio.h>
void main()
{
int a,b,c;
for(c=20;c>=0;c--)

for (b=50;b>=0;b--)

for(a=100;a>=0;a--)

if(100==a*1+b*2+c*5)
printf("%d张1元,%d张2元,%d张5元\n",a,b,c);

}

#16
zyx41442007-11-20 08:19
没有人会吗``````
#17
杨婷婷2007-11-20 08:24
前辈,这好象要用到栈和二叉树的知识吧?好象没那么简单吧?过一段时间我估计就应该可以帮你解决了~
#18
muxingfeng2007-11-20 08:51
支持一下,好久没做了
#19
zyx41442007-11-20 09:18
````````````````````````没听过栈和二叉树``
#20
ads95272007-11-20 14:08

那个遍历的我好像是明白了。

#21
归一驾到2007-11-20 16:51

麻烦写详细点,要不别人,可没时间和年玩作迷藏的游戏。

#22
nianshi2007-11-20 17:21
回复:(huhuanqadn)不懂什么意思
4楼就是正解啊 那就是所有方案啊
#23
a5271002007-11-20 17:31
不会
#24
tianxiawoyou2007-11-20 21:38
排序?怎么排序?什么意思啊?不明白LZ说的是什么。。。
#25
huacai1230572007-11-20 21:46

书上有

#26
qingqing082007-11-20 22:39
#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
int i,j,k;
for(i=0;i<=100;i++)
for(j=0;j<=50;j++)
for(k=0;k<=20;k++)
{
if(i+2*j+5*k==100)
{
printf("%d,%d,%d",i,j,k);
printf("\n");
}
}
return 0;
}
#27
风鳞2007-11-21 09:44
#include<stdio.h>
void main()
{
int a[]={100,50,20,10,5,2,1}
int b=0,x,c,i;
float d;
printf("请输入转换的金额");
scanf("%f",&d);
for(i=0,i<7,i++)
{
c=d\a[i];
d=d%a[i];

}
大体就是这样的,
#28
avenge2007-11-21 09:59

感觉4楼正解

#29
bozl2007-11-21 12:28
#include "stdafx.h"
int main(int argc, char* argv[])
{
int x;
int tt=0;
for(x=0;x<100;x++)
{
for(int y=0;y<50;y++)
{
for(int z=0;z<20;z++)
{
if(1*x+2*y+5*z==100)
{
printf("%d\t%d\t%d\n",x,y,z);
tt++;
}
}
}
}
printf("共有%d种方案\n",tt);
}
#30
bozl2007-11-21 12:31

这个问题的算法就是
1元的人民币最多有100张
2元的人民币最多有50张
5元的人民币最多有20张
然后用for循环排序....
可以参考百鸡题..

#31
qingqing082007-11-21 14:33
lZ any question?
#32
hnzlj193yazi2007-11-21 14:38

不明白你的意思`看看这程序`

#include "stdio.h"
void main()
{
int x,y,z,aa=0;
for(x=1;x<=100;x++)
for(y=1;y<=100;y++)
for(z=1;z<=100;z++)
if(x*1+y*2+z*5==100)
{
++aa;
printf("第%d种方案:1元%-2d个,2元%-2d个,5元%-2d\n",aa,x,y,z);

}
printf("一共有%d 种方案",aa);


}

#33
furenzhong2007-11-21 15:59
lz的意思是要所有的兑换方法都要显示出来吗?
#34
furenzhong2007-11-21 15:59
lz的意思是要所有的兑换方法都要显示出来吗?
#35
furenzhong2007-11-21 16:00
lz的意思是要所有的兑换方法都要显示出来吗?
#36
furenzhong2007-11-21 16:00
lz的意思是要所有的兑换方法都要显示出来吗?
#37
R_Baggio2007-11-23 15:10
4楼的是可以的,3 个for循环就可以了
#38
尐Tαο2007-11-23 15:15
++++
1