2021-11-24 C 语言经典100例 delphi实现

2021-11-24  本文已影响0人  netppp

https://www.runoob.com/cprogramming/c-exercise-example2.html


题目:企业发放的奖金根据利润提成。

利润(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,求应发放奖金总数?

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成双精度浮点(double)型。

实例

include<stdio.h>

int main()
{
double i;
double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
printf("你的净利润是:\n");
scanf("%lf",&i);
bonus1=1000000.1;
bonus2=bonus1+100000
0.075;
bonus4=bonus2+2000000.05;
bonus6=bonus4+200000
0.03;
bonus10=bonus6+4000000.015;
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 if(i>1000000) {
bonus=bonus10+(i-1000000)*0.01;
}
printf("提成为:bonus=%lf",bonus);

printf("\n");

}
以上实例输出结果为:

你的净利润是:
120000
提成为:bonus=11500.000000


procedure TForm1.Button1Click(Sender: TObject);

var
  //a,b,c,d,e,f,m,n,x,y,z,i:float;
  { DELPHI的浮点数声明不能用float,而是用real(8个字节),single(8个字节,单精度浮点),double(16个字节,双精度浮点)
浮点数据声明如下:
var i,j,k:real;
m,n:integer;
integer 转化为float是自动进行的.当把一个integer值赋给浮点型的变量时,DELPHI自动进行类型转换.  }



    a,b,c,d,e,m,i:real;

begin
    m:=0;                   //m初始化为0,然后作为变量装填
     i:=strtofloat(edit1.text);   //编辑框输入120000
     a:=100000*0.1;          //100000打底,对应利润在100000-200000之间时引用,作为基数

     b:= a+100000*0.075;     //200000打底,对应利润在200000-400000之间时引用,作为基数
     c:= b+200000*0.05;
     d:= c+200000*0.03;
     e:= d+200000*0.015;

   if   i<=100000   then
        m:=i*0.1
      else if    i<=200000 then
        m:=a+(i-100000)*0.075
       else if    i<=400000 then
          m:=b+(i-200000)*0.05
        else  if    i<=600000 then
            m:=c+(i-400000)*0.03
         else   if    i<=1000000 then
               m:=d+(i-600000)*0.015
          else     if    i>1000000 then
                m:=e+(i-1000000)*0.01;


{
     if   i<=100000   then
        m:=i*0.1;
     if    i<=200000 then
        m:=a+(i-100000)*0.075;

       if    i<=400000 then
          m:=b+(i-200000)*0.05;
//   以上这段证明了不使用else  if  会导致之前的程序被覆盖,逻辑不严谨从而得出错误的结论。
  }


    showmessage(floattostr(m));

end;
上一篇下一篇

猜你喜欢

热点阅读