给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。
输出格式:
在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。
输入样例:
10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1
输出样例:
3 5 -15 6 4 1
#include
int main(){
int i,j,k,f=0,sum=1;
int a[20],b[20],c[40]={0};
scanf("%d",&a[0]);
for(i=1;i<=a[0];i++){
scanf("%d",&a[i]);}
scanf("%d",&b[0]);
for(i=1;i<=b[0];i++){
scanf("%d",&b[i]);}
for(i=1;i<=a[0];i++){
f=0;
for(j=1;j<=b[0];j++){
if(a[i]==b[j]){f=1;}
}
if(f==0){c[sum]=a[i];sum++;}
}
for(j=1;j<=b[0];j++){
f=0;
for(i=1;i<=a[0];i++){
if(a[i]==b[j]){f=1;}
}
if(f==0){c[sum]=b[j];sum++;}
}
sum=sum-1;
for(i=1;ifor(j=i+1;j<=sum;j++){
if(c[i]==c[j]){
for(k=j;k<=sum;k++){
c[k]=c[k+1];
}
sum--;
}
}
}
printf("%d",c[1]);
for(i=2;i<=sum;i++){printf(" %d",c[i]);}
}
最大N,只有1个数字不同的情况下答案错误
输入20 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
20 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3
输出20 3
2 3
#include<stdio.h>
#define maxn 41
int main(void)
{
int N1,N2;//N代表要输入的数字的总个数(N<=20)
int a[maxn],b[maxn],c[maxn],dk=0,i,j,k=0;//数组a存储数字
scanf("%d",&N1);
for(i=0;i<N1;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&N2);
for(i=0;i<N2;i++)
{
scanf("%d",&b[i]);
}
//找出不是数组共有的元素,这次筛选可以重复
for(i=0;i<N1;i++)
{
for(j=0;j<N2;j++)
{
if(a[i]==b[j]) break;//一旦发现存在相同的,就跳出第二层循环
}
if(j==N2) c[k++]=a[i];//如果把第二层for循环遍历完全了,就说明在另一个数组中不存在该数值,就可以把该数值存到另一个数组中
}
for(i=0;i<N2;i++)
{
for(j=0;j<N1;j++)
{
if(b[i]==a[j]) break;
}
if(j==N1) {c[k++]=b[i];}
}
//printf("%d\n",k);
//如何把相同的数字去掉呢
printf("%d",c[0]);
for(i=1;i<k;i++)
{
for(j=0;j<i;j++)
{
if(c[i]==c[j]) break;
}
if(j>=i) printf(" %d",c[i]);
}
return 0;
}
#include <stdio.h>
int inarr(int *arr,int n,int m)
{
for(int i=0;i<n;i++)
if(arr[i] == m)
return 1;
return 0;
}
int main ()
{
int a[20],b[20],c[40];
int an=0,bn=0;
int i,j=0;
scanf("%d",&an);
for(i=0;i<an;i++)
scanf("%d",&a[i]);
scanf("%d",&bn);
for(i=0;i<bn;i++)
scanf("%d",&b[i]);
//
for(i=0;i<an;i++)
if(!inarr(b,bn,a[i]) && !inarr(c,j,a[i]))
c[j++] = a[i];
for(i=0;i<bn;i++)
if(!inarr(a,an,b[i]) && !inarr(c,j,b[i]))
c[j++] = b[i];
for(i=0;i<j;i++)
{
if(i==0)
printf("%d",c[i]);
else
printf(" %d",c[i]);
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!