写在前面:这里是小王成长日志,一名在校大学生,想在学习之余将自己的学习笔记分享出来,记录自己的成长轨迹,帮助可能需要的人。欢迎关注与留言。
题目:
题目链接:https://www.dotcpp.com/oj/problem1500.html
题目 1500: [蓝桥杯][算法提高VIP]分数统计
时间限制: 1Sec 内存限制: 128MB 提交: 1541 解决: 709
题目描述
给定一个百分制成绩T,将其划分为如下五个等级之一:
90100为A,8089为B,7079为C,6069为D,0~59为E
现有若干百分制成绩(成绩个数不超过1000个),请你统计五个等级段的人数,并找出人数最多的那个等级段,按照从大到小的顺序输出该段中所有人成绩(保证人数最多的等级只有一个)。
输入
第一行是成绩的个数 n
第二行是学生的成绩,若干0~100的正整数,用空格隔开
输出
第一行为5个正整数,分别表示A,B,C,D,E五个等级段的人数
第二行一个正整数,表示人数最多的等级段中人数
接下来一行若干个用空格隔开的正整数,表示人数最多的那个等级中所有人的分数,按从大到小的顺序输出。
样例输入
10
100 80 85 77 55 61 82 90 71 60
样例输出
2 3 2 2 1
3
85 82 80
C语言解法
思路:
1.一个很正常的输入,根据输入的n创建5个数组来存储相应等级的分数,并在读取输入的时候就进行判断以将数据放进相应等级的数组
2.输入完成,这时已经有了5个数组并且我们知道其长度
- 这时我们分为两步,1是找出这五个长度中的最大值,这里我直接用了暴力的if判断,应有更简单的方法
- 对长度最大的数组进行排序并输出
注意:1.注意输出格式.2.排序并输出数组的部分明显是重复的,可以抽象成一个函数以便调用
#include <stdio.h>
int main()
{
int n, temp = 0;
scanf("%d", &n);
int a[n], b[n], c[n], d[n], e[n];
int ac = 0,