仅打印阵列中的唯一元素

时间:2016-01-04 15:30:04

标签: c arrays static-array

编辑:我需要维护原始数组中元素的顺序,因此排序不起作用。

我有一个包含一些元素的一维数组,我在C中使用printf()但我只想打印一个元素,当且仅当它之前还没有打印过。

我正在考虑使用嵌套循环来比较我要从数组中的当前位置打印的元素是否已经存在于数组的较低索引中但是它不起作用。我错过了什么?或者我的整个方法是错的?

到目前为止,我已经尝试了这个,但是没有用:

int arr[20];

在此之后,我将用户输入为no。 p中的元素,当然,p <20。然后,用户逐个输入元素。我为此使用了scanf()

for(i=1;i<=p;i++)
{
    for(j=i+1;j<=p;j++)
    {
        if(arr[i]!=arr[j])
        {
            printf("%d",arr[j]);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

在知道项目是否已经发生之前,您需要检查所有之前的项目。

ComboBox

答案 1 :(得分:0)

#include <stdio.h>

int main(void){
    int arr[20] = { 4,8,4,2,4,8,1,3,2,7 };//the elements are positive integers.
    int i, j, p = 10;

    for(i=0;i<p-1;i++){
        if(arr[i] < 0)
            continue;
        for(j=i+1;j<p;j++){
            if(arr[j] > 0 && arr[i]==arr[j])
                arr[j] *= -1;
        }
    }
    for(i=0; i < p; ++i)
        if(arr[i] > 0)
            printf("%d ", arr[i]);
    puts("");
    return 0;
}