C语言编程,输入两个数列,求交集!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程,输入两个数列,求交集!相关的知识,希望对你有一定的参考价值。
C语言编程,输入两个数列,求交集!求大神帮改代码,让重复的数字消失,我真的是不会弄了……
参考技术A #include<stdio.h>#include<stdlib.h>
int main()
int i,j,k,len=0,a[10],b[10],c[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
scanf("%d",&b[i]);
for(i=0;i<10;i++)
for(k=0;k<len;k++)
if(a[i]==c[k])
break;
if(k>=len)
for(j=0;j<10;j++)
if(a[i]==b[j])
c[len++]=a[i];
break;
for(i=0;i<len;i++)
printf("%d ",c[i]);
printf("\n");
return 0;
参考技术B 追问
#include
int main()
int i,j,a[10],b[10];
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(j=0;j<=9;j++)
scanf("%d",&b[j]);
for(i=0;i<=9;i++)
for(j=0;j<=9;j++)
if(a[i]==b[j])
printf("%d ",a[i]);
printf("\n");
return 0;
什么意思?我给原来程序加了一行啊。
追问就是……输入1 2 3 4 5 6 7 8 9 0
5 6 7 8 9 0 5 6 12 14
输入这个
追答我程序改好了,你修改后运行啊。
追问然后输出5 6 7 8 9 0
求大神提供修改后的代码!
追答看上面的图片,请在19行,增加一行,
a[i]=-1;
修改后就可以运行了。
请问大神这是什么原理?
追答评判它存在的依据已经被“破坏”了,当它再次出现时,在“标本”中再也找不到了,也就是不再同时出现在两个数组中了。
追问好像……没那么复杂吧……只是单纯的需要在后面在用一个数列来处理掉重复的数据……
😓
追答你有更简单的当然就更好了。
追问但是我不太会处理掉重复的数据,我之前想的是再加一个数列,把我现在直接输出的数据放入这个数列,然后再加点条件,去除重复的数字
但要求是这个程序能处理好几组数据,每组数据的交集出来的数字的个数都不一样……
追答#include
int main()
int i,j,k,a[10],b[10];
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(j=0;j<=9;j++)
scanf("%d",&b[j]);
for(i=0;i<=9;i++)
for(j=0;j<=9;j++)
if(a[i]==b[j])
printf("%d ",a[i]);
for(k=j+1;k<10;k++)
if(a[i]==b[k])b[k]=-1;
printf("\n");
return 0;
求大神解释加了个b[k]=-1是什么意思?
谢谢!
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语言编程,输入两个数列,求交集!的主要内容,如果未能解决你的问题,请参考以下文章