c语言编程:输出数组中重复出现的数

假设给定一个长度为10的一维数组,然后用户任意输入10个整数。要输出重复出现的元素,且每个只输出一次。例如:输入1、2、6、4、5、2、2、8、9、6就输出2、6
这个我自己尝试了,但就是搞不定那个只输出一次,求教

#include<stdio.h>
int main()
{int i,j,k=0,k1,p,a[10],b[5];
 for(i=0;i<10;i++)
   scanf("%d",&a[i]);
 for(i=0;i<9;i++)
   for(j=i+1;j<10;j++)
     if(a[j]==a[i])
 {p=1;
  for(k1=0;k1<k;k1++)
    if(a[i]==b[k1])p=0;
  if(p)
  {printf("%d ",a[i]);
   b[k++]=a[i];
  }  
 };
 return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-28

为方便测试,直接初始化了数组

#include<stdio.h>
int main()
{
int a[10] = { 1,2,6,4,5,2,2,8,9,6 }; //为方便测试,直接初始化了数组
int b[10] = { 0 };  //用b记录重复的数值
int i,j,k,l;
l = 0;
for (i = 0; i < 10; ++i)
{
for(j=i+1;j<10;++j)
if (a[i] == a[j])
{
for (k = 0; k < l; ++k) //遍历b,是否已记录
{
if (a[i] == b[k])
break;
}
if(k==l)  //没有,则加入,长度+1
   b[l++] = a[i];
}
}
for (i = 0; i < l; ++i)
{
printf("%d  ", b[i]);
}
printf("\n");
return 0;

}

本回答被提问者和网友采纳