标题:发奖金了,大家都来
只看楼主
ljt0000mf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:157
注 册:2009-7-4
结帖率:100%
已结贴  问题点数:1 回复次数:8 
发奖金了,大家都来
企业发奖金按利润I提成,I<=100000,提10%,
100000<I<=200000,前100000按10%,低于200000的提7.5%,
200000<I<=400000,低于200000的按上述办法提,高于200000的,按5%提,
400000<I<=600000,低于400000的按上述办法提,高于400000的,按3%提,
600000<I<=1000000,低于600000的按上述办法提,高于600000的,按1.5%提,
I>1000000,超过1000000的按1%提;
输入I,求应发奖金数。

小弟程序如下:
#include "stdio.h"
 main()
{
   long i;
   double y;
   printf("input the I:");
   scanf("%ld",&i);
    if (i<=100000) y=i*0.1;printf("%lf\n",y);
    if (i<=200000) y=(i-100000)*0.075+10000; printf("%lf\n",y);
    if (i<=400000) y=(i-200000)*0.05+10000+7500;printf("%lf\n",y);
    if(i<=600000) y=(i-400000)*0.03+10000+7500+10000;printf("%lf\n",y);
    if(i<=1000000) y=(i-600000)*0.015+10000+7500+10000+6000;printf("%lf\n",y);
    if(i>1000000)y=(i-1000000)*0.01+10000+7500+10000+6000+6000; printf("%lf\n",y);

}
输入100000,竟然有二个结果出来,郁闷,
请各位指教下。
搜索更多相关主题的帖子: 奖金 
2009-08-24 13:22
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
得分:0 
你应用if语句的问题,你的每个if语句后都有一个表达式和printf输出函数语句.
你应该把每个if语句后的表达式和printf函数用{}花括号括起来.不然的话程序里的6个printf函数都会执行到.应该不是你说的两个结果,而是六个结果了.

努力—前进—变老—退休—入土
2009-08-24 13:50
ljt0000mf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:157
注 册:2009-7-4
得分:0 
加了{},还是6个呢,
2009-08-24 14:23
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
得分:0 
你要判断的数对if语句应用不对,要加else语句.
提示到这,不会就多看看书再来,对你好,对大家都好.

努力—前进—变老—退休—入土
2009-08-24 14:31
jyhyjwb
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2009-5-17
得分:0 
后面的全部用else if
2009-08-24 15:38
CCVC果冻爽
Rank: 4
等 级:业余侠客
帖 子:116
专家分:209
注 册:2009-7-31
得分:0 
这么多0000LZ看的不累吗?最后在printf里加个万不就得了,前面的都个位数做用个double不就OK了。
2009-08-25 11:36
CCVC果冻爽
Rank: 4
等 级:业余侠客
帖 子:116
专家分:209
注 册:2009-7-31
得分:0 
程序代码:
#include <stdio.h>
main(void)
{
    double i,b;
    printf("请输入当月利润(万元):");
    scanf("%lf",&i);
    if(i<=10)/*利润低于或等于10万元时,奖金*/
    {
        b=i*0.1;
        printf("奖金为:%lf",b);
    }
    else if(10<i&&i<=20)/*利润高于10万元,低于20万元时,奖金*/
    {
        b=(i-10)*0.075+10*0.1;
        printf("奖金为:%lf",b);
    }
    else if(20<i&&i<=40)/*利润高于20万元,低于40万元时,奖金*/
    {
        b=(i-20)*0.05+10*0.075+10*0.1;
        printf("奖金为:%lf",b);
    }
    else if(40<i&&i<=60)/*利润高于40万元,低于60万元时,奖金*/
    {
        b=(i-40)*0.03+20*0.05+10*0.075+10*0.1;
        printf("奖金为:%lf",b);
    }
    else if(60<i&&i<=100)/*利润高于60万元,低于100万元时,奖金*/
    {
        b=(i-60)*0.015+20*0.03+20*0.05+10*0.075+10*0.1;
        printf("奖金为:%lf",b);
    }
    else/*利润高于100万元,奖金*/
    {
        b=(i-100)*0.01+40*0.015+20*0.03+20*0.05+10*0.075+10*0.1;
        printf("奖金为:%lf",b);
    }
    return 0;
}
2009-08-25 11:38
duanchen930
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2009-8-24
得分:1 
#include "stdio.h"
main()
{
   long i;
   double y;
   printf("input the I:");
   scanf("%ld",&i);
   if (i<=100000) {y=i*0.1;printf("%lf\n",y);}
   else if (i<=200000) {y=(i-100000)*0.075+10000; printf("%lf\n",y);}
   else if (i<=400000) {y=(i-200000)*0.05+10000+7500;printf("%lf\n",y);}
   else if (i<=600000) {y=(i-400000)*0.03+10000+7500+10000;printf("%lf\n",y);}
   else if (i<=1000000) {y=(i-600000)*0.015+10000+7500+10000+6000;printf("%lf\n",y);}
   else if (i>1000000) {y=(i-1000000)*0.01+10000+7500+10000+6000+6000; printf("%lf\n",y);}

}
一定要加大括号因为if( )后面接一句语句或者用{ }括起来的复合语句,还有注意if 和 if else 的用法,
按你的方法如果i=100000 这个既<=100000,同时也会<=200000 ......六个if 条件语句都符合,因而会出现六个答案,注意if 与 if else 的不同
收到的鲜花
  • ljt0000mf2009-08-25 17:40 送鲜花  1朵  
2009-08-25 14:51
ljt0000mf
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:104
专家分:157
注 册:2009-7-4
得分:0 
谢谢大家,感动的泪奔!
我做鬼也不会放过大家的。
2009-08-25 15:31



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




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

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