2003-成绩转换
- Problem Description
输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下:
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;
- Input
输入数据有多组,每组占一行,由一个整数组成。
- Output
对于每组输入数据,输出一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。
- Sample Input
56
67
100
123
- Sample Output
E
D
A
Score is error!
这道题开始每个人的风格就开始体现出来了。看到这个一看就是上课老师用来将SWITCH的例题了。当然了有些铁头娃还是会有if else来写那也是没办法的辣,不过幸好分的情况还是比较少的。我贴两个代码,一个是我的一个是别人的。
#include<stdio.h>
int main(void)
{
int a,b;
while(scanf("%d",&a)!=EOF)
{
if(a<0||a>100)
printf("Score is error!\n");
else
{
b=a/10;
switch(b)
{
case 10:
case 9: printf("A\n");break;
case 8: printf("B\n");break;
case 7: printf("C\n");break;
case 6: printf("D\n");break;
default:printf("E\n");break;
}
}
}
return 0;
}
#include <stdio.h>
void main()
{
int t;
int grade;
while(EOF != scanf("%d",&t))
{
if(t < 0 || t> 100)
{
printf("Score is error!\n");
}
else
{
grade = t/10;
switch (grade)
{
case 10:
case 9:
printf("A\n");
break;
case 8:
printf("B\n");
break;
case 7:
printf("C\n");
break;
case 6:
printf("D\n");
break;
default:
printf("E\n");
break;
}
}
}
//system("pause");
}
在最主干的部分其实这两个代码并没有区别。但是风格一目了然。看过几个我代码的,一看上面那个就是我的了。我的主张就是不会让代码显得特别瘦。因为给人感觉很不好。适当的长度,一行之内留有足够的信息量,不要老是让人上下捕捉。
在这个代码里面我们首先要确定的是成绩对应的是什么,是十位数上的数,除了一百。然后我们知道计算机的整数除法是什么样的规则,这道题的第一个难点就过去了。然后是第二个。从哪里开始算,从0到10还是10到0;看等地分布,我们知道了0到5是E那我们自然把这类分到default,那我们就从10到0来输出。然后记住break就行了。