比较两组整数是否有相同的元素

######【问题描述】

比较两组整数,每组整数个数不超过100。若有相同的元素,则按照由大到小的顺序输出相同的元素(重复出现的元素只输出一个)。如果没有相同元素,打印字符串:No Answer。

【输入形式】

首先从标准输入(键盘)输入第一组整数的个数,再输入第一组整数,以一个空格分割;然后输入第二组整数的个数,再输入第二组整数,以一个空格分割。

【输出形式】

按照由大到小的顺序向标准输出(显示器)输出两组整数中相同的元素,以一个空格分隔;如果没有相同元素,则打印“No Answer”。

【输入样例】

9
2 5 10 17 10 8 5 10 12
7
12 8 10 17 5 2 1009

【输出样例】

17 12 10 8 5 2

【样例说明】

输入两组整数
2 5 10 17 10 8 5 10 12
12 8 10 17 5 2 1009
由于这两个数组具有相同的元素,按照由大到小的顺序输出为:17 12 10 8 5 2。

我的方案include
int main()
{
int a[100],b[100],c[100],k;
int m,i,j,n;
int flag=0;

scanf("%d",&n);

for( i=1;i<=n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);

for( i=1;i<=m;i++)
scanf("%d",&b[i]);

for(i=1;i<=n;i++)
{
    for(j=1;j<=m;j++)
    {
    if(a[i]==b[j])
       {
            flag++;
        c[flag]=a[i];
        if(a[i]!=b[j])
        printf("No Answer");

        }
    }
}

if(flag==0)
        printf("No Answer");

for(i=1;i<=flag-1;i++)
{
    for(j=1;j<=flag-1;j++)
    {
        if(c[j]k=c[j+1];
            c[j+1]=c[j];
            c[j]=k;
        }
    }
}

for(i=1;i<=flag;i++)
if(c[i]>c[i+1])

printf("%d ",c[i]);
return 0;

}

测试数据 评判结果

测试数据1 完全正确
测试数据2 输出错误
测试数据3 完全正确
测试数据4 完全正确
测试数据5 输出错误错内容

不知道我这排版有没有问题,总之不知道问题出在了哪里,有没有说一下

16-17行,没有考虑重复出现的元素只输出一个。32-34行,交换操作那是不是少了代码。40行,不知道你这个if是干嘛的