从C中的数组中排除唯一值

从C中的数组中排除唯一值,c,C,此代码旨在排除数字列表中的非重复值,但不返回原始序列中的重复值。如何保持所有重复的优先级 我的代码: #include <stdio.h> #include <stdlib.h> int count=0; int main () { int i,j,k,x, altarray[1000],array[1000]; printf("Please enter the number of integers in your list:\n"); scanf("%d",&x

此代码旨在排除数字列表中的非重复值,但不返回原始序列中的重复值。如何保持所有重复的优先级

我的代码:

#include <stdio.h>
#include <stdlib.h>
int count=0;
int main ()
{
int i,j,k,x, altarray[1000],array[1000];
printf("Please enter the number of integers in your list:\n");
scanf("%d",&x);
printf ("Please enter the list of numbers\n");
for (i=0; i<x; i++)
    scanf("%d",&array[i]);
printf("\nThe corrected array is...\n");
for (i=0; i<x; i++)
{
    for (j=i+1; j<x; j++)
    {
        if(array[i]==array[j])
        {
            altarray[count]=array[i];
            count++;
        }

    }
}
for (i=0; i<count; i++)
    printf("%d",altarray[i]);
}
#包括
#包括
整数计数=0;
int main()
{
int i,j,k,x,altarray[1000],数组[1000];
printf(“请在列表中输入整数的数量:\n”);
scanf(“%d”和&x);
printf(“请输入数字列表\n”);

对于(i=0;i要搜索重复的数字,您必须覆盖
j
for
循环中数组的所有元素,索引为
i
的元素除外。因此循环应如下所示:

for (j = 0; j < x; j++)
{
    if ((array[i] == array[j]) && (i != j))
    {
        altarray[count] = array[i];
        count++;
        break;
    }
}
(j=0;j { if((数组[i]==数组[j])&&(i!=j)) { altarray[计数]=数组[i]; 计数++; 打破 } }

我添加了一个
break
,以避免在检测到重复的数字存在后浪费周期。

如果我们要保存周期,
I!=j&&array[I]==array[j]
会更好。少比较一次。@DeiDei是的,那会更好:)。您是否尝试过调试并缩小错误范围?这将帮助您提出一个特定的问题(),而不仅仅是“为什么我的代码不工作?”。欢迎使用Stack Overflow!请将您的代码简化为问题的一部分。您当前的代码包含许多与您的问题无关的内容-最小的样本通常看起来类似于良好的单元测试:仅执行一项任务,并为可再现性指定输入值。