呼和浩特市网站建设_网站建设公司_搜索功能_seo优化
2026/1/1 9:39:11 网站建设 项目流程

【题目来源】
https://oj.czos.cn/p/1314

【题目描述】
四年级二班女同学在体育课上进行了一轮仰卧起坐测试。成绩计算表如下。

一分钟内做仰卧起坐的个数  成绩<20个                  F20~29个                 E30~39个                 D40~49个                 C50~59个                 B>=60个                  A

请从键盘读入 n 位同学的在一分钟内做仰卧起坐的数量,计算出每个成绩区间的人数,按照人数降序排序,如果有多个成绩区间人数一样多,那么先输出成绩较好的区间。

【输入格式】
第一行是一个整数 n 代表同学的人数(n≤100);
第二行是 n 个同学一分钟完成仰卧起坐的数量。

【输出格式】
输出 6 行为 6 个成绩区间的人数,每行按照“成绩:人数”的格式输出,按照人数降序输出。

【输入样例】
10
19 18 17 20 21 28 30 45 48 51

【输出样例】
E:3
F:3
C:2
B:1
D:1
A:0

【数据范围】
n≤100

【算法分析】
● 本题中,字典序越小的字母,对应的成绩越好。
● 注意“选择结构”的灵活运用。
● 按结构体某一字段对结构体数组进行排序:https://blog.csdn.net/hnjzsyjyj/article/details/120184972

【算法代码】

#include <bits/stdc++.h>
using namespace std;struct Person {int cnt;char rnk;
} p[6];bool cmp(Person x,Person y) {if(x.cnt!=y.cnt) return x.cnt>y.cnt;return x.rnk<y.rnk;
}int main() {int n;cin>>n;for(int i=0; i<6; i++) p[i].rnk='A'+i;for(int i=0; i<n; i++) {int x;cin>>x;if(x<20) p[5].cnt++;else if(x<30) p[4].cnt++;else if(x<40) p[3].cnt++;else if(x<50) p[2].cnt++;else if(x<60) p[1].cnt++;else p[0].cnt++;}sort(p,p+6,cmp);for(int i=0; i<6; i++) {cout<<p[i].rnk<<":"<<p[i].cnt;cout<<endl;}return 0;
}/*
in:
10
19 18 17 20 21 28 30 45 48 51out:
E:3
F:3
C:2
B:1
D:1
A:0
*/





【参考文献】
https://blog.csdn.net/jht0105/article/details/135998672
https://blog.csdn.net/m0_69389639/article/details/146261239



需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询