一道c的习题(关于if和else if)

来源:百度知道 编辑:UC知道 时间:2024/07/01 01:49:43
题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

我的代码:
#include <stdio.h>
int main()
{
long double I,m1,m2,m3,m4,m5,m;
scanf("%lf",&I);
m1=100000*0.1;
m2=m1+100000*0.075;
m3=m2+200000*0.05;
m4=m3+200000*0.03;
m5=m4+400000*0.015;
if(I>=1000000)
{
m=m5+(I-1000000)*0.001;
else if(I>=600000)
{
m=m4+(I-600000)*0.015;
else if(I>=400000)
{
m=m3+(I-400000)*0.03;
else if(I>=200000)
{
m=m2+(I-200000)*0.05;
else if(I>=100000)
{
m=m1+(I-100000)*0.075;
else
{
m=I*0.1;
}
}
}
}
}
}
prin

你的条件确实是写错了,估计你是想这样实现:

#include <stdio.h>
int main()
{
long double I,m1,m2,m3,m4,m5,m;
scanf("%lf",&I);
m1=100000*0.1;
m2=m1+100000*0.075;
m3=m2+200000*0.05;
m4=m3+200000*0.03;
m5=m4+400000*0.015;
if(I>=1000000)
{
m=m5+(I-1000000)*0.001;
}//这个地方不加括号咱们能对呢
else
{
if(I>=600000)
{
m=m4+(I-600000)*0.015;
}
else
{
if(I>=400000)
{
m=m3+(I-400000)*0.03;
}
else
{
if(I>=200000)
{
m=m2+(I-200000)*0.05;
}
else
{
if(I>=100000)
{
m=m1+(I-100000)*0.075;
}
else
{
m=I*0.1;
}
}
}
}
}

printf("%lf\n",m); //输出的应该是这个m吧
return 0;
}

另外培养一下编码的习惯吧,很重要的哦。