满意答案
q1036790949
推荐于 2017.12.16
采纳率:48% 等级:12
已帮助:8666人
1 刚编写完的,徒手编写,没在编译器上跑,你跑下试试吧。
2 我对超8公里的理解是 起步3公里+超过的总共是8公里,如果理解的不对,把第1个函数第二和第3个语句 if里的8改成11就可以了。
3 我对输入的公里 和 分钟都定义成整型了,比如输入3.2,默认为3公里或者3分钟,因为我印象里出租车跑不够整公里,就不加钱。如果你那里要求跑3.2公里就收3.2公里的钱的话,把主函数里对l和d 的定义改下,改double,子函数也得稍做变化,不过我觉得应该不用改,反正真实的出租车就是这么收费的。
4 下面是代码:
有点长,不过附带判断输入数据的功能,比如输入负数,字母什么的,都没关系,所以长了点
#include
int main()
{
int d,l,q;
double q1,q2,Q,x;
printf("请输入您行驶里程(公里):\n");
for(;;){
scanf("%d",&l);
scanf("%*[^\n]");
scanf("%*c");
if(l<=0) {printf("您输入的有误,请重新输入您的行驶里程(公里):\n");}
else break;}
printf("请输入您等待的时间(分钟):\n");
for(;;){
scanf("%d",&d);
scanf("%*[^\n]");
scanf("%*c");
if(d<0) {printf("您输入的有误,请重新输入您的等待时间(分钟):\n");}
else break;}
q1=f1(l);
q2=f2(d);
Q=q1+q2;
q=(int)Q;
x=Q-q;
if(x>=0.5) q=q+1;
printf("请您支付 %d(元)车费\n",q);
return 0;
}
double f1(int l)
{
double q;
if(l<=3){
return 6.0;}
else if(l<=8){
q=(l-3)*1.8+6;
return q;}
else{
q=(l-8)*2.7+5*1.8+6;
return q;}
}
double f2(int d)
{
double q;
int l;
l=d/5;
q=l*1.8;
return q;
}
02分享举报