标题:编程新手求解
取消只看楼主
Leeoo
Rank: 1
等 级:新手上路
帖 子:8
专家分:5
注 册:2020-4-19
结帖率:100%
已结贴  问题点数:20 回复次数:2 
编程新手求解
问题:从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量(在人民币总数量最少的情况下,显示100元、50元、10元、5元、2元、1元、1角、5分、1分各多少张)。
这道题我在百度上搜到了答案,不过我想自己用if语句写出来,但不知道为什么出错了,求助各位大佬。
代码如下:
#include<stdio.h>
int main()
{
    double x;
    int a, b, c, d, e, f, g, h, i;
    printf("请输入金额:");
    scanf_s("%lf", &x);
    if (x / 100 != 0)
    {
        a = x / 100;
        if ((x - a * 100) > 50)
        {
            b = 1;
            c = (x - a * 100 - 50) / 10;
        }
        else
        {
            b = 0;
            c = (x - a * 100) / 10;
        }
        if ((x - a * 100 - b * 50 - c * 10) >= 5)
        {
            d = 1;
            if ((x - a * 100 - b * 50 - c * 10 - 5) == 4)
                e = 2;
            else
                if ((x - a * 100 - b * 50 - c * 10 - 5) >= 2)
                    e = 1;
                else
                    e = 0;
        }
        else
        {
            d = 0;
            if ((x - a * 100 - b * 50 - c * 10) == 4)
                e = 2;
            else
                if ((x - a * 100 - b * 50 - c * 10) >= 2)
                    e = 1;
                else
                    e = 0;
        }
        if ((x - a * 100 - b * 50 - c * 10 - d * 5 - e * 2) == 1)
            f = 1;
        else
            f = 0;
        g = (x - a * 100 - b * 50 - c * 10 - d * 5 - e * 2 - f) / 0.1;
        if ((x - a * 100 - b * 50 - c * 10 - d * 5 - e * 2 - f - g * 0.1) >= 0.05)
        {
            h = 1;
            i = (x - a * 100 - b * 50 - c * 10 - d * 5 - e * 2 - f - g * 0.1 - h * 0.05) /0.01;
        }
        else
        {
            h = 0;
            i = (x - a * 100 - b * 50 - c * 10 - d * 5 - e * 2 - f - g * 0.1) / 0.01;
        }
    }
    else
        printf("error");
    printf("%2d%2d%2d%2d%2d%2d%2d%2d%2d", a, b, c, d, e, f, g, h, i);
    return 0;
}

最后一个数字答案是3
搜索更多相关主题的帖子: 编程 int printf 人民币 金额 
2020-04-19 23:32
Leeoo
Rank: 1
等 级:新手上路
帖 子:8
专家分:5
注 册:2020-4-19
得分:0 
本来最开始用的float的,后来怕精度不够,才刻意换成double的
2020-04-20 10:12
Leeoo
Rank: 1
等 级:新手上路
帖 子:8
专家分:5
注 册:2020-4-19
得分:0 
因为楼主初学C语言,好多问题还不太清楚,大家见谅哈
查了一些资料,基本上看懂了大家的回答,我自己也经过了实验,float型数字强制转换为int型的确会损失精度,谢谢大家的指导
2020-04-20 14:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501139-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.173651 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved