初识记录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;
}

​

​

发现还是有很多牛逼惊奇的解法的。省时省力还能保头发。。。

全部评论

相关推荐

gcniz:一天写两千行你闹呢
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务