C语言编程问题?

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:起步里程为3公里,起步费10元;超起步里程后10公里内,每公里2元;超过10公里以上的部分加收50... 本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费 )。

输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
输入样例1:
2.6 2

输出样例1:
10

输入样例2:
5.1 4

输出样例2:
14

输入样例3:
12.5 9

输出样例3:
34
——————————————
#include<stdio.h>
int main()
{
int time=0;
double mail=0;
int p1,p2;
scanf("%lf %d", &mail, &time);;
if(mail<=3){
p1=10;
}
else if(mail<=10){
p1=10+(mail-3)*2.0;
}
else{
p1=10+14+(mail-10)*3.0;
}
p2=time/5*2;
printf("%d\n",p1+p2);
return 0;
}
为什么我的程序有问题呢,问题在哪里
展开
 我来答
AStoryForever
2020-05-12 · TA获得超过2813个赞
知道大有可为答主
回答量:1240
采纳率:87%
帮助的人:947万
展开全部
如果按你的输出样例,那么12.5里9分钟对应的应该是10+7×2+2×3+2×2
意思就是公里数要舍去小数点来进行计算,而时间要分成两种情况来算,第一种不满5分钟0元,大于等于5分钟是按封顶来算的,因为这里9分钟是算了2个2元钱,也就是只要开始算钱不满5分钟也要算2块钱
因此你在计算mail(其实公里是mile)的时候,应该强制类型由double转为int来算才是合理的,因为要舍去小数点;而p2对应的是等待时间对应的价钱,所以应该要用if-else做逻辑判断,小于5赋值0,等于5的倍数时直接赋值time*2/5,其它情况应该按封顶来算,是(time/5+1)*2
甜甜的小汪
2020-05-12 · 超过103用户采纳过TA的回答
知道小有建树答主
回答量:331
采纳率:84%
帮助的人:52.6万
展开全部
很高兴为您解答!
你的time和mail不用赋初值
p1应定义为double型,而且结果要四舍五入处理一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式