C语言程序:数据的处理:两个数组中都有很多数字,计算这两个文件中数字的交集,并且排好序,存放在另一数组 100
数据的处理:两个数组中都有很多数字,计算这两个文件中数字的交集,并且排好序,存放在另一数组jiao中;计算两个数组中数字的并集,并且排好序,存放在另一数组bing中。求解...
数据的处理:两个数组中都有很多数字,计算这两个文件中数字的交集,并且排好序,存放在另一数组jiao中;计算两个数组中数字的并集,并且排好序,存放在另一数组bing中。
求解答 展开
求解答 展开
3个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
int A[100],B[100],jiao[200],bing[100],M,N;///A的元素个数为N,的元素个数为
void myiput()////输入A,B数组
{
int i;
printf("请输入A的元素个数:\n");////A元素的个数是n
scanf("%d",&N );
printf("请输入A的元素:\n");
for(int i=0;i<N;i++)
scanf("%d",&A[i]);
printf("请输入B的元素个数:\n");////B元素的个数是m
scanf("%d",&M);
printf("请输入B的元素:\n");
for(int i=0;i<M;i++)
scanf("%d",&B[i]);
}
void display()///显示数组的内容
{
int i;
printf("A中的元素是:\n");
for (i=0;i<N;i++)
printf("%-3d",A[i]);
printf("\nB中的元素是:\n");
for (i=0;i<M;i++)
printf("%-3d",B[i]);
printf("\n");
}
void sort(int p[],int x)////x表示元素的个数
{
int i,j,t;
for(i=0;i<x;i++)
for (j=0;j<x-1-i;j++)
{
if(p[j]<p[j+1])
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
}
int Jiao()//// 交集的结果
{
int sum=0,i,j;
for (i=0;i<N;i++)///从A中元素检索
{
for (j=0;j<M;j++)
{
if(A[i]==B[j])
{
jiao[sum]=A[i];
sum++;
break;
}
}
}
sort(jiao,sum);
printf("他们的交集是;\n");
for(i=0;i<sum;i++)
printf("%-3d",jiao[i]);
printf("\n");
return sum;////返回的是交集的元素的个数
}
int Bing()///并集
{
int sum=0,i,j;
for (i=0;i<N;i++)///把A的元素给并集
{
bing[sum]=A[i];
sum++;
}
for(j=0;j<M;j++)
{
for(i=0;i<sum;i++)
{
if (B[j]==bing[i])
break;
if(i==sum-1)
{
bing[sum]=B[j];
sum++;
}
}
}
sort(bing,sum);
printf("他们的并集是;\n");
for(i=0;i<sum;i++)
printf("%-3d",bing[i]);
printf("\n");
return sum;
}
int main()
{
int i;
myiput();
Bing();
Jiao();
return 0;
}
展开全部
void ans(int *starta,int *enda,int *startb,int *endb,int *jiao,int *bing)
{
int *i=0,*j=0,*p_jiao=jiao,*p_bing=bing;
sort(starta,enda);
sort(startb,endb);
for(i=starta,j=startb;i!=enda && j!=endb;)
{
if (*i == *j)
{
*(p_jiao++)=*(i++);
*(p_bing++)=*(j++);
}
else
{
if (*i < *j)
{
*(p_bing++)=*(i++);
}
else
{
*(p_bing++)=*(j++);
}
}
}
while (i != enda)
{
*(p_bing++)=*(i++);
}
while (j!=endb)
{
*(p_bing++)=*(j++);
}
return;
}
{
int *i=0,*j=0,*p_jiao=jiao,*p_bing=bing;
sort(starta,enda);
sort(startb,endb);
for(i=starta,j=startb;i!=enda && j!=endb;)
{
if (*i == *j)
{
*(p_jiao++)=*(i++);
*(p_bing++)=*(j++);
}
else
{
if (*i < *j)
{
*(p_bing++)=*(i++);
}
else
{
*(p_bing++)=*(j++);
}
}
}
while (i != enda)
{
*(p_bing++)=*(i++);
}
while (j!=endb)
{
*(p_bing++)=*(j++);
}
return;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用KMP算法吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询