| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1160 人关注过本帖
标题:跟书上敲的一样,求问题在哪儿
只看楼主 加入收藏
mini2bus
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2016-9-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
跟书上敲的一样,求问题在哪儿
程序代码:
#include <stdio.h>
double clear(double sum,double value)
{
    int num;
    double newsum;
    
    num=(int)(sum/value);
    if (value>1)
        printf("%f元%d张\n",value,num);
    else
        printf("%f角%d张\n",value*10,num); 
    newsum=sum-value*num;
    return newsum;    
} 
int main(void)
{
    double clear(double sum,double value);
    double sum;
    double money[7]={100,50,10,5,0.5,0.1};
    printf("请输入实发工资总额\n");
    scanf("%f",&sum);
    for (int i=0;i<=5;i++)
    {
        sum=clear(sum,money[i]);
    }
}

2016-09-28 15:48
mini2bus
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2016-9-26
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-09-28 15:52
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:5 
double 输入输出是lf,
float 输入输出是f
2016-09-28 16:05
jierbote
Rank: 1
等 级:新手上路
帖 子:15
专家分:5
注 册:2016-9-27
收藏
得分:5 
用double一般的输出输入都%lf
你在试一下
2016-09-28 16:09
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1744
专家分:3216
注 册:2015-12-2
收藏
得分:4 
scanf("%f",&sum);改为scanf("%lf",&sum);
2016-09-28 16:10
mini2bus
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2016-9-26
收藏
得分:0 
谢谢你回的那么快,
我哪本书问题也不少啊。
可是改过之后我又发现一个问题:
#include <stdio.h>
double clear(double sum,double value)
{
    int num;
    double newsum;
   
    num=(int)(sum/value);
    if (value>1)
        printf("%lf元%d张\n",value,num);
    else
        printf("%f角%d张\n",value*10,num);
    newsum=sum-value*num;
    return newsum;   
}
int main(void)
{
    double clear(double sum,double value);
    double sum;
    double money[6]={100,50,10,5,0.5,0.1};
    printf("请输入实发工资总额\n");
    scanf("%lf",&sum);
    for (int i=0;i<=5;i++)
    {
        sum=clear(sum,money[i]);
    }
}
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-09-28 16:23
mini2bus
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2016-9-26
收藏
得分:0 
少了1角,是数据处理的问题吗。
再次谢谢你的回复
2016-09-28 16:24
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1744
专家分:3216
注 册:2015-12-2
收藏
得分:6 
回复 7楼 mini2bus
这是由于浮点数本来就不精确的缘故造成的。
最后的0.1比如它是0.0998。用它除以0.1得到的结果是0。
2016-09-28 16:48
chenchen224
Rank: 4
等 级:业余侠客
威 望:1
帖 子:61
专家分:237
注 册:2016-8-11
收藏
得分:0 
厉害啊,我都试了一下,学习到了。谢谢

我想做的,只是静静的把C学好,从此代码是爱人......
2016-09-28 22:03
快速回复:跟书上敲的一样,求问题在哪儿
数据加载中...
 
   



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

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