微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有人知道这段代码有什么问题吗?根本没用

如何解决有人知道这段代码有什么问题吗?根本没用

我编写了这段代码,但根本无法正常工作

我希望我的解释很好

因此,我需要从“ for”循环中继续执行我遇到的最后一个条件。并在最后打印计数器编号

{


//to do math
    float quarters = 0.25;
    float dimes  = 0.10;
    float nickels  = 0.5;
    float pennies  = 0.1;

//the number I need to transfer to 0
    float n = 0.65;

//the counting number
    int count = 0;
    
    for (;;)
    {
       if (n >= quarters ) // -0.25
        {
            n =  n - quarters;
            count += 1;
            return n ;
        }
        else if (n >= dimes) // -0.10
        {
            n =  n - dimes;
            count += 1;
            return n ;
        }
        else if (n >= nickels) // 0.5
        {
            n =  n - nickels;
            count += 1;
            return n ;
        }
        else if (n >= pennies) // 0.1
        {
            n =  n - pennies;
            count += 1;
            return n ;
        }
        else //return the counting number
        {
            printf("%i",count);
            break;
        }
    }
}

解决方法

请不要return n,而要使用continue-继续会告诉您的循环进行另一回合,这就是您想要在此处再次通过条件逻辑进行的操作。

return终止了您的功能,因此您的程序在到达最终的else分支之前退出,在该分支中您将打印出计数器。

此外,我假设您的便士设置为0.1,与一角硬币相同,并且应该设置为0.01

编辑: 根据问题下发布的Weather Vane的注释,由于0.01在浮点数中的错误表示,因此最好使用整数来解决此问题。他已链接的SO问题:Why not use Double or Float to represent currency?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。