回 帖 发 新 帖 刷新版面

主题:难题

[b]星期天上午小明乘出租车去本市的外婆家。出租车计价方案为:2公里以内起步价是6元,超过2公里之后按1.8元/公里计价,超过10公里之后在1.8元/公里的基础上加价50%,另外,停车等候则按时间计费:1元/3分(注:不满3分钟不计费)。已知:小明到外婆家路程为N公里,中间停车等候时间总共M分钟,请计算小明到外婆家的出租车费用是多少元? 输入:N M(N,M都是整数) 输出:一个实数(表示车费,精确到0.1元) 例如:输入:8 7 输出:18.8[/b][i]星期天上午小明乘出租车去本市的外婆家。出租车计价方案为:2公里以内起步价是6元,超过2公里之后按1.8元/公里计价,超过10公里之后在1.8元/公里的基础上加价50%,另外,停车等候则按时间计费:1元/3分(注:不满3分钟不计费)。已知:小明到外婆家路程为N公里,中间停车等候时间总共M分钟,请计算小明到外婆家的出租车费用是多少元? 输入:N M(N,M都是整数) 输出:一个实数(表示车费,精确到0.1元) 例如:输入:8 7 输出:18.8[/i]

回复列表 (共22个回复)

11 楼

星期天上午小明乘出租车去本市的外婆家。出租车计价方案为:2公里以内起步价是6元,超过2公里之后按1.8元/公里计价,超过10公里之后在1.8元/公里的基础上加价50%,另外,停车等候则按时间计费:1元/3分(注:不满3分钟不计费)。已知:小明到外婆家路程为N公里,中间停车等候时间总共M分钟,请计算小明到外婆家的出租车费用是多少元? 输入:N M(N,M都是整数) 输出:一个实数(表示车费,精确到0.1元) 例如:输入:8 7 输出:18.8
洪天逸原创答案:
CLS
INPUT N,M
C=0:A=(1.8+1.8*0.5)*(N-2):B=1.8*(N-2)
IF M >= 3 THEN C=C+INT(M/3)
IF N>10 THEN C=C+6+A:GOTO AA:
IF N<10 AND N>2 THEN C=C+6+B:GOTO AA:
C=C+6:GOTO AA
AA:
IF C=FIX(C) THEN PRINT LTRIM$(STR$(C));".0" ELSE PRINT LTRIM$(STR$(C));
END
  

12 楼

[quote]cls
input n,m
select  case n
 case >10 
 s=(6+(n-2)*1.8)* 1.5
 case > 2 amd <10
 s=(6+(n-2)*1.8)
 case else
 s=6
end select
if m>= 3 then s=m*3+s
s=int (s*10)
print s
end[/quote]


孙啸,你这个好像出错了吧,不是m*3啊!是除以三!我试过了你的,答案是两百多,出了一点小问题。

13 楼

洪天逸,你这个8行,有三行用冒号连接,我的就六行
我的不太好理解,但是至少简便多了。用关系表达式

14 楼

而且你的程序出错了,人家说精确到一位,也就是说输出时,6就是6.0

15 楼

CLS
INPUT n, m
p = 6 + ABS(n > 2) * 1.8 * (n - 2) + ABS(n > 10) * .9 * (n - 10) + m \ 3
PRINT LTRIM$(STR$(p)); : IF FIX(p) = p THEN PRINT ".0"
END

进一步简化

16 楼

[quote]星期天上午小明乘出租车去本市的外婆家。出租车计价方案为:2公里以内起步价是6元,超过2公里之后按1.8元/公里计价,超过10公里之后在1.8元/公里的基础上加价50%,另外,停车等候则按时间计费:1元/3分(注:不满3分钟不计费)。已知:小明到外婆家路程为N公里,中间停车等候时间总共M分钟,请计算小明到外婆家的出租车费用是多少元? 输入:N M(N,M都是整数) 输出:一个实数(表示车费,精确到0.1元) 例如:输入:8 7 输出:18.8
洪天逸原创答案:
CLS
INPUT N,M
C=0:A=1.8*0.5*(N-2):B=1.8*(N-2)
IF M > 3 THEN C=C+INT(M/3)
IF N>10 THEN C=C+6+A:PRINT C:END
IF N<10 AND N>2 THEN C=C+6+B:PRINT C:END
PRINT C+6
END
  
[/quote]
IF M > 3 THEN C=C+INT(M/3) 这里能直接简化成C=C+M\3,这样如果不足3,就是C+0
IF N>10 THEN C=C+6+A:PRINT C:END 这一句程序错误,大于十反而只要付半价?

IF N>10 THEN C=C+6+A:PRINT C:END
IF N<10 AND N>2 THEN C=C+6+B:PRINT C:END
PRINT C+6
这里出现了很多PRINT C,直接一句GOTO不就行了?

17 楼


行了,大妈!你别唠叨了!我改!你看看!按你方法改的!
你看你这一大老爷们咋这样呢?唉……多少爷们罗嗦中…………
CLS
INPUT N,M
C=0:A=(1.8+1.8*0.5)*(N-2):B=1.8*(N-2)
IF M > 3 THEN C=C+INT(M/3)
IF N>10 THEN C=C+6+A:GOTO AA:
IF N<10 AND N>2 THEN C=C+6+B:GOTO AA:
C=C+6:GOTO AA
AA:
IF C=FIX(C) THEN PRINT LTRIM$(STR$(C));".0" ELSE PRINT LTRIM$(STR$(C));
END


亲爱的唐铭康先生,我GOTO加了,简化了,整数部分加点零也考虑到了,还有什么问题吗?

18 楼

CLS
INPUT N,M
C=0:A=(1.8+1.8*0.5)*(N-2):B=1.8*(N-2)
IF M >= 3 THEN C=C+INT(M/3)
IF N>10 THEN C=C+6+A:GOTO AA:
IF N<10 AND N>2 THEN C=C+6+B:GOTO AA:
C=C+6:GOTO AA
AA:
IF C=FIX(C) THEN PRINT LTRIM$(STR$(C));".0" ELSE PRINT LTRIM$(STR$(C));
END
  

19 楼

没有我的简单哦

20 楼


这题还好,不难,就是有点绕人!我看这个和打印机差不多,明明就是原样输出题目却有5,6行。

我来回复

您尚未登录,请登录后再回复。点此登录或注册