2023-07-26 11:26发布
方法实现有多种:一、最直观的方式:1、将输入的十个数,存到数组中;2、遍历数组,找到最大值和最小值;3、从数组中将最大值和最小值移除;4、将剩余的8个数值累加,
#include<stdio.h>#defineN10main(){floata[N];floatmin,max,sum=0;//总和应该也是floatinti;floatavg;printf("请输入10个值:\n");//a是float,所以输入用%fscanf("%f%f%f%f%f%f%f%f%f%f",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8],&a[9]);min=a[0];max=a[0];for(i=0;i<N;i++){if(a[i]<min)min=a[i];if(a[i]>max)max=a[i];sum=sum+a[i];}avg=(sum-max-min)/(N-2);printf("最大数:%d,最小数:%d,去掉最大最小后的平均值:%f\n",max,min,avg);printf("%f%f%f%f%f%f%f%f%f%f",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);system("pause");}
最多设置5个标签!
错了,你上面定义的是float型就应该是
%f。
还有你这输入的太麻烦了。
for(i=0;i<N;i++)
scanf("%f",&a[i]);
还有
if(a[i]<min)
min=a[i];
应该成
min=a[0];
for(i=0;i<N;i++)
if(min>a[i])
min=a[i];
还有if(a[i]>max)
max=a[i];
应改成
max=a[0];
for(i=0;i<N;i++)
if(max<a[i])
max=a[i];
既然a[i]是float。sum也最好是float
否则要强制转换
#include
<stdio.h>
#define
N
10
main()
{
float
a[N];
float
min,max,sum=0;
//总和应该也是float
int
i;
float
avg;
printf("请输入10个值:\n");
//a是float,所以输入用%f
scanf("%f%f%f%f%f%f%f%f%f%f",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8],&a[9]);
min=a[0];
max=a[0];
for(i=0;i<N;i++)
{
if(a[i]<min)
min=a[i];
if(a[i]>max)
max=a[i];
sum=sum+a[i];
}
avg=(sum-max-min)/(N-2);
printf("最大数:%d,最小数:%d,去掉最大最小后的平均值:%f\n",max,min,avg);
printf("%f%f%f%f%f%f%f%f%f%f",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);
system("pause");
}
一周热门 更多>