为了账号安全,请及时绑定邮箱和手机立即绑定

关于输入一个数,由一角钱,两角钱,五角钱凑出这个钱数的问题

#include<stdio.h>

int main()

{

    int b,c,d;

    int e=0;

    float a;

    float f;

    printf("请输入一个数\na:");

    scanf("%f",&a);

    for(b=0;b<=a/0.1;b++)

    {

        for(c=0;c<=a/0.2;c++)

        {

            for(d=0;d<=a/0.5;d++)

            {

               f=0.1*b+0.2*c+0.5*d;

                if(f==a)

                {

                    

                    printf("%.1f元可以由%d个一角钱和%d个两角钱和%d个五角钱组成",a,b,c,d);

                }

            }

        }

    }

    return 0;

}1.当输入2的时候发现少了b=0,c=10,d=0;b=20,c=0,d=0这两种情况(b为一角钱的数量,c为两角钱的数量,d为五角钱的数量),这是什么原因啊?

2.当把自定义变量f去掉后,改为if(0.1*b+0.2*c+0.5*d==a)时,在输入a=2;为什么只输出b=0,c=0,d=4这一种情况啊?


正在回答

4 回答

#include<stdio.h>


int main()


{


int a=20,b, c, d;


int e ;



for (b = 0; b <= a / 1; b++)


{


for (c = 0; c <= a / 2; c++)


{


for (d = 0; d <= a / 5; d++)


{

if (a == 1 * b + 2 * c + 5 * d)


{

e = a / 10;

printf("%d元可以由%d个一角钱和%d个两角钱和%d个五角钱组成\n", e, b, c, d);


}


}


}


}


return 0;


}


0 回复 有任何疑惑可以回复我~

#include<stdio.h>


int main()


{


int a=20,b, c, d;


int e ;



for (b = 0; b <= a / 1; b++)


{


for (c = 0; c <= a / 2; c++)


{


for (d = 0; d <= a / 5; d++)


{

if (a == 1 * b + 2 * c + 5 * d)


{

e = a / 10;

printf("%d元可以由%d个一角钱和%d个两角钱和%d个五角钱组成\n", e, b, c, d);


}


}


}


0 回复 有任何疑惑可以回复我~

我改了下,验证没什么问题,用你的会出现问题,可能是浮点变整型有问题https://img1.sycdn.imooc.com//5b2b76e900012bf516000592.jpg

0 回复 有任何疑惑可以回复我~

问题2:if(0.1*b+0.2*c+0.5*d==a)里的判定条件其实是(0.5*d==a)这部分= =;

问题1就比较鬼叼了,改成for(b=0;b<=a/0.1+1;b++)和for(b=0;b<a/0.1+1;b++)都可以,原代码为什么不可以emmmm,同问

另外建议printf的时候加个\n不然真的辣眼睛233

0 回复 有任何疑惑可以回复我~
#1

慕牧羊6158366 提问者

1.关于第二个问题的回答,我试过用括号将==前面的表达式整个括起来和调换0.2*c和0.5*d的位置,表示结果没有任何改变 2.对于最后一个建议,表示接受
2018-04-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于输入一个数,由一角钱,两角钱,五角钱凑出这个钱数的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信