假设给定一个长度为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;
}
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;
}本回答被提问者和网友采纳