题目描述
输入n(n<100)个整数,不排序直接查找并输出所有重复的数字。
输入要求
先输入一个整数n,表示这个测试实例的数值的个数,跟着输入这n个整数,每个整数都不大于100。
输出要求
如果存在有重复的数字则依次输出,两个数字之间用空格间隔,如果不存在重复的数字,则输出-1。
输入样例
7 5 4 3 2 1 2 4
输出样例
4 2
这道题讲道理如果只是寻找重复数字他很简单,但是这道题恶心人的地方就是他还要输出这个数,
而且只能输出一次,那么如果我们遇到一个数组中有多个重复数字该怎么办。
那么我们首先去将这些重复的数字找出来数字找出来,再去将这些数字输入另一个数组,每次输入
数字时将这个数字与数组中的数字进行比对,如果有相同的数字则不输入。 ?
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(a[i]==a[j]) //寻找重复数字
{
sum++;
b[k]=a[i];
for(m=0;m<k;m++)
{
if(b[k]==b[m]) //如果有相同数字就不输入
k--;
}
k++;
}
}
这样就达到了目的
总代码如下
#include <stdio.h>
int main()
{
int n,i,j,sum=0,k=0,m;
scanf("%d",&n);
int a[n];
int b[10000];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(a[i]==a[j]) //寻找重复数字
{
sum++;
b[k]=a[i];
for(m=0;m<k;m++)
{
if(b[k]==b[m]) //如果有相同数字就不输入
k--;
}
k++;
}
}
if(sum==0)
printf("-1");
else
{
for(i=0;i<k;i++)
{
if(i<k-1)
printf("%d ",b[i]);
else
printf("%d",b[i]);
}
}
printf("\n");
return 0;
}
|