题意
题目传送门
- 给定 n n n 个正整数 a 1 … a n a_1 \dots a_n a1…an 。
- 你要求出最高分、最低分与平均分。
- 1 ≤ n ≤ 10000 1 \leq n \leq 10000 1≤n≤10000,平均分四舍五入保留两位小数。
做法
用打擂台的方法求出最高分与最低分。
for(int i=1;i<=n;i++)
{
//minn已事先声明为一个很大的数
//maxn已事先声明为一个很小的数
//a数组已提前声明并输入
if(a[i]<minn)
minn=a[i];
if(a[i]>maxn)
maxn=a[i];
sum+=a[i];
}
再用 int sum
储存
a
1
a_1
a1 -
a
n
a_n
an 的和,最后用 double midn
计算平均数。
for(int i=1;i<=n;i++)
{
//sum已提前清零
sum+=a[i];
}
//midn已事先声明为double类型
midn=1.0*sum/n;
AC代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a[10005],minn=1e9,maxn=-1e9;
long long sum=0;
double midn;
int n,i;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<=n;i++)
{
if(a[i]<minn) //打擂台求最小值
minn=a[i];
if(a[i]>maxn) //打擂台求最大值
maxn=a[i];
sum+=a[i]; //累加求和
}
midn=1.0*sum/n; //注意要乘1.0
cout<<maxn<<endl;
cout<<minn<<endl;
printf("%.2lf",midn);//用printf四舍五入保留两位小数输出
return 0;
}