编写程序,实现两个集合的交运算(用C语言)
发布网友
发布时间:2022-05-27 13:57
我来回答
共2个回答
热心网友
时间:2023-10-26 18:57
#include<stdio.h>
#include<string.h>
int jiaoji(int A[],int B[],int a,int b)
{
int i,j,t;
t=a;
for(i=0;i<a;i++)
for(j=0;j<b;j++)
{
if(A[i]==B[j])
{
A[t]=B[j];
t++;
}
}
for(i=0;i<t-a;i++)
{
A[i]=A[a+i];
}
return t-a;
}
int main ()
{
int A[50],B[50],a,b,t;
printf("请输入A的元素个数:\n");
scanf("%d",&a);
printf("请输入A的元素:\n");
for(int i=0;i<a;i++)
scanf("%d",&A[i]);
printf("请输入B的元素个数:\n");
scanf("%d",&b);
printf("请输入B的元素:\n");
for(int i=0;i<b;i++)
scanf("%d",&B[i]);
t=jiaoji(A,B,a,b);
for(int i=0;i<t;i++)
printf("%d ",A[i]);
return 0;
}
热心网友
时间:2023-10-26 18:57
第一题就一个两重循环,把A中的每个元素逐个跟B比较,如果有相同的话则保留下来,没有相同的就去掉。
第二题cp是一个指向数组的指针,cp虽然是首地址和int *p = c[0]还是有区别的,(cp+n)和(p+n)得到的结果是不同的,你可以用VC跟踪下。(CP+n)表示第n行的首地址,*(CP+n) 等价于 (int *p = c[n]),*(cp+n) + m表示第n行第m列的地址,再指一下话即(*(*(cp+n)+m))表示第n行m列的元素的值。追问也就是说(*cp)[5]里的5和c数组有多少行没有关系是吧
追答写这东西浪费时间。