######【问题描述】
比较两组整数,每组整数个数不超过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是干嘛的