hdu 2004 成绩转换

hdu 2004 成绩转换

link

题目描述

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 185104 Accepted Submission(s): 80860

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!

Author
lcy

问题解答

以下给出自己用的两种代码:
方法一:(switch语句判断)

#include <stdio.h>

int main()
{
    int t;
    while(scanf("%d",&t)!=EOF)
    {
      if(t>100||t<0) printf("Score is error!\n");
      else
      {
          switch(t/10)
            {
                case 0 ... 5: printf("E\n");break;
                case 6:printf("D\n");break;
                case 7:printf("C\n");break;
                case 8:printf("B\n");break;
                case 9 ... 10: printf("A\n");break;
                default:printf("Score is error!\n");break;
            }
      }
    }
    return 0;
}

笔记1

  1. 第8行,必须加上这个判断语句if(t>100||t<0) printf(“Score is error!\n”);如果单用switch(t/10),会导致-1~-9数据测试失败,结果失真。
  2. 第11行,switch语句常用于断点式判断,但不可能写case 0,case 1,case 2,……,case 100一百多个判断吧。所以用t/10来实现,此处t为整形,那么t/10意味着取整;若t是float型之类的,则t/10就是一般意义上的除法。
  3. switch语句的每个case后面通常来说要加break语句跳出循环(太基础了,书上一般都会有讲解,在这里就不解释了)。此外,case后面跟的多条语句可以不用{花括号}括起来。

方法二:(if…else if语句判断)

#include <stdio.h>
int main()
{
 int t;
 while(scanf("%d",&t)!=EOF)
 {
  if(t<=100&&t>=90) printf("A\n");
  else if(t<=89&&t>=80) printf("B\n");
  else if(t<=79&&t>=70) printf("C\n");
  else if(t<=69&&t>=60) printf("D\n");
  else if(t<=59&&t>=0) printf("E\n");
  else printf("Score is error!\n");
 }
 return 0;
}

笔记2

  1. 此道题用这种做法明显更为简便以及可视化程度高。

PS:悄悄地在最后吐槽一下,这个毒瘤题目耗了我一天的时间QAQ。题目没有看清楚,一直想歪了,幻想着测试文件会给出一个字母或者其他非数字内字符进行测试。然后就想用scanf("%d",&t)==1来判断用户输入的是不是规定的数字,如果不是,就用getchar()吞掉。但问题是必须要同时保证该程序可以输入多组数据,直至测试文件结束,那就意味着我必须要用scanf("%d",&t)!=EOF来判断,即意味着我必须把一个字符输入两遍才能判断,否则会出现漏字符没有判断的情况!更毒瘤的是学长规定必须要用c语言来写,至今没有想到用c语言同时解决两者的办法。如果有大佬的代码调试成功,欢迎来讨论>- . -<

posted @ 2018-10-19 09:30  Sherry_Yue  阅读(167)  评论(0编辑  收藏  举报