在C語言中,進行數據過濾通常涉及到數組或列表的處理,其中一些元素滿足特定的條件。以下是一個簡單的示例,展示了如何使用C語言過濾一個整數數組中的偶數:
#include <stdio.h>
// 函數聲明
int* filter_even_numbers(int* input, int size, int* output_size);
int main() {
int numbers[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int size = sizeof(numbers) / sizeof(numbers[0]);
int output_size;
// 過濾偶數
int* even_numbers = filter_even_numbers(numbers, size, &output_size);
// 打印過濾后的結果
printf("Filtered even numbers: ");
for (int i = 0; i < output_size; i++) {
printf("%d ", even_numbers[i]);
}
printf("\n");
// 釋放動態分配的內存
free(even_numbers);
return 0;
}
// 函數定義:過濾偶數
int* filter_even_numbers(int* input, int size, int* output_size) {
// 計算偶數的數量
int even_count = 0;
for (int i = 0; i < size; i++) {
if (input[i] % 2 == 0) {
even_count++;
}
}
// 為輸出數組分配內存
int* output = (int*)malloc(even_count * sizeof(int));
if (output == NULL) {
printf("Memory allocation failed.\n");
exit(1);
}
// 將偶數復制到輸出數組中
int index = 0;
for (int i = 0; i < size; i++) {
if (input[i] % 2 == 0) {
output[index++] = input[i];
}
}
// 設置輸出數組的大小
*output_size = even_count;
return output;
}
在這個示例中,filter_even_numbers
函數接受一個整數數組、數組的大小和一個指向輸出大小的指針。它首先計算輸入數組中偶數的數量,然后為輸出數組分配足夠的內存。接下來,它遍歷輸入數組并將偶數復制到輸出數組中。最后,它設置輸出數組的大小并返回輸出數組。
在main
函數中,我們創建了一個包含一些整數的數組,并調用filter_even_numbers
函數來過濾其中的偶數。然后,我們打印過濾后的結果,并釋放動態分配的內存。