关于C语言的编程题,不知道错在哪里?

有50枚硬币,可能包括4种类型:1元,5角,1角,5分。已知总价值为20元。求各种硬币的数量。比如:2,34,6,8就是一种答案。而2,33,15,0是另一个可能的答案,... 有50枚硬币,可能包括4种类型:1元,5角,1角,5分。
已知总价值为20元。求各种硬币的数量。
比如:2,34,6,8 就是一种答案。
而 2,33,15,0 是另一个可能的答案,显然答案不唯一。

你的任务是确定类似这样的不同的方案一共有多少个(包括已经给出的2个)?
# include <stdio.h>
int main() {
int i,j,k,m;
int sum=0;
for(i=0;i<=20;i++)
for(j=0;j<=40;j++)
for(k=0;k<=50-i-j;k++)
for(m=0;m<=50-i-j-k;m++)
{
if((1.0*i+0.5*j+0.1*k+0.05*m==20)&&(i+j+k+m==50))
sum++;
}
printf("%d\n",sum);
return 0;

}
本人真的是菜鸟啊,好像什么都不懂,但是写这个程序不知道错在哪里?答案应该是50,可是出来的确实0,请大神指教,狠狠地教育一下我吧!衷心感谢!
展开
 我来答
宁小哥的分享
2013-05-05 · TA获得超过273个赞
知道小有建树答主
回答量:228
采纳率:0%
帮助的人:310万
展开全部
# include <stdio.h>
int main() {
int i,j,k,m;
int sum=0;
for(i=0;i<=20;i++)
for(j=0;j<=40;j++)
for(k=0;k<=50-i-j;k++)
for(m=0;m<=50-i-j-k;m++)
{
if((100*i+50*j+10*k+5*m==20*100)&&(i+j+k+m==50))/*用整数分表示,用小数就变成无法精确表示的浮点了*/
sum++;
}
printf("%d\n",sum);
return 0;

}
匿名用户
2013-05-05
展开全部
浮点数运算后是不完全精确的,你可以改一下 if语句,或者是把浮点数转化成整数(即用分做单位)。个人推荐后一种方法试一试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式