2018年CSP-X复赛真题及题解(T3:统计成绩)
题目描述
考试结束之后,每位同学都依据成绩获得相应的等级:
- 优秀: 90 ∼ 100 90\sim 100 90∼100;
- 良好: 80 ∼ 89 80\sim 89 80∼89;
- 及格: 60 ∼ 79 60\sim79 60∼79;
- 不及格: 60 60 60 以下。
现在,需要统计一下获得每个等级的人数分别是多少。
输入格式
第一行,一个正整数 n n n,表示总人数。
第二行, n n n 个由空格隔开的整数,表示每个同学的成绩( 0 ∼ 100 0\sim100 0∼100)。
输出格式
共四行,每行一个整数,依次表示获得优秀、良好、及格、不及格等级的人数。
输入输出样例 1
输入 1
10
93 33 86 81 47 82 84 92 73 94
输出 1
3
4
1
2
说明/提示
对于 100 % 100\% 100% 的数据,满足 1 ≤ n ≤ 10 5 1\leq n\leq 10^5 1≤n≤105,每位同学的分数在 0 ∼ 100 0\sim 100 0∼100 之间。
思路分析
题目要求统计四个分数段(优秀、良好、及格、不及格)的人数。
- 输入总人数
n,然后依次读取每个分数。 - 使用四个计数器分别记录四个等级的人数。
- 对于每个分数,按以下条件判断:
- 若分数在 90~100,优秀计数器加 1;
- 否则若在 80~89,良好计数器加 1;
- 否则若在 60~79,及格计数器加 1;
- 否则(0~59)不及格计数器加 1。
- 最后按顺序输出四个计数器的值。
时间复杂度 O(n),空间复杂度 O(1),满足 n ≤ 10⁵ 的要求。
代码实现
cpp
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
cin>>n;
int a=0,b=0,c=0,d=0;//分别统计优秀、良好、及格、不及格人数
for(int i=1;i<=n;i++){//循环读入每个分数
int s;//当前分数
cin>>s;//输入分数
if(s>=90) a++;//优秀
else if(s>=80) b++;//良好
else if(s>=60) c++;//及格
else d++;//不及格
}
cout<<a<<"\n"<<b<<"\n"<<c<<"\n"<<d;//按顺序输出四个等级人数
return 0;
}
功能分析
- 输入处理 :先读入人数
n,然后通过for循环依次读入n个成绩。 - 等级分类 :利用
if-else if结构,根据分数区间累加对应的计数器。由于else if的顺序性,s>=90优先判断优秀,之后s>=80排除掉 90 以上,以此类推,最终覆盖所有 0~100 的整数。 - 输出结果:按题目要求的四行顺序输出优秀、良好、及格、不及格人数,每个数字占一行。
更多内容请关注专栏:信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新): https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转
【秘籍汇总】(完整csp信奥赛C++学习资料):
1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):
https://edu.csdn.net/lecturer/7901 点击跳转

2、CSP信奥赛C++竞赛拿奖视频课:
https://edu.csdn.net/course/detail/40437 点击跳转

https://edu.csdn.net/course/detail/41081 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:
CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转
CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转
信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转
4、csp信奥赛冲刺一等奖有效刷题题解:
信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转
信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新): https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转
信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转
5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转
· 文末祝福 ·
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"跟着王老师一起学习信奥赛C++";
cout<<" 成就更好的自己! ";
cout<<" csp信奥赛一等奖属于你! ";
return 0;
}
