解题思路:
容器选择list,便于排序,且不用确定容器大小
A,B,C,D,E四个容器的元素都是对应分段的成绩,依次读入成绩并存入相应容器即可
重点是怎么快速得到人数最多的等级段,这里我们可以写一个返回值为list的比较函数,然后重复调用即可
代码很易懂,重点是学习返回值为list的函数的写法
注意事项:
无论是函数原型还是参数类型,list后尖括号内的元素类型一定不能少!!
参考代码:
#include<bits/stdc++.h> using namespace std; int n, o; std::list<int> A, B, C, D, E; list<int> f(list<int> a, list<int> b) { if (a.size() > b.size()) return a; else return b; } int main(void) { cin >> n; for (int i = 0; i < n; i++) { cin >> o; if (o <= 100 && o >= 90) A.push_back(o); else if (o <= 89 && o >= 80) B.push_back(o); else if (o <= 79 && o >= 70) C.push_back(o); else if (o <= 69 && o >= 60) D.push_back(o); else E.push_back(o); } cout << A.size() << ' ' << B.size() << ' ' << C.size() << ' ' << D.size() << ' ' << E.size() << endl; list<int> ee = f(f(f(f(A, B), C), D), E); cout << ee.size() << endl; ee.sort(); while (!ee.empty()) { cout << ee.back() << ' '; ee.pop_back(); } return 0; }
0.0分
1 人评分
C语言训练-计算t=1+1/2+1/3+...+1/n (C语言代码)浏览:502 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1053 |
Hello, world! (C语言代码)浏览:1202 |
C语言程序设计教程(第三版)课后习题8.3 (C语言代码)浏览:638 |
C语言训练-数字母 (C语言代码)浏览:608 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:470 |
C语言训练-自守数问题 (C语言代码)浏览:748 |
简单的a+b (C语言代码)浏览:541 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:519 |
上车人数 (C语言代码)浏览:713 |