HDU2014 青年歌手大赛_评委会打分
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n;
while(cin >> n)
{
int sum = 0;
int a;
cin >> a;
int max = a;
int min = a;
sum += a;
for(int i=1; i<n; i++)
{
cin >> a;
if(a < min)
{
min = a;
}
if(a > max)
{
max = a;
}
sum += a;
//cout << max << " " << min << " " << sum << endl;
}
double ave = (double)(sum-min-max)/(n-2);
//cout << sum << " " << ave << endl;
printf("%.2f\n", ave);
}
return 0;
}
刚开始没有看到去掉一个最高分和一个最低分,导致错误,后来在计算平均值的时候分子减掉了max和min但是分子忘记减2.。。
#include <iostream>
#include <cstdio>
#include <cstring>
int a[101] = {0};
using namespace std;
int main()
{
int n;
while(cin >> n)
{
int max = 0;
int min = 100;
double sum = 0.0;
for(int i=0; i<n; i++)
{
cin >> a[i];
if(a[i] < min)
{
min = a[i];
}
if(a[i] > max)
{
max = a[i];
}
sum += a[i];
}
printf("%.2f\n", (sum-max-min)/(n-2));
memset(a, 0, sizeof(a)); //数组清零
}
return 0;
}
注意memset
的用法
常见为数组初始化,memset(a, 0, sizeof a),表明为数组a的从第0个元素开始的位置起向后直到最后一个元素为止都赋值为0;