题目的主要信息:
- 根据输入的成绩(整数),给出相应的等级:
分数 | 等级 |
---|---|
90-100 | 优秀 |
80-89 | 良 |
70-79 | 中 |
60-69 | 及格 |
0-59 | 差 |
- 可能会输入不合法的成绩,须输出"成绩不合法"
具体做法:
我们优先判断成绩是否在0-100范围之内,如果不在则不合法,我们只对合法成绩判断类别。
注意到等级只与成绩的十位数相关,因此我们用switch,其中的变量不是分数,而是,只取到成绩的十位数,然后用case判别每一种相应的输出等级,其中优先有case=10和case=9两种情况,60分以下的用default包含。
#include <iostream>
using namespace std;
int main() {
int score;
cin >> score;
if(score < 0 || score > 100) //优先判断成绩是合法
cout << "成绩不合法" << endl;
else{ //对于合法的成绩再判断等级
switch(score / 10){ //除10取十位数
case 10: case 9: //90-100
cout << "优秀" << endl; break;
case 8: //80-89
cout << "良" << endl; break;
case 7: //70-79
cout << "中" << endl; break;
case 6: //60-69
cout << "及格" << endl; break;
default: //0-59
cout << "差" << endl;
}
}
return 0;
}
复杂度分析:
- 时间复杂度:,直接判断,常数时间
- 空间复杂度:,无额外空间