6-6 实数数组 - 6. 数据的统计 - 平均值(*) 分数 10 请编写函数,求实数数组元素的平均值。 函数原型 double ArrayAvg(const double *array, int size); 说明:array 为数组的起始地址,size 为数组元素个数。函数值为数组 array 中 size 个实数的平均值。 裁判程序 #include <stdio.h> #include <stdlib.h> #define arraySize 1024 void ArrayInput(double *array, int size); double ArraySum(const double *array, int size); double ArrayAvg(const double *array, int size); int main() { double a[arraySize]; int n; scanf("%d", &n); if (n < 1 || n > arraySize) { puts("Error!"); exit(1); } ArrayInput(a, n); printf("%g\n", ArrayAvg(a, n)); return 0; } ...... /* 你提交的代码将被嵌在这里 */ 说明:ArrayInput 函数输入数组,ArraySum 函数求总和。
时间: 2024-01-07 11:03:27 浏览: 226
实现代码如下:
```c++
double ArrayAvg(const double *array, int size) {
double sum = 0.0;
for (int i = 0; i < size; i++) {
sum += array[i];
}
return sum / size;
}
```
该函数的思路很简单,就是遍历整个数组,累加每个元素的值,最后除以元素个数即可得到平均值。注意要将 sum 和 size 声明为 double 类型,这样除法运算才会得到精确的结果。
相关问题
算法与数据结构,已知A[0,n-1]为实数数组,设计一个递归算法求这n个元素的平均值
在计算给定数组 A[0, n-1] 的平均值时,我们可以采用递归的方式来简化问题。对于一个长度为 n 的数组,平均值就是所有元素之和除以 n。递归的基本情况是当数组只有一个元素时,其平均值即为该元素本身;而如果数组包含多个元素,则需要将第一个元素的平均值加上第二个元素,再除以 2,然后继续这个过程直到整个数组都被处理。
以下是递归算法的伪代码描述:
```python
def average_recursive(A, start=0, end=None):
# 如果结束索引未指定,假设为数组长度减一
if end is None:
end = len(A) - 1
# 基本情况:数组只有一元素
if start == end:
return A[start]
# 递归情况:计算首尾两个元素的平均值,并递归处理剩余部分
middle = (start + end) // 2
left_avg = average_recursive(A, start, middle)
right_avg = average_recursive(A, middle + 1, end)
return (left_avg + right_avg) / 2
# 调用函数并传入数组和起始位置 0
average = average_recursive(A)
```
数组求平均值和小于等于平均值的实数个数
假设给定一个包含n个实数的数组a,我们可以按照以下步骤求出它的平均值和小于等于平均值的实数个数:
1. 遍历数组a,累加所有元素的值,得到数组元素的总和sum。
2. 计算平均值avg = sum/n。
3. 遍历数组a,统计小于等于平均值avg的元素个数count,初始值为0。如果数组元素a[i]小于等于平均值avg,则count加1。
4. 返回平均值avg和小于等于平均值的实数个数count。
以下是一个使用Python语言实现上述算法的例子:
```python
def average_and_count(a):
n = len(a)
if n == 0:
return None, 0
# 计算数组元素总和
total = sum(a)
# 计算平均值
avg = total / n
# 统计小于等于平均值的元素个数
count = 0
for i in range(n):
if a[i] <= avg:
count += 1
return avg, count
```
例如,对于数组a=[1, 2, 3, 4, 5, 6],上述函数将返回平均值3.5和小于等于平均值的实数个数3。
阅读全文