当前位置:   article > 正文

【杭电OJ】Problem-2004 成绩转换题析坑点_oj成绩转换问题

oj成绩转换问题

前言

题目链接:Problem-2004 成绩转换

注:因为本题其实并不难,主要是通过本题来分析我们遇到一个问题后的处理方法,找寻边界条件等

题目描述

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

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!

题解分析

很显然,就是简单的一个对应输出

ok,这种情况我们想到的第一个念头就是swtich-case

代码附上

#include <iostream>
using namespace std;
int main(){
    int a;
    while(cin>>a){
        string res;
        switch(a/10){
            case 9: res = "A";break;
            case 8: res = "B";break;
            case 7: res = "C";break;
            case 6: res = "D";break;
            case 5: 
            case 4:
            case 3:
            case 2:
            case 1:
            case 0: res = "E";break;
            default : res = "Score is error!"; break;
        }
        cout<<res<<endl;
    }
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

submit,

and Wrong Answer

哟西,这一波就有点sao了,讲道理,我们也考虑到了100分的这种情况,同时也考虑到了“Score is error!”的情况,那是什么原因呢?

好吧,那我们来试一波为else if的题解

#include <iostream>
using namespace std;
int main(){
    int a;
    while(cin>>a){
        if(a>=90 && a<=100){
            cout<<'A'<<endl;
        } else if(a >=80 && a<90){
            cout<<'B'<<endl;
        } else if(a>=70 && a<80){
            cout<<'C'<<endl;
        } else if(a>=60 && a<70){
            cout<<'D'<<endl;
        } else if(a>=0 && a<60){
            cout<<'E'<<endl;
        } else{
            cout<<"Score is error!"<<endl;
        }
    }
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

sumit

and ,Accepted.

这一波又为什么能够AC呢,

坑点分析

我们仔细分析一下:其实我们的思路肯定是没有问题的,那肯定是关于边界细节或者资源的问题

因为博主很久没有刷题的原因,对于Switch的消耗资源不是很清楚了,我搜了下资料,暂且不说Switch对于资源消耗其实很低很低,就问题本身而言,这个输入规模相当的小,再加上OJ并没有报资源耗尽的信息,

我们排除关于资源消耗尽的原因

那么,我们应该是有一些边界条件没有考虑到。

经过了多个数据的测试,发现,

原来我们忘记考虑100和110之间的数了,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/645511
推荐阅读
相关标签
  

闽ICP备14008679号