鱼C论坛

 找回密码
 立即注册
查看: 5006|回复: 20

新手求助 出租车计费问题

[复制链接]
发表于 2019-10-14 11:18:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-14 11:32:18 | 显示全部楼层
echohah 发表于 2019-10-14 11:25
这两句中money是float类型,但是赋值号右边是double类型的,需要先强制转变为float类型:

如果我把money定义为flost类型呢?为什么还是错。?还是错了一个调试点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-14 11:34:48 | 显示全部楼层
echohah 发表于 2019-10-14 11:25
这两句中money是float类型,但是赋值号右边是double类型的,需要先强制转变为float类型:

我按你的改了,不过还是错了,最后一个调试点还是错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)                                           ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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编译错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)                                           ;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-14 13:50:21 | 显示全部楼层

留个联系方式吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-14 13:55:19 | 显示全部楼层

邮箱可以吗:jackz007@126.com
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-14 20:38:07 | 显示全部楼层

还是错了,这次调试点一个都没对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-14 21:10:05 | 显示全部楼层
fabvy12 发表于 2019-10-14 20:38
还是错了,这次调试点一个都没对

        一个都没有对,请问,测试点是哪几个?有测试样例吗,如果有,就把它们贴出来,验证一下就知道问题所在了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

由于这是考试题,没有给出具体的测试点,只有0.1.2.3 4这样子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

测试样例都对了,但是测试点,最后一个错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

样例3输入
12.5 9
输出
34
难道有错误?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-14 21:36:57 | 显示全部楼层
jackz007 发表于 2019-10-14 21:25
样例3输入
12.5 9
输出

我们这个考试很死板的,很严格的。测试点都没给出来。平常会给出来的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-14 21:47:38 | 显示全部楼层
fabvy12 发表于 2019-10-14 21:36
我们这个考试很死板的,很严格的。测试点都没给出来。平常会给出来的

        那么,这套系统是通过什么方式指出错误的,难道不是给出正确答案?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-14 21:58:37 | 显示全部楼层
jackz007 发表于 2019-10-14 21:47
那么,这套系统是通过什么方式指出错误的,难道不是给出正确答案?

没有,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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)
{
    double  road , 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;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-14 23:06:31 | 显示全部楼层
road 的初始值是多少呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 17:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表