c语言中数组如何筛选奇数
时间: 2024-09-22 12:08:29 浏览: 37
在C语言中,你可以通过遍历数组并使用条件语句来筛选出数组中的奇数。这里是一个简单的示例:
```c
#include <stdio.h>
void filter_odd(int arr[], int size) {
for (int i = 0; i < size; i++) {
if (arr[i] % 2 != 0) { // 判断元素是否为奇数
printf("%d ", arr[i]); // 输出奇数
}
}
}
int main() {
int numbers[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int array_size = sizeof(numbers) / sizeof(numbers[0]);
filter_odd(numbers, array_size);
return 0;
}
```
在这个例子中,`filter_odd`函数接收一个整型数组和其大小作为参数,然后遍历数组,如果某个元素除以2的余数不等于0,则它是奇数,会被打印出来。
相关问题
C语言求数组中位数
要求数组中位数,需要先将数组进行排序,然后再根据数组元素个数的奇偶性,选择不同的计算方式。
以下是使用C语言实现的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
double median(int arr[], int n) {
qsort(arr, n, sizeof(int), compare); // 先将数组排序
if (n % 2 == 0) { // 数组元素个数为偶数
return (double)(arr[n/2 - 1] + arr[n/2]) / 2.0;
} else { // 数组元素个数为奇数
return (double)arr[n/2];
}
}
int main() {
int arr[] = {3, 7, 1, 9, 2};
int n = sizeof(arr) / sizeof(arr[0]);
double m = median(arr, n);
printf("Median = %lf", m);
return 0;
}
```
输出结果为:
```
Median = 3.000000
```
在该示例代码中,`compare()` 函数用于比较两个元素的大小,`qsort()` 函数用于对数组进行排序,`median()` 函数用于计算中位数。其中,计算中位数时,首先将数组排序,然后根据数组元素个数的奇偶性,选择不同的计算方式。
c语言找数组的中位数
在C语言中,找到一个数组的中位数可以通过以下步骤实现:
1. 对数组进行排序,可以使用冒泡排序、快速排序等算法。
2. 判断数组长度的奇偶性,如果是偶数,则取中间两个数的平均值作为中位数;如果是奇数,则直接取中间的数作为中位数。
下面是一个示例代码,其中包含了冒泡排序和快速排序两种算法的实现:
```
#include <stdio.h>
#include <stdlib.h>
// 冒泡排序
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 快速排序
int cmp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
int main() {
int n;
scanf("%d", &n);
int arr[n], i;
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 冒泡排序
bubbleSort(arr, n);
// 快速排序
qsort(arr, n, sizeof(int), cmp);
double median;
if (n % 2 == 0) {
median = (arr[n / 2 - 1] + arr[n / 2]) / 2.0;
} else {
median = arr[n / 2]; }
printf("%.1lf", median);
return 0;
}
```
阅读全文