C++编程,从键盘输入两个数组,求两个数组的交集并输出。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++编程,从键盘输入两个数组,求两个数组的交集并输出。相关的知识,希望对你有一定的参考价值。
比如输入a【】=1,2,3,4,5,6,b[]=4,5,8,9那么交集c【2】=4,5。
比如: A = 1 3 4 5 7, B = 2 3 5 8 9, 那么交集就是 3 5.思路:
1. 每一次从B数组中取一值,然后在A数组里逐个比较,如果有相等的,则保存。该算法复杂度为 O(MN). M, N 分别为数组 A B 的长度。 参考技术A 获取键盘输入的代码应该不用贴出来了吧
void main()
//定义数组
int a[] = 1,2,3,4,5,6;
int b[] = 5,6,7,8;
//获取数组长度
int arrayLA = getArrayLen(a);
int arrayLB = getArrayLen(b);
//交集数组
int c[];
int arrayLC;
//将两个数组的每个元素进行比较,获取相同数组,即交集
for(int i = 0; i < arrayLA;i++)
for(int j = 0; j < arrayLB;j++)
if(a[i] = b[j])
//将交集放置在交集数组中
c[arrayLC] = a[i];
//交集数组下标加一
arrayLC++;
cout << c <<endl;
cout << "数组的长度:" << getArrayLen(c) << endl;
int getArrayLen(T& array)
//使用模板定义一 个函数getArrayLen,该函数将返回数组array的长度
return (sizeof(array) / sizeof(array[0]));
参考技术B 可以一次读入N个数据。可以考虑以回车结束读入的一组。
参考如下写法:
#include "stdio.h"
#define Max 100
int X[Max]=0,,Y[Max]=0,;
int main()
int i=0,j=0;
int a,b;
char c=0;
printf("输入第一个数组(以空格分开,回车结束)");
while((c!='\n'))
scanf("%d%c",X+i++,&c);
c=0;
printf("输入第二个数组(以空格分开,回车结束)");
while((c!='\n'))
scanf("%d%c",Y+j++,&c);
for(a=0;a<i;a++)
for(b=0;b<j;b++)
if(X[a]==Y[b])
printf("%d \t",X[a]);
return 0;
如果能知道自己喜欢的又觉得不错的就可以了用手机啦。 参考技术C
按照题目要求编写的程序如下(见图,图中重复的地方只需写一次)
参考技术D 还是有机会的太厉害了。C++求两个集合的交集
#include<iostream.h>
void main()
int a[5],b[5],c[5];
int i,j,k;
int *p1,*p2,*p3;
cout<<"请输入数组a:";
for(i=0;i<5;i++)
cin>>a[i];
cout<<"请输入数组b:";
for(j=0;j<5;j++)
cin>>b[j];
p1=&a[i];p2=&b[j];p3=&c[0];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(*p1==*p2++)
*p3++=*p1;
cout<<"a数组为:";
for(i=0;i<5;i++)
cout<<a[i]<<' ';
cout<<endl;
cout<<"b数组为:";
for(j=0;j<5;j++)
cout<<b[j]<<' ';
cout<<endl;
cout<<"c数组为:";
for(k=0;k<5;k++)
cout<<c[k]<<' ';
cout<<endl;
就是要将a,b都赋值给c,用指针。。。
#include<iostream.h>
void main()
int a[5],b[5],c[5]=0;//n是用来统计相同的元素总共多少个
int i,j,k,n=0;
int *p1,*p2,*p3;
cout<<"请输入数组a:";
for(i=0;i<5;i++)
cin>>a[i];
cout<<"请输入数组b:";
for(j=0;j<5;j++)
cin>>b[j];
p1=&a[0];p3=&c[0];
for(i=0;i<5;i++)
p2=&b[0];
for(j=0;j<5;j++)
if(*p1==*p2++)
*p3++=*p1;
n++;
p1++;
cout<<"a数组为:";
for(i=0;i<5;i++)
cout<<a[i]<<' ';
cout<<endl;
cout<<"b数组为:";
for(j=0;j<5;j++)
cout<<b[j]<<' ';
cout<<endl;
cout<<"c数组为:";
for(k=0;k<n;k++)
cout<<c[k]<<' ';
cout<<endl;
参考技术A #include<stdio.h>
void main()
int a[5],b[5],c[5]=0;
int i,j,k,n=0;
int *p1,*p2,*p3;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(j=0;j<5;j++)
scanf("%d",&b[j]);
p1=&a[0];p3=&c[0];
for(i=0;i<5;i++)
p2=&b[0];
for(j=0;j<5;j++)
if(*p1==*p2++)
*p3++=*p1;
n++;
p1++;
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf("\n");
for(j=0;j<5;j++)
printf("%d ",b[j]);
printf("\n");
for(k=0;k<n;k++)
printf("%d ",c[k]);
printf("\n");
参考技术B #include<stdio.h>
void main()
int a[5],b[5],c[5]=0;
int i,j,k,n=0;
int *p1,*p2,*p3;
printf("请输入数组a:");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("请输入数组b:");
for(j=0;j<5;j++)
scanf("%d",&b[j]);
p1=&a[0];p3=&c[0];
for(i=0;i<5;i++)
p2=&b[0];
for(j=0;j<5;j++)
if(*p1==*p2++)
*p3++=*p1;
n++;
p1++;
for(i=0;i<5;i++)
printf("%d ",a[i]);
printf("\n");
for(j=0;j<5;j++)
printf("%d ",b[j]);
printf("\n");
for(k=0;k<n;k++)
printf("%d ",c[k]);
printf("\n");
以上是关于C++编程,从键盘输入两个数组,求两个数组的交集并输出。的主要内容,如果未能解决你的问题,请参考以下文章