| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1166 人关注过本帖
标题:结果比实际少了1,求教!
只看楼主 加入收藏
shade1220
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-8-5
收藏
 问题点数:0 回复次数:12 
结果比实际少了1,求教!
#include <stdio.h>
#include <string.h>

int main()
{
    int value;                //定义利润
    //float sum[6]={0.1,0.075,0.05,0.03,0.015,0.001};//定义奖金提成率
    float sum=0;        //定义奖金提成
    printf("请输入利润值:");
    scanf("%d",&value);
    if(value<=10)
        sum=value*0.1;
    else if(value<=20)
        sum=(value-10)*0.075+sum;
    else if(value<=40)
        sum=sum+(value-20)*0.05;
    else if(value<=60)
        sum=sum+(value-40)*0.03;
    else if(value<=100)
        sum=sum+(value-60)*0.015;
    else
        sum=sum+(value-100)*0.01;

    printf("\n奖金为%.3f",sum);
    scanf("%d",&value);
    return 0;
}
搜索更多相关主题的帖子: 结果 
2008-09-07 20:39
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
sum=(value-10)*0.075+sum,整个程序都没有循环结构~这句里的SUM肯定是0。建议重新修改。

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-09-07 20:42
aizhinuo
Rank: 2
等 级:论坛游民
帖 子:28
专家分:10
注 册:2008-9-5
收藏
得分:0 
题目是怎么出的
出里利润<10里其它的都加上SUM干什么
你加上的SUM都是0啊
2008-09-07 20:50
shade1220
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-8-5
收藏
得分:0 
知道了,本来我是想程序中都缩小10000,但是输入的时候又想着单位为元了,呵呵.谢谢~! 附题目和修改后的程序
/**********************************************************/
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
/********************************************************/
#include <stdio.h>
#include <string.h>

int main()
{
    int value;                //定义利润
    //float sum[6]={0.1,0.075,0.05,0.03,0.015,0.001};//定义奖金提成率
    int sum=0;        //定义奖金提成
    printf("请输入利润值:");
    scanf("%d",&value);
    if(value<=100000)
        sum=value*0.1;
    else if(value<=200000)
        sum=(value-100000)*0.075+sum;
    else if(value<=400000)
        sum=sum+(value-200000)*0.05;
    else if(value<=600000)
        sum=sum+(value-400000)*0.03;
    else if(value<=1000000)
        sum=sum+(value-600000)*0.015;
    else
        sum=sum+(value-1000000)*0.01;

    printf("\n奖金为%d",sum);
    scanf("%d",&value);
    return 0;
}
2008-09-07 20:51
shade1220
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-8-5
收藏
得分:0 
[bo][un]aizhinuo[/un] 在 2008-9-7 20:50 的发言:[/bo]

题目是怎么出的
出里利润


里面的SUM是上一利润段的提成奖金.
2008-09-07 20:53
qfyzy
Rank: 2
等 级:论坛游民
威 望:1
帖 子:380
专家分:86
注 册:2008-2-17
收藏
得分:0 
[bo][un]shade1220[/un] 在 2008-9-7 20:51 的发言:[/bo]

知道了,本来我是想程序中都缩小10000,但是输入的时候又想着单位为元了,呵呵.谢谢~! 附题目和修改后的程序
/**********************************************************/
题目:企业发放的奖金根据利润提成。利润 ...

还是不行的

当对C的经验增加时,它会显的很好用.----Dennis M Ritche如是说
2008-09-07 20:57
aizhinuo
Rank: 2
等 级:论坛游民
帖 子:28
专家分:10
注 册:2008-9-5
收藏
得分:0 
加上的sum还都是是0啊
2008-09-07 20:58
missiyou
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:531
专家分:218
注 册:2007-10-9
收藏
得分:0 
可能类型转换问题,一个int 一个float ,计算的时候有可能会掉位。
sum=value*0.1;这个
还是像下面写一样。sum=sum+value*0.1;
或者,
sum=(float)value*0.1;
加上sum 是符合,最后结构的类型,看代码注意点。
2008-09-07 21:06
shade1220
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-8-5
收藏
得分:0 
[bo][un]aizhinuo[/un] 在 2008-9-7 20:58 的发言:[/bo]

加上的sum还都是是0啊



#include <stdio.h>
#include <string.h>

int main()
{
    int value;                //定义利润
    //float sum[6]={0.1,0.075,0.05,0.03,0.015,0.001};//定义奖金提成率
    int sum=0;        //定义奖金提成
    printf("请输入利润值:");
    scanf("%d",&value);
    if(value<=100000)
        sum=value*0.1;
    else if(value<=200000)
        sum=100000*0.1+(value-100000)*0.075;
    else if(value<=400000)
        sum=100000*0.1+100000*0.075+(value-200000)*0.05;
    else if(value<=600000)
        sum=100000*0.1+100000*0.075+200000*0.05+(value-400000)*0.03;
    else if(value<=1000000)
        sum=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(value-600000)*0.015;
    else
        sum=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(value-1000000)*0.01;

    printf("\n奖金为%d",sum);
    scanf("%d",&value);
    return 0;
}

对,我弄错了,后来的sum都是0,那先 用这笨办法了.我想想可以累加吗...
2008-09-07 21:09
shade1220
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-8-5
收藏
得分:0 
[bo][un]missiyou[/un] 在 2008-9-7 21:06 的发言:[/bo]

可能类型转换问题,一个int 一个float ,计算的时候有可能会掉位。
sum=value*0.1;这个
还是像下面写一样。sum=sum+value*0.1;
或者,
sum=(float)value*0.1;
加上sum 是符合,最后结构的类型,看代码注意点。


sum=(float)value*0.1;里面的(float)好像系统会自动转换成double的,不需要这样显示出来吧
2008-09-07 21:11
快速回复:结果比实际少了1,求教!
数据加载中...
 
   



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

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