新手求助 出租车计费问题
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:起步里程为3公里,起步费10元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
求助。//这是题目
#include<stdio.h> //这是我的代码,错了一个调试点。
int main(void)
{
float road,money;
int min;
scanf("%f %d",&road,&min);
if (road>10)
{
money=24+(road-10)*3.0;
}else if(road>3)
{
money=10+(road-3)*2.0;
}
else {
money=10;
}
if (min>5)
{
money=money+2*(min/5);
}
printf("%.0f",money);
return 0;
} money=24+(road-10)*3.0;
money=10+(road-3)*2.0;
这两句中money是float类型,但是赋值号右边是double类型的,需要先强制转变为float类型:
money=(float)(24+(road-10)*3.0);
money=(float)(10+(road-3)*2.0); echohah 发表于 2019-10-14 11:25
这两句中money是float类型,但是赋值号右边是double类型的,需要先强制转变为float类型:
如果我把money定义为flost类型呢?为什么还是错。?还是错了一个调试点。 echohah 发表于 2019-10-14 11:25
这两句中money是float类型,但是赋值号右边是double类型的,需要先强制转变为float类型:
我按你的改了,不过还是错了,最后一个调试点还是错了 楼主,试试这个代码
#include<stdio.h>
int main(void)
{
float road , money ;
int min , fee ;
fee = 0 ;
scanf("%f %d" , & road , & min) ;
if(road > 0.0) {
if(road <= 3.0) {
money = 10.0 ;
} else if(road > 3.0 && road <= 10.0) {
money = 10.0 + 2.0 * (road - 3.0) ;
} else {
money = 10.0 + 2.0 * 7.0 + (road - 10.0) * 3.0 ;
}
money = money + 2.0 * int(min / 5) ;
fee = int(money + 0.5) ;
}
printf("%d\n" , fee) ;
}
jackz007 发表于 2019-10-14 11:58
楼主,试试这个代码
c: In function ‘main’:
a.c:16:39: error: expected expression before ‘int’
money = money + 2.0 * int(min / 5);
^~~
a.c:17:23: error: expected expression before ‘int’
fee = int(money + 0.5);
^~~
//编译器上对了,不过,PTA编译错误。 fabvy12 发表于 2019-10-14 12:06
c: In function ‘main’:
a.c:16:39: error: expected expression before ‘int’
m ...
现在再试:
#include<stdio.h>
int main(void)
{
float road , money ;
int min , fee , k ;
fee = 0 ;
scanf("%f %d" , & road , & min) ;
if(road > 0.0) {
if(road <= 3.0) {
money = 10.0 ;
} else if(road > 3.0 && road <= 10.0) {
money = 10.0 + 2.0 * (road - 3.0) ;
} else {
money = 10.0 + 2.0 * 7.0 + (road - 10.0) * 3.0 ;
}
k = min / 5 ;
money = money + 2.0 * k ;
fee = money + 0.5 ;
}
printf("%d\n" , fee) ;
}
jackz007 发表于 2019-10-14 13:47
现在再试:
留个联系方式吧{:5_108:} fabvy12 发表于 2019-10-14 13:50
留个联系方式吧
邮箱可以吗:jackz007@126.com jackz007 发表于 2019-10-14 13:55
邮箱可以吗:
还是错了,这次调试点一个都没对 fabvy12 发表于 2019-10-14 20:38
还是错了,这次调试点一个都没对
一个都没有对,请问,测试点是哪几个?有测试样例吗,如果有,就把它们贴出来,验证一下就知道问题所在了。 jackz007 发表于 2019-10-14 21:10
一个都没有对,请问,测试点是哪几个?有测试样例吗,如果有,就把它们贴出来,验证一下就知道问 ...
由于这是考试题,没有给出具体的测试点,只有0.1.2.3 4这样子 jackz007 发表于 2019-10-14 21:10
一个都没有对,请问,测试点是哪几个?有测试样例吗,如果有,就把它们贴出来,验证一下就知道问 ...
测试样例都对了,但是测试点,最后一个错了 fabvy12 发表于 2019-10-14 20:38
还是错了,这次调试点一个都没对
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。
输出格式:
在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。
输入样例1:
2.6 2
输出样例1:
10
输入样例2:
5.1 4
输出样例2:
14
输入样例3:
12.5 9 fabvy12 发表于 2019-10-14 21:14
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分 ...
样例3输入
12.5 9
输出
34
难道有错误? jackz007 发表于 2019-10-14 21:25
样例3输入
12.5 9
输出
我们这个考试很死板的,很严格的。测试点都没给出来。平常会给出来的 fabvy12 发表于 2019-10-14 21:36
我们这个考试很死板的,很严格的。测试点都没给出来。平常会给出来的
那么,这套系统是通过什么方式指出错误的,难道不是给出正确答案? jackz007 发表于 2019-10-14 21:47
那么,这套系统是通过什么方式指出错误的,难道不是给出正确答案?
没有, 2019/10/14 21:58:53
部分正确
11
7-2
C (gcc)
3 ms
19215220615
测试点
结果
耗时
内存
0
答案正确
3 ms
512 KB
1
答案正确
2 ms
256 KB
2
答案正确
2 ms
256 KB
3
答案错误
2 ms
256 KB
代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
int main(void)
{
doubleroad , money;
int min;
scanf("%lf%d" , &road , &min);
if (road>10){
money = 24.0+3.0*(road-10);
} else if (road>3){
money = 10.0+2.0*(road-3);
} else {
money = 10.0;
}
if (min>5){
money =1.0*(money+(min/5)*2);
}
printf("%.0f",money);
return 0; road 的初始值是多少呢?
页:
[1]
2