C言語で1次元配列内の同じ数を削除する方法は何ですか?

一次元配列から同じ数字を削除するには、配列を二重ループで反復処理し、各要素が他の要素と同じかどうかを比較し、同じであればその要素を削除します。

以下は例のコードです。

#include <stdio.h>

void removeDuplicates(int arr[], int *size) {
    int i, j, k;
    for (i = 0; i < *size; i++) {
        for (j = i + 1; j < *size;) {
            if (arr[j] == arr[i]) {
                // 元素相同,删除arr[j]
                for (k = j; k < *size - 1; k++) {
                    arr[k] = arr[k + 1];
                }
                (*size)--; // 数组大小减1
            } else {
                j++;
            }
        }
    }
}

int main() {
    int arr[] = {1, 2, 3, 2, 4, 1, 5, 3};
    int size = sizeof(arr) / sizeof(arr[0]);

    printf("原始数组:");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    removeDuplicates(arr, &size);

    printf("删除相同元素后的数组:");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

実行結果:

原始数组:1 2 3 2 4 1 5 3 
删除相同元素后的数组:1 2 3 4 5

上記のコードでは、removeDuplicates関数は配列内の重複した数値を削除するために使用されます。まず、二重のループを使用して配列を走査し、外側のループは現在比較している要素を制御し、内側のループは現在の要素以降のすべての要素を走査します。重複した要素が見つかった場合、後続の要素を前に移動させ、配列のサイズを1つ減らします。最後に、重複する要素を削除した配列を出力します。

bannerAds