LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1149|回复: 10

这个程序我怎么都看不懂。

[复制链接]
发表于 2003-2-9 16:49:04 | 显示全部楼层 |阅读模式
企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;    -----------
bonus4=bonus2+200000*0.5;                        这一段有必要吗?请问!
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;                     -----------
 if(i<=100000)
  bonus=i*0.1;
 else if(i<=200000)
     bonus=bonus1+(i-100000)*0.075;
    else if(i<=400000)
        bonus=bonus2+(i-200000)*0.05;
       else if(i<=600000)
           bonus=bonus4+(i-400000)*0.03;
          else if(i<=1000000)
              bonus=bonus6+(i-600000)*0.015;
             else
              bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%d",bonus);
}
还有个题,最低级的,可我椤是没看懂。
输入个华氏温度,求摄氏温度:
公式是:  c=5/9(F-32)
程序如下:
main()
{
float F,c;
scanf("%f",&F);
c=5/9*(F-32);
printf("c=%4.3f\n",c);
}
错哪啦?
发表于 2003-2-9 21:03:44 | 显示全部楼层
我先告诉你第二个程序的问题出在哪里吧
就是
在gcc中的除法运算符是%
       而求余运算符是/
在原来的程序中
c=5/9所求的只是5除以9余多少
当然不管怎么输入结果都是0.000

第一个我还没耐心看
发表于 2003-2-9 21:44:55 | 显示全部楼层

我们现在来看第一个问题
我觉得有必要
要是程序这样写的话那么就有必要了
在这个程序中
依我看
那段的作用就是
把各个从0点到 各个指标点(10,20,40,60,100)的不同比例区间的"满"情况先计算出来  {我表达得还清楚吧}
这样在下面的单元中只要把每个输入数字超出较小临近点(10,20,40,60,100)的零头部分的奖金计算出来在加上前那部分的相对现成数字(bonus1,bonus2,...)就行了

我觉得后面的程序用do case好些
而且那些if else语句这样好象不需要用这种缩进格式
我觉得只有在多重循环嵌套时才有必要这样写

我是这么想的
呵呵
说错了望大家指正
发表于 2003-2-17 10:26:15 | 显示全部楼层
[QUOTE]最初由 scream 发布
我先告诉你第二个程序的问题出在哪里吧
就是
在gcc中的除法运算符是%
       而求余运算符是/
-----------------------------
好象不对。。。。
除法是/,求余还是%
之所以错,是因为5/9是整数除法,所以结果为0
这是我的看法,欢迎指正!
发表于 2003-2-17 10:35:10 | 显示全部楼层
同意x11的观点
发表于 2003-2-21 16:28:12 | 显示全部楼层
scream先生的分析完全正确,努力啊
发表于 2003-2-21 16:52:16 | 显示全部楼层
最初由 scream 发布
我先告诉你第二个程序的问题出在哪里吧
就是
在gcc中的除法运算符是%
       而求余运算符是/
在原来的程序中
c=5/9所求的只是5除以9余多少
当然不管怎么输入结果都是0.000

第一个我还没耐心看

除法是“%”?
求余是“/”?
真不敢相信,真的假的?
发表于 2003-2-28 21:27:51 | 显示全部楼层
第一个程序没有问题,那几行先求出利润刚好是10、20、40、60、100时的提成,后面计算时算出高出这些值的部分,再加上前面的算出的值就行了。程序是这样做的。
发表于 2003-3-5 05:58:58 | 显示全部楼层
x11 说的是正确的。
5/9 是整数运算,5 整除以 9 当然是 0。
更正的话,只需要改成 : 5.0/9.0 就可以了。
BTW, 5 % 9 等于 5。
发表于 2003-3-5 06:01:41 | 显示全部楼层
第一个程序和计算个人所得税差不多么。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表