把if(x>1000)后的分号去掉就好了。不然不管读入什么x,执行的总是 c=0.3*(x-1000)+490。
#include
double fee(int x);
int main(int argc, char **argv){
int j,m;
double n;
printf("Please Enter you degeers:");
for(j=0;j<3;j++){
scanf("%d",&m);
n=fee(m);
printf("fee(%d)=%.1lf",m,n);
printf("\n");
}
return 0;
}
double fee(int x)
{
if(x<=300&&x>0)
return 0.6*x;
if(x>300&&x<=600)
return 0.5*(x-300)+180;
if(x>600&&x<=1000)
return 0.4*(x-600)+330;
if (x>1000)
return 0.3*(x-1000)+490;
}
多了个分号,而且你的写法是多个IF的顺序执行语句,它会一个个执行下来的。满足条件的执行里面的语句,不满足的会跳过IF执行下个IF
子函数里:
if(x>1000)后面多了个分号。
所以你每次都是在4次判断后,都执行了c=0.3*(x-1000)+490.
给分吧