编写程序,实现两个集合的交运算(用C语言)

两个题,向高手求教,不胜感激:1、已知两个整数集合中的数据以递增次序分别存放在数组A,B中,编写程序实现两个集合的交运算(即取两个集合相同的数据元素),并把得到的交集数据... 两个题,向高手求教,不胜感激:
1、已知两个整数集合中的数据以递增次序分别存放在数组A,B中,编写程序实现两个集合的交运算(即取两个集合相同的数据元素),并把得到的交集数据存放在数组A中,在程序中不允许再定义第三个数组。
2、若有一下说明和语句:int c[4][5], (*cp)[5]; cp=c;下面对c数组元素正确的引用是()
A) cp+1 B) *(cp+3) C) *(cp+1)+3 D)*(*cp+2) (我最大的困惑是c数组是一个4行5列的数组,而cp指针应该指向一个元素为5的数组,那么cp指针赋给数组c,究竟是指向二维数组的列还是指向行)

多谢!
展开
 我来答
zy1404
2014-01-04 · TA获得超过1387个赞
知道小有建树答主
回答量:784
采纳率:100%
帮助的人:469万
展开全部
#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;
}

更多追问追答
追问
return t-a和return 0是什么意思啊?
return t-a和return 0是什么意思啊?
jolt2
2014-01-04 · 超过13用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:24.8万
展开全部
第一题就一个两重循环,把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数组有多少行没有关系是吧
追答
写这东西浪费时间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式