#include <stdio.h>
int main(int argc, char const *argv[])
{
int a[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
int n = 10;
for (int i = 0; i < n; i++)
{
for (int j = i + 1; j < n; j++)
{
if (a[j] == a[i])
{
for (int k = j; k < n - 1; k++)
{
a[k] = a[k + 1];
}
a[n - 1] = 0;
n--;
j--;
}
}
}
for (int i = 0; i < 10; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
}
算法思路:
①定义一个n来记录数组长度。
②循环遍历数组从0到结尾
循环遍历i+1到数组结尾
比较a[j]和a[i]的值是否相等,如果相等,
循环从j位置开始到结尾交替前移一位,
j的值回退一个。j--重新从j位置开始循环比较。
数组最后一位设置为0,
有效数组长度减一,n--。