【问题描述】
比较两组整数是否有相同的元素,不考虑元素的顺序,并忽略元素重复的情况。例如:
1 4 9 16 9 7 4 9 11
与下列一组整数:
11 7 9 16 4 1
相同。
【输入形式】
分行输入两组整数,以空格分割
【输出形式】
打印两组整数中相同的元素,顺序以第一行的整数输出顺序为准,如果没有相同元素,打印"No Answer"
【输入样例】
1 4 9 16 9 7 4 9 11 11 7 9 16 4 1
【输出样例】
"#"代表空格 1#4#9#16#7#11#
【样例说明】
输入两组整数
1 4 9 16 9 7 4 9 11
11 7 9 16 4 1
由于这两个数组具有相同的元素,顺序打印第一行与第二行相同的元素
#include <stdio.h>
int main()
{
int a[20],b[20],c[20];
int i,j,q,k=1,t=1,z=0;
int tag=0;
for(i=0;i<20;i++)
{
scanf("%d",&a[i]);
if(getchar()=='\n')
break;
else
k++;
}
for(i=0;i<20;i++)
{
scanf("%d",&b[i]);
if(getchar()=='\n')
break;
else
t++;
}
for(i=0;i<k-1;i++)//最后一个数不能比
{
for(j=i+1;j<k;j++)//找同一行里重复的
if(a[i]==a[j])
{
for(q=j;q<k;q++)
a[q]=a[q+1];
k--;
j--;
}
}
for(i=0;i<t-1;i++)//最后一个数不能比
{
for(j=i+1;j<t;j++)//找同一行里重复的
if(a[i]==a[j])
{
for(q=j;q<t;q++)
b[q]=b[q+1];
t--;
j--;
}
}
for(i=0;i<k;i++)
{
for(j=0;j<t;j++)
{
if(a[i]==b[j])
{
c[z]=a[i];
z++;
tag=1;
}
}
}
if(tag==1)
{ for(i=0;i<z;i++)
printf("%d ",c[i]);
}
else if(tag==0)
printf("No Answer");
printf("\n");
return 0;
}