这段代码为什么输出的结果是错误的,和自己计算出来的不一样,,,求指教

2025-05-19 22:44:58
推荐回答(3个)
回答1:

把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;  

}

回答2:

多了个分号,而且你的写法是多个IF的顺序执行语句,它会一个个执行下来的。满足条件的执行里面的语句,不满足的会跳过IF执行下个IF

回答3:

子函数里:
if(x>1000)后面多了个分号。
所以你每次都是在4次判断后,都执行了c=0.3*(x-1000)+490.
给分吧