C语言,用函数调用的方法,输入十个数,求出其中的最大数,最小数,平均值和大于平均值的数的个数

如题所述

#include<stdio.h>
#include<malloc.h>
void main()
{
int i,a[10];
printf("请输入10个数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
void f(int a[],int n);
f(a,10);
}
void f(int a[],int n)
{
int x,y,i,c;
float sum;
float f;
sum=0;
x=a[0];
y=a[0];
for(i=0;i<n;i++)
{
sum=sum+a[i];
if(a[i]>x)
x=a[i];
if(a[i]<y)
y=a[i];
}
f= sum/n;
c=0;
for(i=0;i<n;i++)
{
if(a[i]>f)
c++;
}
printf("这%d个数中最大值为:%d,最小值为:%d,大于平均值的个数为:%d,平均值为:%f\n",n,x,y,c,f);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-19
#include<stdio.h>
#include<malloc.h>//malloc()和free()函数的头文件
int main()
{
int *p,i,max,min,ave,s=0,num=0;
p=(int*)malloc(sizeof(int)*10);//分配一个最大空间为10的内存空间
for(i=0;i<10;i++)
scanf("%d",p+i);
max=*(p);//*(p)表示空间的第一个元素相当于C语言数组的p[0],不要写成*p.
min=*(p);
for(i=1;i<10;i++)
if(*(p+i)>=max)
max=*(p+i);
for(i=1;i<10;i++)
if(*(p+i)<=min)
min=*(p+i);
for(i=0;i<10;i++)
s=s+*(p+i);
ave=s/10;
for(i=0;i<10;i++)
if(*(p+i)>=ave)
num++;
printf("最大值为:%d\n",max);
printf("最小值为:%d\n",min);
printf("平均值为:%d\n",ave);
printf("大于平均值的个数:%d\n",num);
free(p);//将开辟的内存空间释放
return 0;
}
第2个回答  2013-07-19
相似回答