这道c语言的题哪不对??

[复制链接]
查看11 | 回复5 | 2011-10-31 11:48:34 | 显示全部楼层 |阅读模式
要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,要求换成30张小钞票,每种面值的至少一张,编程输出所有可能的换法,程序应适当考虑减少重复次数。inta,b,c,d;for(a=1;a2;a)//五十元{for(b=1;b5;b)//二十元{for(c=1;c10;c)//十元{for(d=1;d20;d)//五元{if(abcd==30){if((a*50b*20c*10d*5)==100){printf(\"五十元=%d,二十元=%d,十元=%d,五元=%d\\n\",a,b,c,d);}}}}}}哪不对???
回复

使用道具 举报

千问 | 2011-10-31 11:48:34 | 显示全部楼层
a,b,c,d,的范围小了。1)五张100的,如a最大应该是10而不是你说的2.其他类似。循环条件最大值都按照1张100的处理了。2)if((a*50b*20c*10d*5)==100)这儿的100也应该改成500.你估计把五张100的,当作一张100的处理了。
回复

使用道具 举报

千问 | 2011-10-31 11:48:34 | 显示全部楼层
这道题目是不对的,或者要使用1元面额的钞票,或者题就不对。你算算,5元是最小面额,一共才能用20张,又怎么会出现30张呢追问是所有小钞票加起来一共三十张
回复

使用道具 举报

千问 | 2011-10-31 11:48:34 | 显示全部楼层
貌似除了嵌套有点多执行效率有点低以外好像没什么错误...没有运行过求解....赞同
回复

使用道具 举报

千问 | 2011-10-31 11:48:34 | 显示全部楼层
思路正确,但是判断的时候出错了我以前做过一个类似的,应该是=和=而不能==inta,b,c,d;for(a=1;a10;a)//五十元{for(b=1;b25;b)//二十元{for(c=1;c50;c)//十元{for(d=1;d100;d)//五元{if(abcd==30){if(((a*50b*20c*10d*5)=100)=100)){printf(\"五十元=%d,二十元=%d,十元=%d,五元=%d\\n\",a,b,c,d);}}}}}}赞同
回复

使用道具 举报

千问 | 2011-10-31 11:48:34 | 显示全部楼层
没细看你得代码,但是你明显看错题了。题里说的是5张100元也就是500元,而你的代码里都是看成100元了,首先5元顶多20张就满100元了,直接逻辑不符了。你把有些数据改一改吧再试试吧,嵌套的挺多的我没细看你的逻辑对不对,但好像还有点儿问题,感觉你这个好像只能输出一种解决方法赞同
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行