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;
}
为什么我的程序有问题呢,问题在哪里 展开
起步里程为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;
}
为什么我的程序有问题呢,问题在哪里 展开
2个回答
展开全部
如果按你的输出样例,那么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
意思就是公里数要舍去小数点来进行计算,而时间要分成两种情况来算,第一种不满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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询