初识记录HDU2004
刚刚开始学C 记录一下做题过程中的作为菜鸡看到的惊奇解法
本人对于这题就是暴力if-else
#include<stdio.h>
int main()
{
int score;
while(scanf("%d", &score) != EOF){
if(score <= 100 && score >= 90)
printf("A\n");
else if(score <= 89 && score >= 80)
printf("B\n");
else if(score <= 79 && score >= 70)
printf("C\n");
else if(score <= 69 && score >= 60)
printf("D\n");
else if(score <= 59 && score >= 0)
printf("E\n");
else
printf("Score is error!\n");
}
return 0;
}
看起来很差,实际上我觉得运行时间也要很长。于是搜索看到了一位大神的神奇解法:
/* HDU2004 成绩转换 */
#include <stdio.h>
int main(void)
{
int score;
char convert[] = "EEEEEEDCBAA";
while(scanf("%d", &score) != EOF) {
if(score < 0 || score > 100)
printf("Score is error!\n");
else
printf("%c\n", convert[score/10]);
}
return 0;
}
---------------------
作者:海岛Blog
因为switch听起来太猥琐了。。。所以就弃了。。不过还是贴一下吧
#include<stdio.h>
int main()
{
int score;
while(scanf("%d", &score) != EOF){
if(score < 0 || score > 100)
printf("Score is error!\n");
else{
score = score / 10;
switch(score){
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;
}
发现还是有很多牛逼惊奇的解法的。省时省力还能保头发。。。