习题解析之:百分制成绩转换五分制E
【问题描述】
编写一个学生成绩转换程序,用户输入百分制的学生成绩,成绩大于等于90且小于等于100的输出为A,成绩大于或等于80且小于90的输出为B,成绩大于或等于70且小于80的输出为C,成绩大于或等于60且小于70的输出为D,成绩小于60且大于等于0的输出为E,如果输出的成绩大于100或小于0,输出data error!。
输入格式
输入一个数字,代表百分制成绩。
输出格式
A、B、C、D、E中的一个字母,表示五分制的成绩等级;或输出data error!
示例
输入:
88
输出:
B
输入:
-5
输出:
data error!
【编程思路1】
按题目描述,输入的成绩有6种情况,有效的百分制成绩(0~100)分为5个等级(对应5种情况),还有一种是输入错误的成绩。可以采用分支结构(多分支)来编写程序,条件采用比较运算表达式来描述。编写的源程序如下:

【编程思路2】
还是采用分支结构来编写程序,由于有效的百分制成绩是一个整数,条件可以采用 range() 来描述。编写的源程序如下:

【编程思路3】
我们可以将输入的成绩看成两种情况,一种是有效的百分制成绩(0~100),一种是输入错误的成绩。一个有效的百分制成绩 score整除 10 后,结果为 0 ~10 这11个整数中的一个。
0~9 分的成绩整除10后,结果为0,对应的等级为 E;10~19 分的成绩整除10后,结果为1,对应的等级为 E;……;80~89 分的成绩整除10后,结果为8,对应的等级为 B;90~99 分的成绩整除10后,结果为9,对应的等级为 A;100 分的成绩整除10后,结果为10,对应的等级为 A。
这样,预先构造好一个字符串 degree = 'EEEEEEDCBAA',输入有效的百分制成绩score 对应的等级就是 degree[score // 10],直接输出即可。
按这种思路编写的源程序如下:

【编程思路4】
可以将上面的双分支程序用条件表达式来改写,编写的源程序如下:

浙公网安备 33010602011771号