我的编程哪里不对,急用!

来源:百度知道 编辑:UC知道 时间:2024/06/05 11:08:24
#include<stdio.h>
void main()
{
float i,p;
printf("Please enter i:");
scanf("%f",&i);
if(i>0 && i<=10)
{
p=(10/100)*i;
}
else if(i<=20.0)
{
p=(10/100)*10.0+(i-10)*(7.5/100);
}
else if(i<=40.0)
{
p =(10/100)*10.0+20.0*(7.5/100)+(i-20)*(5/100);
}
else if(i<=60.0)
{
p =(10/100)*10.0+20.0*(7.5/100)+(5/100)*40.0+(i-40)*(3/100);
}
else if(i<=100.0
{
p =(10/100)*10+20*(7.5/100)+(5/100)*40+60*(3/100)+(i-60)*(1.5/100);
}
else if(i>100.0)
{
p =(10/100)*10.0+20.0*(7.5/100)+(5/100)*40.0+60.0*(3/100)+100*(1.5/100)+(i-100)*(1/100);
}
printf("The profit is %f\n",p);.题目: 企业发放奖金是根据利润提成的,提成的办法是:
(1)利润(用I表示)≤10万元时,可提成10%;
(2)超过10万元时:
10万<I≤20万的部分,可提成7.5%,低的部分同上(下同);
20万<I≤40万的部分,可提成5%;
40万<I≤60万的部分,可提成3%;
60万<I≤100万的部分,可提成1.

首先注意:'/'为整除符号,如果你用10/100结果是0才对,而你想要的结果按你的意思应该不是的。所以建议你将百分数直接写成小数就可以了,何必再费事写式子呢?
其次:你的式子显得太呆板,罗嗦了。第一句改为p=0.1*i; 第二句改为p=1+(i-10)*0.075; 第三句改为p =1.75+(i-20)*0.05; 以下的类推。口算就可以出来的起码不会看式子忒复杂了

建议:对于多重分支本人以为还是用switch语句更好些,显得简单明了。修改后的程序如下,仅供参考:
#include<stdio.h>
void main(){
float num;
int h;
float p=0;
printf("请输入利润值: ");
scanf("%f",&num);
h=num/10;
switch(h) {
case 10:
p+=(num-100)*0.01;
num=100;
case 6:
case 7:
case 8:
case 9:
p+=(num-60)*0.015;
num=60;
case 4:
case 5:
p+=(num-40)*0.03;
num=40;

case 2:
case 3:
p+=(num-20)*0.05;
num=20;

case 1:
p+=(num-10)*0.075;
num=10;

case 0:
p+=num*0.1;
break;
default:
p=3.95+(num-100)*0.01;
}

printf("The profit is %.4f万元\n",p);
}