如何编写C语言删除数组中重复元素的程序?在阅读本文之前,请参考C语言数组一文,了解数组大小、索引位置等概念。
C语言删除数组中重复元素的示例1
这个移除数组重复元素的程序允许用户输入数组大小和数组元素。接下来,它将查找数组中存在的重复元素并使用 For 循环删除它们。
#include <stdio.h>
int main()
{
int arr[10], i, j, k, Size;
printf("\n Please Enter Number of elements in an array : ");
scanf("%d", &Size);
printf("\n Please Enter %d elements of an Array \n", Size);
for (i = 0; i < Size; i++)
{
scanf("%d", &arr[i]);
}
for (i = 0; i < Size; i++)
{
for(j = i + 1; j < Size; j++)
{
if(arr[i] == arr[j])
{
for(k = j; k < Size; k++)
{
arr[k] = arr[k + 1];
}
Size--;
j--;
}
}
}
printf("\n Final Array after Deleteing Duplicate Array Elements is:\n");
for (i = 0; i < Size; i++)
{
printf("%d\t", arr[i]);
}
return 0;
}

在此数组去重程序中,我们声明了1个大小为10的一维数组arr[]。还声明了i用于迭代数组元素
下面的C编程printf语句要求用户输入数组arr[]的大小(数组可容纳的元素数量)。然后,scanf语句会将用户输入的值赋给Size变量。
printf("\n Please Enter Number of elements in an array : ");
scanf("%d", &Size);
下面的For 循环将帮助迭代arr[5]数组中的每个单元格。for循环内的条件确保编译器不会超出数组限制。
for循环内的scanf语句会将用户输入的值存储在每个单独的数组元素中。例如 arr[0], arr[1], arr[2], arr[3], arr[4]
for (i = 0; i < Size; i++)
{
scanf("%d", &arr[i]);
}
下一行,我们有另一个 for 循环用于迭代数组中的每个元素。 If 语句用于检查重复项
for (i = 0; i < Size; i++)
{
for(j = i + 1; j < Size; j++)
{
if(arr[i] == arr[j])
{
for(k = j; k < Size; k++)
{
arr[k] = arr[k + 1];
}
Size--;
j--;
}
}
}
从上面的截图可以看出,用户插入的值是
a[5] = {10, 20, 10, 30, 20}
第一个 For 循环 – 第一次迭代:for(i = 0; i < 5; 0++)
条件 (0 < 5) 为真。
第二个 For 循环 – 第一次迭代:for(j = 0 + 1; 1 < 5; 1++)。
条件 (1 < 5) 为真。因此,它将开始执行循环内的语句。
if(arr[i] == arr[j])
if(10 == 20) – 条件为假。
第二个 For 循环 – 第二次迭代:for(j = 2; 2 < 5; 2++)
条件 (2 < 5) 为真。因此,它将开始执行循环内的语句。
if(arr[i] == arr[j])
if(10 == 10) – 条件为真。
第三个 For 循环 – 第一次迭代: for(k = j; k < Size; k++)。
for(k = j; k < Size; k++) => for(k = 2; 2 < 5; 2++)。
arr[k] = arr[k + 1]。
arr[2] = arr[3] = 30。
Size 和 j 值将被递减。这意味着,Size = 4, j = 1, and arr[4] = {10 20 30 20}
对剩余的迭代执行相同的操作。
C语言删除数组中重复元素的示例2
这个程序与上面相同,但这次我们使用了If Else语句
#include <stdio.h>
int main()
{
int arr[10], i, j, k, Size;
printf("\n Please Enter Number of elements in an array : ");
scanf("%d", &Size);
printf("\n Please Enter %d elements of an Array \n", Size);
for (i = 0; i < Size; i++)
{
scanf("%d", &arr[i]);
}
for (i = 0; i < Size; i++)
{
for(j = i + 1; j < Size;)
{
if(arr[i] == arr[j])
{
for(k = j; k < Size; k++)
{
arr[k] = arr[k + 1];
}
Size--;
}
else
{
j++;
}
}
}
printf("\n Final Array after Deleteing Duplicate Array Elements is:\n");
for (i = 0; i < Size; i++)
{
printf("%d\t", arr[i]);
}
return 0;
}
Please Enter Number of elements in an array : 7
Please Enter 7 elements of an Array
10 20 30 40 20 10 90
Final Array after Deleteing Duplicate Array Elements is:
10 20 30 40 90
C语言删除数组中重复元素的示例3
在这个移除数组重复元素的程序中,我们在嵌套 For 循环中使用了多个If 语句
#include <stdio.h>
int main()
{
int arr[10], b[10], Count = 0, i, j, k, Size;
printf("\n Please Enter Number of elements in an array : ");
scanf("%d", &Size);
printf("\n Please Enter %d elements of an Array : ", Size);
for (i = 0; i < Size; i++)
{
scanf("%d", &arr[i]);
}
for (i = 0; i < Size; i++)
{
for(j = 0; j < Count; j++)
{
if(arr[i] == b[j])
{
break;
}
}
if(j == Count)
{
b[Count] = arr[i];
Count++;
}
}
printf("\n Final Array after Deleteing Duplicate Array Elements is:\n");
for (i = 0; i < Count; i++)
{
printf("%d\t", b[i]);
}
return 0;
}
Please Enter Number of elements in an array : 10
Please Enter 10 elements of an Array : 10 20 30 10 20 50 60 70 80 150
Final Array after Deleteing Duplicate Array Elements is:
10 20 30 50 60 70 80 150