Ykqccc @ 2020-09-30 17:28:40
#include<stdio.h>
int main()
{
int i,n,a[1001],max,min,t,sum=0,sum_maxmin=0;
float p;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
max=min=a[0];
for(i=1;i<=n;i++){
if(max<a[i])
{
max=a[i];
}
if(min>a[i])
{
min=a[i];
}
}
sum_maxmin=max+min;
for(i=1;i<=n;i++)
{
sum+=a[i];
}
sum=sum-sum_maxmin;
p=sum/(float)(n-2);
printf("%.2f",p);
}
by Baiwhiter @ 2020-09-30 17:44:05
第一个不一定是最大值/最小值,所以建议先排序 比如说你取了第一个数,如果第一个数是1,那么久不会是最大值,而可能是最小值,所以你的最大值久不会得到更新。(望有帮助) 我的debug代码(建议先将数据排序]
#include<stdio.h>
#include<algorithm>
using namespace std;//改用了C++
int main()
{
int i,n,a[1001],max,min,t,sum=0,sum_maxmin=0;
float p;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&a[i]);
sum+=a[i];//避免下面重复运算,将累加循环去除
}
sort(a+1,a+n+1);//采用算法库中的排序函数,将其从小到大排序;
//max=min=a[0];
// for(i=1;i<=n;i++){
// if(max<a[i])
// {
// max=a[i];
// }
// if(min>a[i])
// {
// min=a[i];
// }
// }
//以上省略是因为已经排序,故可以确定最大最小值
min=a[1];
max=a[n];//赋值
sum_maxmin=max+min;
// for(i=1;i<=n;i++)
// {
// sum+=a[i];
// }
//上面已经解释
sum=sum-sum_maxmin;//去掉最大最小值
p=sum/(float)(n-2);
printf("%.2f",p);
return 0;//加上!!!!
}
by する @ 2020-09-30 17:46:55
max,min没赋值
max=-1;
min=1e9;
#include<stdio.h>
int main()
{
int i,n,a[1001]={0},max=0,min=1e9,t,sum=0,sum_maxmin=0;
float p;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<=n;i++){
if(max<a[i])
{
max=a[i];
}
if(min>a[i])
{
min=a[i];
}
}
sum_maxmin=max+min;
for(i=1;i<=n;i++)
{
sum+=a[i];
}
sum=sum-sum_maxmin;
p=sum/(float)(n-2);
printf("%.2f",p);
}
by する @ 2020-09-30 17:48:55
下面是我的代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,a[1005],sum=0,mini=1e9,maxi=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum=sum+a[i];
mini=min(mini,a[i]);
maxi=max(maxi,a[i]);
}
cout<<setprecision(2)<<fixed<<(double)(sum-mini-maxi)/(n-2);
}
by Baiwhiter @ 2020-09-30 17:55:06
如果用c
#include<stdio.h>
int k[11];
int i,n,a[1001],max,min,t,sum=0,sum_maxmin=0;
float p;//改为全局变量以便排序
void sort(){
for(int i=1;i<=n;i++){
k[a[i]]++;
}
int x=1;
for(int i=0;i<=10;i++){//因为打分是0-10
if(k[i])
for(int j=k[i];j>0;j--){
a[x]=i;
x++;
}
}
}//若用c,桶排序
int main()
{
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&a[i]);
sum+=a[i];//避免下面重复运算,将累加循环去除
}
sort();//排序
//max=min=a[0];
// for(i=1;i<=n;i++){
// if(max<a[i])
// {
// max=a[i];
// }
// if(min>a[i])
// {
// min=a[i];
// }
// }
//以上省略是因为已经排序,故可以确定最大最小值
min=a[1];
max=a[n];//赋值
sum_maxmin=max+min;
// for(i=1;i<=n;i++)
// {
// sum+=a[i];
// }
//上面已经解释
sum=sum-sum_maxmin;//去掉最大最小值
p=sum/(float)(n-2);
printf("%.2f",p);
return 0;//加上!!!!
}
by in_ung_zs @ 2020-09-30 18:38:51
OK
by YksKuusiTAlv @ 2020-10-01 00:38:38
没有必要开数组吧
#include<bits/stdc++.h>
using namespace std;
int main()
{
double n,a,maxn=0,minn=10,sum=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
sum+=a;
maxn=max(maxn,a);
minn=min(minn,a);
}
sum-=maxn;sum-=minn;
cout<<fixed<<setprecision(2)<<sum/(n-2);
}