有一个20个数的一维数组,请写出中位置滤波C语言程序
时间: 2024-10-08 12:11:07 浏览: 25
c语言实现中值滤波的程序代码
5星 · 资源好评率100%
在C语言中,计算一维数组中间值(中位数)需要排序数组并选择中间的元素。这里是一个简单的示例,假设数组长度为奇数:
```c
#include <stdio.h>
#include <stdlib.h>
// 交换两个整数的函数
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 冒泡排序
void bubble_sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(&arr[j], &arr[j + 1]);
}
}
}
}
// 计算中位数
double find_median(int arr[], int n) {
// 对数组进行冒泡排序
bubble_sort(arr, n);
// 如果数组长度是奇数,返回中间元素
if (n % 2 == 1)
return (double)arr[n / 2];
else
// 如果数组长度是偶数,返回中间两个元素的平均值
return (double)(arr[(n - 1) / 2] + arr[n / 2]) / 2.0;
}
int main() {
int arr[20]; // 假设已填充数值
int n = sizeof(arr) / sizeof(arr[0]);
printf("Array before filtering median:\n");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
double median = find_median(arr, n);
printf("\nMedian of the array is: %.2f\n", median);
return 0;
}
```
这个程序首先对数组进行冒泡排序,然后根据数组长度是奇数还是偶数计算中位数。注意这只是一个基本示例,并未涉及“滤波”,因为通常的“滤波”操作是指通过某种规则改变数组内容,这里我们只是找到原始数据的中位数。
阅读全文