如何用c语言编程解决这个实际问题?

公司发放的奖金根据利润提成。利润I低于10万元时,奖金可提10%;利润在(10万,20万]时,低于10万的部分按10%提,高于10万的部分按7.5%提;利润在(20万,40万]时,低于10万的部分按10%提,高于10万,低于20万的部分按7.5%提,高于20万的部分按5%提;利润在(40万,60万]之间时,低于40万时按照上述方式处理,高于40万按照3%提;利润超过60万时,小于60万部分按上述方式处理,大于60万部分按1%提。从键盘输入利润,求应发奖金数额。(要求分别用if语句和switch语句完成)

2个回答

如果有帮助请采纳答案!!!

 用if语句
#include <stdio.h>
int main()
{
  int i;
  double bonus,bon1,bon2,bon4,bon6,bon10;
  bon1=100000*0.1;
  bon2=bon1+100000*0.075;
  bon4=bon2+100000*0.05;
  bon6=bon4+100000*0.03;
  bon10=bon6+400000*0.015;
  printf("请输入利润i:");
  scanf("%d",&i);
  if (i<=100000)
     bonus=i*0.1;
  else if (i<=200000)
     bonus=bon1+(i-100000)*0.075;
  else if (i<=400000)
     bonus=bon2+(i-200000)*0.05;
  else if (i<=600000)
     bonus=bon4+(i-400000)*0.03;
  else if (i<=1000000)
     bonus=bon6+(i-600000)*0.015;
  else
     bonus=bon10+(i-1000000)*0.01;
  printf("奖金是: %10.2f\n",bonus);
  return 0;
 }

用switch语句 
#include <stdio.h>
int main()
{
  int i;
  double  bonus,bon1,bon2,bon4,bon6,bon10;
  int  branch;
  bon1=100000*0.1;
  bon2=bon1+100000*0.075;
  bon4=bon2+200000*0.05;
  bon6=bon4+200000*0.03;
  bon10=bon6+400000*0.015;
  printf("请输入利润i:");
  scanf("%d",&i);
  branch=i/100000;
  if (branch>10)  branch=10;
  switch(branch)
  {  case 0:bonus=i*0.1;break;
     case 1:bonus=bon1+(i-100000)*0.075;break;
     case 2:
     case 3: bonus=bon2+(i-200000)*0.05;break;
     case 4:
     case 5: bonus=bon4+(i-400000)*0.03;break;
     case 6:
     case 7:
     case 8:
     case 9: bonus=bon6+(i-600000)*0.015;break;
     case 10: bonus=bon10+(i-1000000)*0.01;
  }
   printf("奖金是 %10.2f\n",bonus);
   return 0;
 }

dabocaiqq
请你们大家多多姿瓷我菠菜菌 这个回答比较好!
11 个月之前 回复
caozhy
贵阳老马马善福专门编写代码的老马就是我! 回答得很详细。lz给一个采纳鼓励下吧。
11 个月之前 回复

很简单的一道分段数学题,建议楼主自己动手写一下

 #include<stdio.h>
double if_else(double x) {
    double y=0;
    if (x <= 10)
        y = 0.1*x;
    else if (x <= 20)
        y = 1 + 0.075*(x - 10);
    else if (x <= 40)
        y = 1.75 + 0.05*(x - 20);
    else if (x <= 60)
        y = 2.75 + 0.03*(x - 40);
    else
        y = 3.95 + 0.01*(x - 60);
    return y;
}
double _switch(double x) {
    double y = 0;
    switch ((int)x/10) {  //以十位为开关
    case 0:
        y = 0.1*x;
        break;
    case 1:
    case 2:
        y = 1 + 0.075*(x - 10);
        break;
    case 3:
    case 4:
        y = 1.75 + 0.05*(x - 20);
        break;
    case 5:
    case 6:
        y = 2.75 + 0.03*(x - 40);
        break;
    default:
        y = 3.95 + 0.01*(x - 60);
        break;
    }
    return y;
}
int main() {
    double I;
    printf("Enter the I :");
    scanf("%lf", &I);
    printf("if_else : %lf\n", if_else(I));
    printf("_switch : %lf\n", _switch(I));
    return 0;
}
qq_40946921
Italink 回复qq_23126581: 感觉像是代写作业.
11 个月之前 回复
qq_23126581
玄元复始道生初,守一无穷尽万物 现在的人真的是,给他认真回答根本不理会我i们。
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!