溫馨提示×

c語言數(shù)集如何進行數(shù)據(jù)過濾

小樊
81
2024-10-16 23:13:31
欄目: 編程語言

在C語言中,進行數(shù)據(jù)過濾通常涉及到數(shù)組或列表的處理,其中一些元素滿足特定的條件。以下是一個簡單的示例,展示了如何使用C語言過濾一個整數(shù)數(shù)組中的偶數(shù):

#include <stdio.h>

// 函數(shù)聲明
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;

    // 過濾偶數(shù)
    int* even_numbers = filter_even_numbers(numbers, size, &output_size);

    // 打印過濾后的結(jié)果
    printf("Filtered even numbers: ");
    for (int i = 0; i < output_size; i++) {
        printf("%d ", even_numbers[i]);
    }
    printf("\n");

    // 釋放動態(tài)分配的內(nèi)存
    free(even_numbers);

    return 0;
}

// 函數(shù)定義:過濾偶數(shù)
int* filter_even_numbers(int* input, int size, int* output_size) {
    // 計算偶數(shù)的數(shù)量
    int even_count = 0;
    for (int i = 0; i < size; i++) {
        if (input[i] % 2 == 0) {
            even_count++;
        }
    }

    // 為輸出數(shù)組分配內(nèi)存
    int* output = (int*)malloc(even_count * sizeof(int));
    if (output == NULL) {
        printf("Memory allocation failed.\n");
        exit(1);
    }

    // 將偶數(shù)復制到輸出數(shù)組中
    int index = 0;
    for (int i = 0; i < size; i++) {
        if (input[i] % 2 == 0) {
            output[index++] = input[i];
        }
    }

    // 設置輸出數(shù)組的大小
    *output_size = even_count;

    return output;
}

在這個示例中,filter_even_numbers函數(shù)接受一個整數(shù)數(shù)組、數(shù)組的大小和一個指向輸出大小的指針。它首先計算輸入數(shù)組中偶數(shù)的數(shù)量,然后為輸出數(shù)組分配足夠的內(nèi)存。接下來,它遍歷輸入數(shù)組并將偶數(shù)復制到輸出數(shù)組中。最后,它設置輸出數(shù)組的大小并返回輸出數(shù)組。

main函數(shù)中,我們創(chuàng)建了一個包含一些整數(shù)的數(shù)組,并調(diào)用filter_even_numbers函數(shù)來過濾其中的偶數(shù)。然后,我們打印過濾后的結(jié)果,并釋放動態(tài)分配的內(nèi)存。

0