1234ss @ 2022-11-07 17:00:10
include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int number,a,c=0;
scanf("%d",&number);
float example[number],max,min,sum=0,max2;
for(a=0;a<number;a++)
{scanf("%f",&example[a]);}
min=max=example[0];
for(a=1;a<number;a++)
{
if(max<example[a])
max=example[a];
if(min>example[a])
min=example[a];
}
for(a=0;a<number;a++)
{sum+=example[a];}
sum=sum-max-min;
for(a=0;a<number;a++)
{
if(example[a]!=max&&example[a]!=min)
{
if(c==1)
{
if(max2<fabs(example[a]-sum/(number-2))) max2=fabs(example[a]-sum/(number-2));
}
if(c==0)
{
max2=fabs(example[a]-sum/(number-2));
c++;
}
}
}
printf("%.2f %.2f",sum/(number-2),max2);
return 0;
}
by yinqf @ 2022-11-07 21:11:03
@1234ss
本题要求去掉一个最大值和一个最小值样本,而不是所有的最大值最小值样本
如果明白了,记得关注,谢谢
by 1234ss @ 2022-11-08 13:41:56
@yinlg
#include <stdlib.h>
#include <math.h>
int main()
{
int n,a,b,p1,p2;
scanf("%d",&n);
float num[n],max,min,sum=0,num2[n-2];
for(a=0;a<n;a++)
scanf("%f",&num[a]);
max=min=num[0];
for(a=0;a<n;a++)
{ sum+=num[a];
if(max<num[a])
{max=num[a];
p1=a;}
if(min>num[a])
{
min=num[a];
p2=a;}
}
sum=sum-max-min;
for(a=0;a<n-2;a++)
for(b=0;b<n;b++)
if(b!=p1&&b!=p2)
num2[a]=num[b];
max=fabs(num2[0]-sum/(n-2));
for(a=0;a<n-2;a++)
if(max<fabs(num2[a]-sum/(n-2)))
max=fabs(num2[a]-sum/(n-2));
printf("%.2f %.2f",sum/(n-2),max);
return 0;#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n,a,b,p1,p2;
scanf("%d",&n);
float num[n],max,min,sum=0,num2[n-2];
for(a=0;a<n;a++)
scanf("%f",&num[a]);
max=min=num[0];
for(a=0;a<n;a++)
{ sum+=num[a];
if(max<num[a])
{max=num[a];
p1=a;}
if(min>num[a])
{
min=num[a];
p2=a;}
}
sum=sum-max-min;
for(a=0;a<n-2;a++)
for(b=0;b<n;b++)
if(b!=p1&&b!=p2)
num2[a]=num[b];
max=fabs(num2[0]-sum/(n-2));
for(a=0;a<n-2;a++)
if(max<fabs(num2[a]-sum/(n-2)))
max=fabs(num2[a]-sum/(n-2));
printf("%.2f %.2f",sum/(n-2),max);
return 0;
}
我改了只减去一次 ,还是不行 成十分了
by MTFlowCzq @ 2022-11-19 14:37:43
程序有点乱,看不懂。。。
还有 不是数组大小必须是常量吗(
难道我学了个假的C++?(doge
不过我看出来一些毛病,你想要把有效元素复制到num2里,但这里的循环有问题哦
推荐一个不错的方法(如果不用sort,题解里没有)就是找到最大最小值和位置以后,把它们和最前面、最后面元素交换,然后只看中间的下标从1~n-1的元素就行啦