编写程序,实现两个集合的交运算(用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,究竟是指向二维数组的列还是指向行)
多谢! 展开
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,究竟是指向二维数组的列还是指向行)
多谢! 展开
2个回答
展开全部
#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是什么意思啊?
展开全部
第一题就一个两重循环,把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是一个指向数组的指针,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数组有多少行没有关系是吧
追答
写这东西浪费时间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询