题目描述
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
请计算这次考试的最高分、最低分和平均分。
输入描述
输入的第一行包含一个整数 n\ (1 ≤ n ≤ 10^4)n (1≤n≤10 4 ),表示考试人数。
接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出描述
输出三行。
第一行包含一个整数,表示最高分。
第二行包含一个整数,表示最低分。
第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。
实现代码
#include <iostream>
#include<math.h>
#include<iomanip>
using namespace std;
int fmax(int *a,int n)
{
int max=0;
for(int i=0;i<n;i++)
{
if(a[i]>max)
{
max=a[i];
}
}
return max;
}
int fmin(int *a,int n)
{
int min=101;
for(int i=0;i<n;i++)
{
if(a[i]<min)
{
min=a[i];
}
}
return min;
}
double faver(int *a,int n)
{
double average;
int sum=0;
for(int i=0;i<n;i++)
{
sum=sum+a[i];
}
average=round(1.0*sum*100/n)/100;
return average;
}
int main()
{
// 请在此输入您的代码
int n;
cin>>n;
int grade[n];
for(int i=0;i<n;i++)
{
cin>>grade[i];
}
cout<<fmax(grade,n)<<endl;
cout<<fmin(grade,n)<<endl;
cout<<fixed<<setprecision(2)<<faver(grade,n)<<endl;
return 0;
}
注意点
这个就很奇怪……
在实现 average=round(1.0*sum*100/n)/100;
一句时,开始写的是 average=round(sum*100/n*1.0)/100;
,结果只通过了三个用例。后来改成上一句,就全部正确通过。
以及遇到小数的时候都设置成 double
。一定注意整数除整数的情况。
知识点
- 四舍五入函数
round()
的正常使用方法,以及输出特定位小数的使用方法。 cout
输出特定位数的小数:cout<<fixed<<setprecision(2)<<faver(grade,n)<<endl;
,同时需要加头文件#include <iomanip>
。