题目描述
海贼小学为了强健学生的身体,每天课间都要组织学生在户外学做广播体操。 这一天,五年级三班的所有同学在老师的指引下将队形排成了 M 行 N 列。现已知所有同学 的身高,数值为整数,单位:厘米。要求在所有同学中:
挑选出每列身高最高的同学作为此列的小队长为同学们带操;
将所有同学按身高从高到低的顺序进行排队;
求出所有同学们的平均身高(要求:四舍五入保留整数);
统计出不小于平均身高的学生人数,平均身高按照第 3 问答案为准。
请同学们用计算机编程的方法来解决以上问题。
输入
输入共有 m+1 行:
第一行有:用 1 个空格隔开的两个整数M ,N ,分别代表学生的行数和列数(其中 1≤M≤10,1≤N≤10);
后 m 行有:每一行对应的是 N 列数据,表示所有学生的身高尺寸,数值为整数,单 位:厘米(其中:140 厘米 身高 170 厘米,不需判断此条件),数据之间空 1 格。
输出
输出共有 n+3 行:
前 n 行:每行一个数据为各列中身高最高的同学的高度 (要求:各列按从左到右的顺 序);
第 n+1 行:为所有同学按身高从高到低的顺序排队的高度 (要求数据之间有1个空 格);
第 n+2 行:只有一个数据为所有同学的平均身高 (要求:四舍五入,保留整数);
第 n+3 行:只有一个数据,为不小于平均身高的学生人数。
样例输入1
3 4
141 161 156 167
170 163 168 157
162 145 153 163
样例输出1
170
163
168
167
170 168 167 163 163 162 161 157 156 153 145 141
159
7
#include <iostream>
#include<algorithm>
using namespace std;
int main() {
int m,n,cnt=0;
cin >> m>>n;
int num[15][15],num2[105];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> num[i][j];
num2[cnt] = num[i][j];
cnt++;
}
}
int tall;
for (int i = 0; i < n; i++) {
tall = num[0][i];
for (int j = 1; j < m; j++) {
if (tall < num[j][i]) {
tall = num[j][i];
}
}
cout << tall<<endl;
}
sort(num2, num2 + cnt);
int sum = 0;
for (int i = cnt - 1; i >= 0; i--) {
sum += num2[i];
if (i != cnt - 1) cout << " ";
cout << num2[i];
}
cout << endl;
int ave =round(1.0 * sum / cnt);
cout << ave << endl;
int count = 0;
for (int i = cnt - 1; i >= 0; i--) {
if (num2[i] >= ave) {
count++;
}
else {
break;
}
}
cout << count << endl;
return 0;
}