C语言中用一维数组完成去掉最大值和最小值 并求出平均值
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语言不允许对数组的大小做动态定义,即数组的大小不依赖于程序运行过程中变量的值。
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循环进行赋值。
首先,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
这句没必要写了啊
你都已经定义好数组a了
不需要在输入了啊
去掉最大值和最小值
应该是在数组里删去吧