首先需要动态开辟数组实现数组的数据存储
求最大值:
这里的思路通过设置prev与last用于标记数组的位置,通过a[prev]>a[last]对比,保存更大的数据,并且不断重复这一操作。如果a[prev]<a[last],将用prev覆盖last的位置,last后移
求平均值:
代码实现:
#include<stdio.h>
#include<stdlib.h>
int maxint(int*a,int length,int prev,int last)
{
if (a[prev]>a[last])
{
last++;
maxint(a,length, prev, last);
return a[prev];
}
else
{
if (last>=length)
{
return a[prev];
}
else
{
prev = last;
last++;
}
maxint(a,length, prev, last);
}
}
float average(int* a,int length)
{
if (length==1)
{
return a[length - 1];
}
else
{
return (float)(average(a,length-1)*(length-1) + a[length - 1]) / length;
}
}
int main()
{
//实现数组的动态输入
int length;
printf("请输入数组的长度:");
scanf_s("%d", &length);
int* a=(int*)malloc(sizeof(int)*length);
if (!a)
{
printf("malloc fail!");
exit(-1);
}
printf("输入%d个元素\n", length);
for (int i=0;i<length;i++)
{
int x;
scanf_s("%d", &x);
a[i] = x;
}
for (int i=0;i<length;i++)
{
printf("%d ",a[i]);
}
printf("\n");
int max = maxint(a,length, 0, 1);
printf("数组中最大值为%d\n", max);
float avg = average(a, length);
printf("数组平均值为%f\n", avg);
free(a);
system("pause");
return 0;
}