C语言中用一维数组完成去掉最大值和最小值 并求出平均值

#include <stdio.h>
int main(){
int a[5]={90,45,67,87,50},i;
double average;
int sum=0;int max=0;int min=0;
for (i=1;i<=5;i++)
{
scanf("%d",&a[i]);
if (max<a[i])
max=a[i];
if (min>a[i])
min=a[i];
sum=sum+a[i];
average=(sum-min-max)/3;
printf("%lf",average);
return 0;
}

#include <stdio.h>

void main()

{

int a[5]={90,45,67,87,50};

int i,max,min,sum;

double average;

sum=0;

max=a[0];

min=a[0];

for(i=0;i<5;i++)

{

if(max<a[i])

max=a[i];

if(min>a[i])

min=a[i];

sum=sum+a[i];

}

average=(double)(sum-max-min)/3;

printf("\nThe max=%d\n",max);

printf("\nThe min=%d\n",min);

printf("\nThe average is:%f\n",average);

printf("\n");

}

扩展资料:

1、类型说明符是任意一种基本数据类型或构造数据类型。对于同一个数组,其所有元素的数据类型都是相同的。

2、数组名是用户定义的数组标识符,书写规则应符合标识符的书写规定。

3、方括号中的常量表达式表示数据元素的个数,也称为数组的长度。

4、允许在同一个数据说明中,说明多个数组和多个变量。

例:int a,b,c,d,k1[10],k2[2];

5、a[7]表示a数组有7个元素,注意下标是从0开始的,这7个元素是a[0],a[1],a[2],a[3],a[4],a[5],a[6]。不存在数组元素a[7]。

6、C语言不允许对数组的大小做动态定义,即数组的大小不依赖于程序运行过程中变量的值。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-18
1,你的初始化max和min就不对,应该把max和min的值都设定为a[0];
2,你的for循环i应该从0开始的。
3,在for循环中你不应该写scanf("%d",&a[i]);。因为写了这句话的话,系统会在这里等待,然后把你从键盘上输入的数据写入到a数组中,这样相当于给数组a进行了重新的赋值操作。
4,你的average=(sum-min-max)/3;应该写到for循环外边。并且应该使用强制类型转换。
5,既然你return 0,那你直接写void main()多好啊。

下面是我给你修改以后的程序:
#include <stdio.h>
void main()
{
int a[5]={90,45,67,87,50};
int i,max,min,sum;
double average;
sum=0;
max=a[0];
min=a[0];
for(i=0;i<5;i++)
{
if(max<a[i])
max=a[i];
if(min>a[i])
min=a[i];
sum=sum+a[i];
}
average=(double)(sum-max-min)/3;
printf("\nThe max=%d\n",max);
printf("\nThe min=%d\n",min);
printf("\nThe average is:%f\n",average);
printf("\n");
}

希望上面的回答能帮到你,如果还有问题可以继续讨论。追问

那如何从键盘赋值给数组a

追答

应该使用for循环进行赋值。

本回答被提问者采纳
第2个回答  2012-03-18
这个果断不能得到理想结果!
首先,max和min不该那样初始化,最好都初始化为a[0].否则,min和max始终>=0.这个题目没说.
可能是一串负数呢???
另外,average是double型,average = (sum - min - max)/3这个有一个隐式类型转换,得到的average将是(int) (sum - min - max)/3这个有精度损失!可以在前面乘以1.0,如下
1.0*(sum - min - max)/3
第3个回答  2012-03-18
scanf("%d",&a[i]);
这句没必要写了啊
你都已经定义好数组a了
不需要在输入了啊
去掉最大值和最小值
应该是在数组里删去吧
第4个回答  2012-03-18
for循环的表达式有问题,数组的下标从0开始,应写为for(i=0;i<5;i++)
相似回答