fabvy12 发表于 2019-10-14 11:18:15

新手求助 出租车计费问题

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为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;
}

echohah 发表于 2019-10-14 11:25:30

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);

fabvy12 发表于 2019-10-14 11:32:18

echohah 发表于 2019-10-14 11:25
这两句中money是float类型,但是赋值号右边是double类型的,需要先强制转变为float类型:

如果我把money定义为flost类型呢?为什么还是错。?还是错了一个调试点。

fabvy12 发表于 2019-10-14 11:34:48

echohah 发表于 2019-10-14 11:25
这两句中money是float类型,但是赋值号右边是double类型的,需要先强制转变为float类型:

我按你的改了,不过还是错了,最后一个调试点还是错了

jackz007 发表于 2019-10-14 11:58:31

楼主,试试这个代码
#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)                                           ;
}

fabvy12 发表于 2019-10-14 12:06:14

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编译错误。

jackz007 发表于 2019-10-14 13:47:30

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)                                           ;
}

fabvy12 发表于 2019-10-14 13:50:21

jackz007 发表于 2019-10-14 13:47
现在再试:

留个联系方式吧{:5_108:}

jackz007 发表于 2019-10-14 13:55:19

fabvy12 发表于 2019-10-14 13:50
留个联系方式吧

邮箱可以吗:jackz007@126.com

fabvy12 发表于 2019-10-14 20:38:07

jackz007 发表于 2019-10-14 13:55
邮箱可以吗:

还是错了,这次调试点一个都没对

jackz007 发表于 2019-10-14 21:10:05

fabvy12 发表于 2019-10-14 20:38
还是错了,这次调试点一个都没对

      一个都没有对,请问,测试点是哪几个?有测试样例吗,如果有,就把它们贴出来,验证一下就知道问题所在了。

fabvy12 发表于 2019-10-14 21:11:52

jackz007 发表于 2019-10-14 21:10
一个都没有对,请问,测试点是哪几个?有测试样例吗,如果有,就把它们贴出来,验证一下就知道问 ...

由于这是考试题,没有给出具体的测试点,只有0.1.2.3 4这样子

fabvy12 发表于 2019-10-14 21:12:29

jackz007 发表于 2019-10-14 21:10
一个都没有对,请问,测试点是哪几个?有测试样例吗,如果有,就把它们贴出来,验证一下就知道问 ...

测试样例都对了,但是测试点,最后一个错了

fabvy12 发表于 2019-10-14 21:14:33

fabvy12 发表于 2019-10-14 20:38
还是错了,这次调试点一个都没对

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

jackz007 发表于 2019-10-14 21:25:03

fabvy12 发表于 2019-10-14 21:14
输入格式:
输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分 ...

样例3输入
12.5 9
输出
34
难道有错误?

fabvy12 发表于 2019-10-14 21:36:57

jackz007 发表于 2019-10-14 21:25
样例3输入
12.5 9
输出


我们这个考试很死板的,很严格的。测试点都没给出来。平常会给出来的

jackz007 发表于 2019-10-14 21:47:38

fabvy12 发表于 2019-10-14 21:36
我们这个考试很死板的,很严格的。测试点都没给出来。平常会给出来的

      那么,这套系统是通过什么方式指出错误的,难道不是给出正确答案?

fabvy12 发表于 2019-10-14 21:58:37

jackz007 发表于 2019-10-14 21:47
那么,这套系统是通过什么方式指出错误的,难道不是给出正确答案?

没有,

fabvy12 发表于 2019-10-14 21:59:27

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;

wuguiyou888 发表于 2019-10-14 23:06:31

road 的初始值是多少呢?
页: [1] 2
查看完整版本: 新手求助 出租车计费问题