基本思路:求n个数的最大值,只需先求出前n-1个数的最大值,让其与第n个数相比较,较大者即是整体的最大值,以此类推。
代码:
#include <stdio.h>
#include <stdlib.h>
#pragma warning(disable:4996)
#define n 5
int main()
{
float num[n];//因为后面求的平均数需要用小数表示,所以数组内的值也必须是小数
printf("请输入%d个整数:", n);
for (int i = 0; i < n; i++)
{
scanf("%f", &num[i]);
}
float max, min, sum=0, ave;
max = min = num[0];
for (int p = 1; p < n; p++)
{
if (max < num[p]) max = num[p];
if (min > num[p]) min = num[p];
}
for (int p = 0; p < n; p++)
{
sum += num[p];
}
printf("最大值: %.2f 最小值: %.2f, 平均值: %.2f\n",max, min, sum/n);
//也可以使用递归方法:
float maximum(int *p, int i);
float minimum(int *p, int i);
printf("最大值: %.2f\n", maximum(num, n - 1));//传入数组的地址和最大下标
printf("最小值: %.2f\n", minimum(num, 0));//传入数组的地址和最小下标
}
float maximum(float *p, int i)
{
if (i == 1) {
return p[i] > p[i - 1] ? p[i] : p[i - 1];
}
return p[i] > maximum(p, i - 1) ? p[i] : maximum(p, i - 1);
}
float minimum(float *p, int i)
{
if (i == n-2){
return p[i] < p[i + 1] ? p[i] : p[i - 1];
}
return p[i] < minimum(p, i + 1) ? p[i] : minimum(p, i + 1);
}
测试结果:
这篇博客介绍了一个寻找数组中最大值和最小值的基本思路,通过遍历数组并比较元素来更新最大值和最小值。提供的C语言代码实现了这个过程,并给出了递归方法的解决方案。测试结果显示了正确计算的最大值、最小值和平均值。
.C&spm=1001.2101.3001.5002&articleId=118976445&d=1&t=3&u=bc17c1a45add4720b175933832a82a3d)
1148

被折叠的 条评论
为什么被折叠?



