C语言:从键盘输入10个1~99的整数存入数组中,自定义函数求去掉一个最高分和最低分的平均值返回,咋编?

要求:
1)输入错误要提示重新输入。
2)在主函数中输出平均值,保留2位小数。

代码文本:

#include "stdio.h"

#define N 10

double getave(int *p,int n){

int i,a,b,s;

for(a=b=p[s=i=0];i<N;s+=p[i++])

if(a>p[i])

a=p[i];

else if(b<p[i])

b=p[i];

return (s-a-b)/(N-2.0);

}

int main(int argc,char *argv[]){ 

int a[N],i;

printf("Please enter %d integers...\n",N);

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

if(scanf("%d",a+i)!=1 || a[i]<1 || a[i]>99){

printf("Error, enter again the %d data...\n",N);

fflush(stdin);

i=0;

}

printf("The AVE are %.2f\n",getave(a,N));

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-23
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。 2.程序源代码: main() { int x,y,z,t; scanf("%d%d%d",&x,&y,&z); if (x>y) {t=x;x=y;y=t;} /*交换x,y的值*/ if(x>z) {t=z;z=x;x=t;}/*交换x,z的值*/ if(y>z) {t=y;y=z;z=t;}/*交换z,y的值*/ printf("small to big: %d %d %d\n",x,y,z); } 你可以根据这个按照自己的思路重新写下。
相似回答