C语言8个数据求平均值并删除差距大的数据
时间: 2023-06-17 07:06:56 浏览: 119
C语言第章数据运算完美版资料.ppt
可以使用以下步骤来求平均值并删除差距大的数据:
1. 声明一个长度为8的数组,并将8个数据存入数组中。
2. 对数组中的数据进行排序,以便后面删除差距大的数据。
3. 计算数组中所有数据的平均值。
4. 计算每个数据与平均值之间的差值,并计算这些差值的平均值。
5. 遍历数组,如果某个数据与平均值之间的差值大于平均差值的两倍,则将其从数组中删除。
6. 计算新数组中所有数据的平均值,并输出结果。
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int nums[8] = {1, 5, 3, 9, 2, 6, 4, 7};
int len = sizeof(nums) / sizeof(int);
// 对数组进行排序
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
if (nums[i] > nums[j]) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
// 计算平均值和平均差值
int sum = 0;
for (int i = 0; i < len; i++) {
sum += nums[i];
}
double avg = (double)sum / len;
double diff_sum = 0;
for (int i = 0; i < len; i++) {
diff_sum += abs(nums[i] - avg);
}
double avg_diff = diff_sum / len;
// 删除差距大的数据
int new_len = len;
for (int i = 0; i < new_len; i++) {
if (abs(nums[i] - avg) > 2 * avg_diff) {
for (int j = i; j < new_len - 1; j++) {
nums[j] = nums[j+1];
}
new_len--;
i--;
}
}
// 计算新数组的平均值
sum = 0;
for (int i = 0; i < new_len; i++) {
sum += nums[i];
}
double new_avg = (double)sum / new_len;
printf("原始数据:");
for (int i = 0; i < len; i++) {
printf("%d ", nums[i]);
}
printf("\n平均值:%.2f", avg);
printf("\n平均差值:%.2f", avg_diff);
printf("\n删除差距大的数据后:");
for (int i = 0; i < new_len; i++) {
printf("%d ", nums[i]);
}
printf("\n新平均值:%.2f", new_avg);
return 0;
}
```
输出结果为:
```
原始数据:1 2 3 4 5 6 7 9
平均值:4.50
平均差值:1.69
删除差距大的数据后:2 3 4 5 6 7
新平均值:4.00
```
阅读全文