说实话,这道题虽然不难,但是考人的点还是有的,我WA了一次,后来检查发现了两个错误,看网上的结题报告,发现基本每个人都错了很多次。。。这说明不只是不仔细这么简单。。。
这道题有两个考人的点:
1.1-500 miles 就说明了 0miles 就不能算跑了路,如果出现 0miles 得算0处理
2.就是四舍五入的地方,只可能出现在 “B” 中,任何整数乘以1.5,只可能是
X.5 或者 X.0,当 X.5 的时候就要进位,但是 X.0 任为整数,不能进位的。。。【四舍五入的分析和模板我会单独写在博客的其他模块中。。。】
我开始就错了这两个地方。。。(下附:题目大意以及别人的思路,以拓宽思路)
AC的代码:
#include <stdio.h> int main() { char Fcity[1000],Dcity[1000]; char classCode[100]; int miles; int result=0; while(scanf("%s",Fcity)) { if(Fcity[0]=='0') { printf("%d\n",result); //每个测试数据之前初始化 result=0; continue; } if(Fcity[0]=='#') return 0; scanf("%s%d%s",Dcity,&miles,classCode); if(miles<=0) continue; //输入结束,处理开始 if(classCode[0]=='F') result+=miles*2; //注意!!! else if(classCode[0]=='B') { if(miles*1.5==(int)(miles*1.5)) result=result+(int)(miles*1.5); else result=result+(int)(miles*1.5)+1; } else if(classCode[0]=='Y') { if(miles<=500) result+=500; else result+=miles; } } return 0; }
题意:一个飞行员为一家航空公司服务,他每次驾驶一个航班,就能按驾驶的里程数赚取一定的费用。该航空公司有3种航班,每种航班的里程数结算规则如下:First Class,里程数+100%里程数补贴;Business Class,里程数+50%里程数补贴;Economy Class,不足500按500算,500以上就算里程数。现给定一个飞行员驾驶的航班,问他最后结算时的里程数是多少。
网上别人的思路:根据题目描述,直接根据航班类型叠加即可。模拟题。注意的是,小数部分是四舍五入。其实,小数只会出现在50%里程数补贴中,+1再除以2就行。
时间: 2024-11-01 00:01:26