回 帖 发 新 帖 刷新版面

主题:[讨论]企业发放的奖金根据利润提成的编程问题(c语言)

利润(I)低于或等于10万元的,奖金可提10%;利润高于10万元,低于20万元(100000<I<=200000元)时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;200000<I<=400000时,低于20万远的部分低按上述办法提成(下同)。高于20万元的部分5%提成;400000<I<=600000时,高于40万元的部分按3%提成;600000<I<=1000000时,高于60万元的部分按1.5%提成;I>1000000时,超过100万元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。 
要求:⑴用if语言编程序;⑵用switch语句编程序

我自己用了IF编写了,不知道我这样理解对不对

低于100000的一律都按10%提成,如果是15W的话,高于10万元的部分可提成7.5%

,就是用5W提成7。5,我是不是理解错了?我看了网上的答案和我的好象不太一样啊!高手帮忙看下,我这样写对吗?我自己都感觉我的结果不对!如果错了, 请帮忙看看哪里错了!谢谢拉!



#include <stdio.h>
void main()
{
long i,b;
scanf("%ld",&i);
if(i<=100000)
b=i*0.1;
else if(100000<=i&&i<=200000)
b=(i-100000)*0.075;
else if(200000<=i&&i<=400000)
b=(i-200000)*0.05;
else if(400000<=i&&i<=600000)
b=(i-400000)*0.03;
else if(600000<=i&&i<=1000000)
b=(i-600000)*0.015;
printf("%d",b);
}

回复列表 (共4个回复)

沙发

顶一下,也没人回答一下!这个问题怎么那么难理解!

板凳

是不是这个意思?
#include <stdio.h>
void main()
{
long i;
float b;
scanf("%ld",&i);
if(i<=100000)
b=i*0.1;
else if(100000<i&&i<=200000)
b=(i-100000)*0.075+100000*0.1;
else if(200000<i&&i<=400000)
b=(i-200000)*0.05+100000*0.1+100000*0.075;
else if(400000<i&&i<=600000)
b=(i-400000)*0.03+100000*0.1+100000*0.075+200000*0.05;
else if(600000<i&&i<=1000000)
b=(i-600000)*0.015+100000*0.1+100000*0.075+200000*0.05+200000*0.03;
else if(i>1000000)
b=(i-1000000)*0.001+100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015;
printf("%f",b);
}

3 楼

#include<stdio.h>
int main()
{
 int c;
 float t,i,j;
 printf("输入利润i:\n");
 scanf("%f",&i);
 c=i/10;
switch(c)

case 0:
case 1:t=10;   j=10*t/100;break;
case 2:t=7.5;  j=1+(i-10)*7.5/100;break;
case 3:
case 4:t=5;    j=1.75+(i-20)*5/100;break;
case 5:
case 6:t=3;    j=2.75+(i-40)*3/100;break;
case 7:
case 8:
case 9: 
case 10:t=1.5;   j=3.35+(i-60)*1.5/100;break;
default :t=1;     j=3.95+(i-100)*1/100;break;
}
printf("奖金j=%5.2f万元。\n",j);
}//《C语言》P113第十题。
才是正确的。但是我不太会用switch语句。我现在用的switch语句是不够正确不够简洁的。用得跟if语句一样繁琐,我对此很不满啊。。我在网上找却没有找到switch语句编的程序。。。。。朋友,你找到我告诉我一声啊3Q!!呵呵

4 楼

这是谭浩强书上的一道作业题吧?

我来回复

您尚未登录,请登录后再回复。点此登录或注册