王昱晨c语言 发表于 2019-10-26 15:03:23

sos!!!

#include"stdio.h"
int main()
{
        int t;
        float price,mile;
        scanf("%.1f %d",&mile,&t);
        if ("mile<=3")
        {
                price=10+t/5.0*2;
                printf("%f",price);
        }
        else if("mile>3&&mile<=10")
        {
                price=10+(mile-3)*2+t/5.0*2;
                printf("%f",price);
        }
        else
        {
                price=24+(mile-10)*3+t/5.0*2;
                printf("%d",price);
        }
        return 0;
}
为什么结果老是10.400000 求助

ba21 发表于 2019-10-26 15:08:25

"mile<=3"
"mile>3&&mile<=10"

双引号是几个意思?

王昱晨c语言 发表于 2019-10-26 15:08:54

ba21 发表于 2019-10-26 15:08
"mile3&&mile

hi 表示他是整形的

王昱晨c语言 发表于 2019-10-26 15:09:41

ba21 发表于 2019-10-26 15:08
"mile3&&mile

你编译一下然后运行,结果老是那个,为什么啊,帮帮

王昱晨c语言 发表于 2019-10-26 15:12:16

怎么了?哪里的问题?

yuweb 发表于 2019-10-26 15:46:13

王昱晨c语言 发表于 2019-10-26 15:12
怎么了?哪里的问题?

if和else括号里的双引号都去了

王昱晨c语言 发表于 2019-10-26 15:47:27

yuweb 发表于 2019-10-26 15:46
if和else括号里的双引号都去了

嗯嗯

王昱晨c语言 发表于 2019-10-26 15:48:11

yuweb 发表于 2019-10-26 15:46
if和else括号里的双引号都去了

还是不行啊

王昱晨c语言 发表于 2019-10-26 15:49:39

ba21 发表于 2019-10-26 15:08
"mile3&&mile

哥,帮忙看看{:7_125:}

bin554385863 发表于 2019-10-27 15:00:59

本帖最后由 bin554385863 于 2019-10-27 15:02 编辑

双引号表示那是一个字符串字面量,
不管是单个字符还是一个字符串在if看来都是非零的为真的。
if后面的语句必然执行。
scanf("%.1f %d",&mile,&t);
你见过书上/网上正确的代码,
哪个是在scanf里面用%.lf的?
mile>3&&mile<=10
还有这一句,你知道比较的顺序么?
是先算mile>3再算&&最后再算<=?
还是先算3&&mile再算大小比较?
如果你不能确定计算顺序,
那么使用小括号强制确定计算顺序是一个好习惯。
这一句最好写成这样:
if((mile>3)&&(mile<=10))

yuweb 发表于 2019-10-28 09:06:35

scanf("%.1f %d",&mile,&t);中%.1f改成%1f,还有price建议用double定义
#include "stdio.h"
int main()
{
      int t;
      float price,mile;
      scanf("%1f %d",&mile,&t);
      if (mile <= 3)
      {
                price=10 + t/5.0*2;
                printf("%f",price);
      }
      else if(mile>3 && mile<=10)
      {
                price=10+(mile-3)*2+t/5.0*2;
                printf("%f",price);
      }
      else
      {
                price=24+(mile-10)*3+t/5.0*2;
                printf("%d",price);
      }
      return 0;
}

王昱晨c语言 发表于 2019-10-29 18:52:51

yuweb 发表于 2019-10-28 09:06
scanf("%.1f %d",&mile,&t);中%.1f改成%1f,还有price建议用double定义

hi,我这里结果还是有问题,怎么改?

王昱晨c语言 发表于 2019-10-29 21:39:54

bin554385863 发表于 2019-10-27 15:00
双引号表示那是一个字符串字面量,
不管是单个字符还是一个字符串在if看来都是非零的为真的。
if后面的语 ...

嗯嗯,多谢,我再试试!

yuweb 发表于 2019-10-30 08:44:38

王昱晨c语言 发表于 2019-10-29 18:52
hi,我这里结果还是有问题,怎么改?

要什么结果,题目给一下,不然我也不知道你的代码逻辑正不正确

王昱晨c语言 发表于 2019-10-30 22:16:23

yuweb 发表于 2019-10-30 08:44
要什么结果,题目给一下,不然我也不知道你的代码逻辑正不正确

题目描述:
   编写程序,根据某城市普通出租车收费标准进行车费计算。标准如下:
   起步里程为3公里,起步费10元;
   超出起步里程后10公里内,每公理2元;
   超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
   营运过程中,因路阻及乘客要求临时停车等待的,按每5分钟2元计费(不足5分钟不收费)。

输入格式:共一行,包括行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔

输出格式:在一行中输出乘客应支付的车费(单位为元),结果四舍五入保留整数。

示例:
输入:40.0 7
输出: 116

王昱晨c语言 发表于 2019-10-30 22:17:08

yuweb 发表于 2019-10-30 08:44
要什么结果,题目给一下,不然我也不知道你的代码逻辑正不正确

谢了

yuweb 发表于 2019-10-31 09:17:40

本帖最后由 yuweb 于 2019-10-31 16:16 编辑

你有几个地方可能逻辑有点问题
1、题目中要求结果四舍五入保留整数,price应该是整数,四舍五入
2、营运过程中,因路阻及乘客要求临时停车等待的,按每5分钟2元计费(不足5分钟不收费)
5分钟之内是不计费的,而6分钟的话应该就要算10分钟的价钱了(每5分钟2元计费),所以应该向上取整
3、mile没有限制正数
目前考虑到这些。不大完整的话自己补充
#include <stdio.h>
#include <math.h>
int main()
{
        int t,price;
        float mile;
        scanf("%f %d",&mile,&t);
        if(mile<0){
                printf("请输入正数!\n");
                return 0;
        }
       
        if (mile>=0 && mile <= 3)
        {
                if(t<5)
                        price = 10;//不足5分钟不收费
                else
                        price = int(10+ceil(t/5.0)*2);//ceil是代表向上取整,int是代表四舍五入取整
                printf("%d\n",price);
        }
        else if(mile>3 && mile<=10)
        {
                if(t<5)
                        price = int(10+(mile-3)*2);//不足5分钟不收费
                else
                        price = int(10+(mile-3)*2+ceil(t/5.0)*2);//ceil是代表向上取整,int是代表四舍五入取整
                printf("%d\n",price);
        }
        else
        {
                if(t<5)
                        price = int(24+(mile-10)*3);//不足5分钟不收费
                else
                        price = int(24+(mile-10)*3+ceil(t/5.0)*2);//ceil是代表向上取整,int是代表四舍五入取整
                printf("%d\n",price);
        }
        return 0;
}

王昱晨c语言 发表于 2019-10-31 15:13:17

yuweb 发表于 2019-10-31 09:17
你有几个地方可能逻辑有点问题
1、题目中要求结果四舍五入保留整数,price应该是整数,四舍五入
2、营运 ...

还是不对!

54黑科技 发表于 2019-10-31 15:24:43

请问你要实现啥功能呀?

王昱晨c语言 发表于 2019-10-31 15:28:09

54黑科技 发表于 2019-10-31 15:24
请问你要实现啥功能呀?

题目描述:
   编写程序,根据某城市普通出租车收费标准进行车费计算。标准如下:
   起步里程为3公里,起步费10元;
   超出起步里程后10公里内,每公理2元;
   超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
   营运过程中,因路阻及乘客要求临时停车等待的,按每5分钟2元计费(不足5分钟不收费)。

输入格式:共一行,包括行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔

输出格式:在一行中输出乘客应支付的车费(单位为元),结果四舍五入保留整数。

示例:
输入:40.0 7
输出: 116

(谢谢!)
页: [1] 2
查看完整版本: sos!!!