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

#include<stdio.h>intmain(){inta[5]={90,45,67,87,50},i;doubleaverage;intsum=0;intmax=0... #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;
}
展开
 我来答
你爱我妈呀
2019-11-19 · TA获得超过8.6万个赞
知道小有建树答主
回答量:686
采纳率:100%
帮助的人:26.9万
展开全部

#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语言不允许对数组的大小做动态定义,即数组的大小不依赖于程序运行过程中变量的值。

kqinzhang
2012-03-18 · TA获得超过131个赞
知道答主
回答量:57
采纳率:100%
帮助的人:37.7万
展开全部
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循环进行赋值。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
duzhanzxs
2012-03-18 · TA获得超过341个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:251万
展开全部
这个果断不能得到理想结果!
首先,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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
护戒之淼
2012-03-18 · TA获得超过132个赞
知道小有建树答主
回答量:396
采纳率:0%
帮助的人:244万
展开全部
scanf("%d",&a[i]);
这句没必要写了啊
你都已经定义好数组a了
不需要在输入了啊
去掉最大值和最小值
应该是在数组里删去吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tsweimj
2012-03-18
知道答主
回答量:24
采纳率:0%
帮助的人:9.1万
展开全部
for循环的表达式有问题,数组的下标从0开始,应写为for(i=0;i<5;i++)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式