C语言,计算运费问题,

2025-04-13 13:34:39
推荐回答(3个)
回答1:

#include "stdio.h"
int main(){
double s,p,f,w,d;
scanf("%lf%lf%lf",&p,&w,&s);  //先输入它们的值,才有后面的判断计算 
if(s<250) { d=0; }
else if(250<=s && s<500) { d=0.02; }  //关系运算不能连用,如题应该是用&&来连接两个关系运算,代表并且的意思 
else if(500<=s && s<1000) { d=0.05; }  //关系运算不能连用,如题应该是用&&来连接两个关系运算,代表并且的意思 
else if(1000<=s && s<2000) { d=0.08; }  //关系运算不能连用,如题应该是用&&来连接两个关系运算,代表并且的意思 
else if(2000<=s && s<3000) { d=0.1; }  //关系运算不能连用,如题应该是用&&来连接两个关系运算,代表并且的意思 
else { d=0.15; } 
f=p*w*s*(1-d);
printf ("%lf\n",f);  //缺少了一个f字母 
}

回答2:

计算结果应该没错吧,错在语句没用SWITCH,而且你的IF里,没必要再做250<=s什么的,说明你对C语言甚至是算法还不了解,因为这里重复定义了else之前的那个if的内容。因为即使它小于250,就直接会执行IF的真值流程而不会进行else之后的流程了。

switch(true){
 case s<250:d=0;break;
 case s<500:d=0.02;break;
 case s<1000:d=0.05;break;
 case s<2000:d=0.08;break;
 case s<3000:d=0.1;break;
 default:d=0.15
}

回答3:

在scanf("%d,%d,%d",p,w,s)中的p,w,s前面都加上一个“&”,才能把输入的数字放到相应的整型变量中。