- 给定 n 组数,每组数中有 k 个数,求每组 k 个数的平均值,并输出平均值最大的两组数的编号,如果平均值相同就按id的先后输出。
- 要求 k 个数的平均值,我们可以用一个变量累加后除以 k,再建立变量来存储输入的先后,也就是编号。
- 结构体里面定义两个变量,分别表示每组数的编号和平均值
- 再写一个函数来设定排序方式,先判断平均值是否相等,如果相等就按编号从小到大排序,否则就按平均值从大到小排序
- 最后输出数组的第一项和第二项的编号即可。
- 浮点数要除以浮点数,才能找到平均数
$
- 定义结构体
- 结构体里面定义两个变量,分别表示每组数的编号和平均值
- 再写一个函数来设定排序方式,先判断平均值是否相等,如果相等就按编号从小到大排序,否则就按平均值从大到小排序
- 最后输出数组的第一项和第二项的编号即可。
#include<bits/stdc++.h>
using namespace std;
int n,k;
struct st{
int id,pjz;
}a[105];
int cmp(st x,st y){
if(x.pjz==y.pjz) return x.id<y.id;
else return x.pjz>y.pjz;
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
int ans=0;
a[i].id=i;
for(int j=1;j<=k;j++){
int sum;
cin>>sum;
ans+=sum;
}
a[i].pjz=ans*1.0/k*1.0;
}
sort(a+1,a+n+1,cmp);
cout<<a[1].id<<endl<<a[2].id;
return 0;
}
多读几遍,理解题意,才能知道需要什么步骤