求大神给我解答一道c语言的题目,急急急!!

编写一个函数,求n个数中的最大值、最小值、平均值。要求主函数完成20个数的输入,子函数完成统计,最后输出结果。此外,最大值及最小值采用全局变量实现 怎么写呢 老师布置的作业 拜托了 一定给高分

#include <stdio.h>

int max,min,sum=0;

void find(int a[],int n)

{

 int i;

 min=max=a[0];

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

 {

  if(min>a[i])

   min=a[i];

  if(max<a[i])

   max=a[i];

  sum+=a[i];

 }

}

void main()

{

 int a[20];

 printf("请输入20个数:\n");

 for(int i=0;i<20;i++)

  scanf("%d",&a[i]);

 find(a,20);

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

 {

  printf("%4d",a[i]);

  if((i+1)%5==0)

   printf("\n");

 }

 printf("max=%d\tmin=%d\tsum=%d\n",max,min,sum);

}

刚调试了,完成了要求!我还把输入的数给你输一遍出来!

希望我的回答对你有帮助!

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-22
#include<stdio.h>
int max_num = 0;
int min_num = 0;
int ave_num = 0;
int FindMaxMinAve(int a[],int n)
{
int i;
int tmp_max = a[0];
int tmp_min = a[0];
int tmp_ave = 0;
int tmp_sum = 0;
for(i=1;i<n;i++)
{
if(a[i]>tmp_max)
{
tmp_max = a[i];
}
if(a[i]<tmp_min)
{
tmp_min = a[i];
}
tmp_sum+=a[i];
}
tmp_ave = tmp_sum/n;
ave_num = tmp_ave;
min_num = tmp_min;
max_num = tmp_max;
return 0;
}
int main(void)
{
int i;
int a[20];
for(i=0;i<20;i++)
{
scanf("%d",&a[i]);

}
FindMaxMinAve(a,20);
printf("maxnum is %d\n",max_num);
printf("minnum is %d\n",min_num);
printf("avenum is %d\n",ave_num);
fflush(stdin);
getchar();
return 0;
}
第2个回答  2013-06-22
#include <stdio.h>
double max,min,ave;
void count_max(double a[]) //求最大值 
{
int i;
max=a[0];
for(i=1;i<20;i++)
if(a[i]>max)
max=a[i];
}
void count_min(double a[]) //求最小值 
{
int i;
min=a[0];
for(i=1;i<20;i++)
if(a[i]<min)
min=a[i];
}
void count_ave(double a[]) //求平均值 
{
double sum=0;
int i; 
for(i=0;i<20;i++)
sum+=a[i];
ave=sum/20; 
}
int main()
{
    double a[20];
    int i;
    for(i=0;i<20;i++) //数据输入 
     scanf("%lf",&a[i]);
    
    count_max(a); //计算 
   count_min(a);
   count_ave(a);
  
    printf("最大值:%f\n",max); //输出 
    printf("最小值:%f\n",min); 
printf("平均值:%f\n",ave);   
    return 0;
}

第3个回答  2013-06-22
#include "stdio.h"
#include "stdlib.h" 
#define NUM_COUNT 20
int g_max;
int g_min;
float g_avr;

int comp(const void * a, const void * b)
{
return *(int*)b - *(int*)a;
}

void main() 

int a[NUM_COUNT];
int sum = 0;

for (int i = 0; i< NUM_COUNT; i++)
{
scanf("%d",a+i);
sum +=a[i];
}

g_avr = sum/NUM_COUNT;

qsort(a,NUM_COUNT,4,comp);

g_max = a[0];
g_min = a[NUM_COUNT - 1];

printf("平均数:%f  \n最大数:%d   \n最小数:%d\n", g_avr, g_max, g_min);
}

相似回答