RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
c语言两个函数的并集 c语言如何把两个集合合并

用C语言求两个整数集合的并集.

有a、b 2个数组,把b中每个元素分别和a中每个元素比较,若无重复,则加入数组a。这样的话一个for语句,再加一个功能函数(也可以写在主函数中)就好。

创新互联是网站建设技术企业,为成都企业提供专业的成都网站设计、网站建设,网站设计,网站制作,网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制适合企业的网站。十年品质,值得信赖!

#include stdio.h

#include string.h

int main(int argc, char* argv[])

{

char a[20],b[20];

int n,m,j,k;

printf ("请输入第一个集合内容\n");

scanf ("%s",a);

j=strlen(a);

printf ("请输入第二个集合内容\n");

scanf ("%s",b);

k=strlen(b);

char c[20]="",d[40]="";

for (n=0;nj;n++)

printf("\n%s\n",c);

index=0;

for (n=0;nj;n++)

{

for(m=0;mindex;m++)

if(d[m] == a[n])

flag=0;

d[index++]=b[n];

}

flag=1;

} printf ("集合的并集是:");

printf("\n%s\n",d);

return 0;

}

扩展资料:

集合中元素的数目称为集合的基数,集合A的基数记作card(A)。当其为有限大时,集合A称为有限集,反之则为无限集。一般的,把含有有限个元素的集合叫做有限集,含无限个元素的集合叫做无限集。

表示

假设有实数x y:

①[x,y] :方括号表示包括边界,即表示x到y之间的数以及x和y;

②(x,y):小括号是不包括边界,即表示大于x、小于y的数。

参考资料来源:百度百科-集合

用c语言求两个集合的交集,并集,差集

#include stdio.h

#include string.h

#include conio.h

#define ARR_LEN 255 /*数组长度上限*/

#define elemType char /* 集合元素数据类型 */

/* 集合数据结构 */

typedef struct set {

elemType data[ARR_LEN];

int length;

} set;

/* 初始化集合 */

void initSet (set *S) {

S-length = 0;

/* 交集 */

/* A与B的交集(A∩B):既属于A又属于B的元素构成的集合 */

int setIntersection (set A, set B, set *dest) {

int i = 0, j = 0, k = 0;

dest-length = 0;

for (i=0; iA.length; i++) { /* 外循环遍历A */

for (j=0; jB.length; j++) { /* 内循环遍历B */

if (A.data[i] == B.data[j]) { /* 既属于A又属于B的元素,存入dest */

dest-data[k] = A.data[i];

k++;

}

}

}

dest-length = k;

if (dest-length)

return 1;

else

return 0;

}

/* 并集 */

/* A与B的并集(A∪B):A与B所有元素构成的集合 */

int setUnion (set A, set B, set *dest) {

int i = 0, j = 0, k = 0;

dest-length = 0;

for (i=0; iA.length; i++) { /* 外循环遍历A */

for (j=0; jB.length; j++) { /* 内循环遍历B */

if (A.data[i] == B.data[j]) /* 既属于A又属于B的元素,跳过 */

break;

}

if (j == B.length) { /* 属于A但不属于B的元素,存入dest */

dest-data[k] = A.data[i];

k++;

}

}

for (j=0; jB.length; j++) { /* B的所有元素,存入dest */

dest-data[k] = B.data[j];

k++;

}

dest-length = k;

if (dest-length)

return 1;

else

return 0;

}

/* 补集 */

/* B在A中的相对补集(A\B):属于A但不属于B的元素构成的集合 */

int setComplement (set A, set B, set *dest) {

int i = 0, j = 0, k = 0;

dest-length = 0;

for (i=0; iA.length; i++) { /* 外循环遍历A */

for (j=0; jB.length; j++) { /* 内循环遍历B */

if (A.data[i] == B.data[j]) /* 既属于A又属于B的元素,跳过 */

break;

}

if (j == B.length) { /* 属于A但不属于B的元素,存入dest */

dest-data[k] = A.data[i];

k++;

}

}

dest-length = k;

if (dest-length)

return 1;

else

return 0;

}

/* 打印集合内容 */

int printSet (set S) {

int i;

if (S.length == 0) {

puts ("The set is empty! ");

return 0;

}

for (i=0; iS.length; i++)

printf ("%c", S.data[i]);

putchar ('\n');

return 1;

}

int main (void) {

set A, B;

set AIB, AUB, ACB; /* 交集、并集、补集 */

initSet (A); initSet (B);

initSet (AIB); initSet (AUB); initSet (ACB);

strcpy (A.data, "123");

A.length = strlen (A.data);

strcpy (B.data, "4532");

B.length = strlen (B.data);

printf ("A:\t");

printSet (A);

printf ("B:\t");

printSet (B);

putchar ('\n');

printf ("A∩B:\t");

setIntersection (A, B, AIB);

printSet (AIB);

printf ("A∪B:\t");

setUnion (A, B, AUB);

printSet (AUB);

printf ("A\B:\t");

setComplement (A, B, ACB);

printSet (ACB);

getch (); /*屏幕暂留*/

return 0;

}

c语言求并集

C语言求两个顺序表的并集函数为:

void fun(int a[],int b[],int n,int m,int c[]){

int i=0,j=0,k=0;

for (k=0;kn+m;k++){

if(i=n||a[i]b[j]) {c[k]=b[j];j++;continue;}

if(j=m||a[i]b[j]) {c[k]=a[i];i++;continue;}

}

}

void main(){

int a[10],b[10],c[20];

printf("input a");

for(i=0;i10;i++)scanf("%d",a+i);

printf("input b");

for(i=0;i10;i++)scanf("%d",b+i);

fun(a,b,10,10,c);

for(i=0;i20;i++)printf("%d ",c[i]);

}

用c语言给定两个整数集合 a,b. 分别编写函数求这两个集合的并集(剔除重复元

#includeiostream

using namespace std;

class MergeList

{

int *a;

int size;

public:

MergeList(int size,int init)

{

this-size=size;

a=new int[size];

for(int i=0;isize;i++)

{

a[i]=init;

}

}

MergeList()

{

}

MergeList(const MergeListobj)

{

this-size=obj.size;

a=new int[size];

for(int i=0;isize;i++)

a[i]=obj.a[i];

}

void SetData(intindex, intdata)

{

a[index]=data;

}

intGetSize(){return size;}

~MergeList()

{

delete []a;

}

MergeListoperator=(const MergeListobj)

{

this-size=obj.size;

a=new int[size];

for(int i=0;isize;i++)

a[i]=obj.a[i];

return *this;

}

bool Is_Same(int element);

MergeList AddList(const MergeListobj);

void Show()

{

for(int i=0;isize;i++)

couta[i]" ";

coutendl;

}

};

bool MergeList::Is_Same(int element)

{

for(int i=0;isize;i++)

{

if(a[i]==element)

return true;

}

return false;

}

MergeList MergeList::AddList(const MergeListobj)

{

MergeList C;

 int m=0,i=0;

 C.size=size+obj.size;

 C.a=new int[C.size];

 if(sizeobj.size||(size==obj.size))

 {

 for(i=0;isize;i++)

 {

 C.a[i]=a[i];

 }

 }

 else

 {

 for(i=0;iobj.size;i++)

 {

 C.a[i]=obj.a[i];

 }

 }

for(int j=0;jobj.size;j++)

{

if(!this-Is_Same(obj.a[j]))

{

C.a[i+m]=obj.a[j];

m++;

}

}

C.size=i+m;

return C;

}

int main()

{

int LengthA,LengthB;

cout"input length a:";

cinLengthA;

cout"input length b:";

cinLengthB;

MergeList A(LengthA,2),B(LengthB,2),C;

cout"input A:"endl;

for(int i=0;iA.GetSize();i++)

{

int a;

cina;

A.SetData(i,a);

}

cout"input B:"endl;

for(int j=0;jB.GetSize();j++)

{

int b;

cinb;

B.SetData(j,b);

}

C=A.AddList(B);

cout"合并后:"endl;

C.Show();

}


分享名称:c语言两个函数的并集 c语言如何把两个集合合并
文章出自:http://lswzjz.com/article/ddcshjj.html