主题:难题
神秘-赛尔
[专家分:170] 发布于 2010-10-30 21:41:00
[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 楼
verysmartboy [专家分:1260] 发布于 2010-11-14 20:19:00
星期天上午小明乘出租车去本市的外婆家。出租车计价方案为: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 楼
verysmartboy [专家分:1260] 发布于 2010-11-14 20:22:00
[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 楼
幽灵密码 [专家分:3510] 发布于 2010-11-15 21:35:00
洪天逸,你这个8行,有三行用冒号连接,我的就六行
我的不太好理解,但是至少简便多了。用关系表达式
14 楼
幽灵密码 [专家分:3510] 发布于 2010-11-15 21:35:00
而且你的程序出错了,人家说精确到一位,也就是说输出时,6就是6.0
15 楼
幽灵密码 [专家分:3510] 发布于 2010-11-15 21:47:00
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 楼
幽灵密码 [专家分:3510] 发布于 2010-11-15 21:52:00
[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 楼
verysmartboy [专家分:1260] 发布于 2010-11-15 22:17:00
行了,大妈!你别唠叨了!我改!你看看!按你方法改的!
你看你这一大老爷们咋这样呢?唉……多少爷们罗嗦中…………
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 楼
verysmartboy [专家分:1260] 发布于 2010-11-15 22:21:00
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 楼
幽灵密码 [专家分:3510] 发布于 2010-11-16 17:46:00
没有我的简单哦
20 楼
verysmartboy [专家分:1260] 发布于 2010-11-17 20:37:00
这题还好,不难,就是有点绕人!我看这个和打印机差不多,明明就是原样输出题目却有5,6行。
我来回复