给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数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
知识点
- 重置:flag=0;
- 有重复的输出怎么办:例如, 3 3 5 -15 6 4 6 1
剔除的方法 遍历arr3,和i前面的相比
printf("%d",c[0]);
for(int i=1;i<k;i++){
int flag=1;
for(int j=0;j<i;j++){
if(c[j]==c[i])
flag=0;
}
if(flag==1){
printf(" %d",c[i]);
}
}
代码
#include<iostream>
using namespace std;
int main(){
int n1,n2;
int arr1[20],arr2[20],arr3[40];
cin>>n1;
for(int i=0;i<n1;i++){
cin>>arr1[i];
}
cin>>n2;
for(int i=0;i<n2;i++){
cin>>arr2[i];
}
int flag=0,index=0; //输入
for(int i=0;i<n1;i++){
for(int j=0;j<n2;j++){
if(arr1[i]==arr2[j]){
flag=1;
break;
}
}
if(flag==0){
// cout<<arr1[i]<<',';
arr3[index++]=arr1[i];
}
flag=0; //!!!!
}
for(int i=0;i<n2;i++){
for(int j=0;j<n1;j++){
if(arr2[i]==arr1[j]){
flag=1;
break;
}
}
if(flag==0){
// cout<<arr2[i]<<',';
arr3[index++]=arr2[i];
}
flag=0; //!!!!
}
printf("%d",arr3[0]);
for(int i=1;i<index;i++){ //遍历arr3
int flagg=1;
for(int j=0;j<i;j++){ //和i前面的相比
if(arr3[j]==arr3[i])
flagg=0;
}
if(flagg==1){
printf(" %d",arr3[i]);
}
}
}
(错误代码)直接输出会出现重复的,不可取,例如:
参考知识点2
#include<iostream>
using namespace std;
int main(){
int n1,n2;
int arr1[20],arr2[20];
cin>>n1;
for(int i=0;i<n1;i++){
cin>>arr1[i];
}
cin>>n2;
for(int i=0;i<n2;i++){
cin>>arr2[i];
}
int flag=0; //输入
for(int i=0;i<n1;i++){
for(int j=0;j<n2;j++){
if(arr1[i]==arr2[j]){
flag=1;
break;
}
}
if(flag==0){
cout<<arr1[i]<<',';
}
flag=0; //!!!!
}
for(int i=0;i<n2;i++){
for(int j=0;j<n1;j++){
if(arr2[i]==arr1[j]){
flag=1;
break;
}
}
if(flag==0){
cout<<arr2[i]<<',';
}
flag=0; //!!!!
}
}
版权声明:本文为qq_45159762原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。