一般情况都需要将输入的N个数接收并记录到数组,计算总和获得平均值,然后再逐个数值判断是否大于平均值再输出。那么不使用数组该怎么办呢?
本文使用递归来实现不用数组求一堆数的平均值并输出大于平均值的数。
#include <stdio.h>
void dg(int n,int *sum,int all)
{
if(n==1)
{
int d;
scanf("%d",&d);
*sum += d;
printf("平均分:%.1f\n",sum*1.0/all);
if(d>*sum*1.0/all)
printf("%d ",d);
return;
}
int k;
scanf("%d",&k);
*sum += k;
dg(n-1,sum,all);
if(k>*sum*1.0/all)
printf("%d ",k);
}
int main()
{
int n;
scanf("%d",&n);;
int sum = 0;
dg(n,&sum,n);
return 0;
}