用c语言函数求并集,C语言求并集

应用c语言编程:求两个有序集合的并集

#includestdio.h

10年积累的成都网站制作、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有海曙免费网站建设让你可以放心的选择与我们合作。

#includestdlib.h

#includetime.h

#define NUMBER1 7

#define NUMBER2 5

void createCollect(int [],int);

void display(int [],int);

int main()

{

int collection1[NUMBER1];

int collection2[NUMBER2];

int collection3[NUMBER1+NUMBER2];

int i,j,label=0;

createCollect(collection1,NUMBER1);

for(j = 0;j NUMBER2;j++)

{

collection2[j]=j*2;

}

printf("集合1:");

display(collection1,NUMBER1);

printf("集合2:");

display(collection2,NUMBER2);

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

{

//从集合1中取出元素,去遍历集合2中的所有元素

for(j = 0;j NUMBER2;j++)

{

//如果相同则跳出遍历

if(collection1[i]==collection2[j])

break;

}

//判断:此时存在两种情况1) 当前集合1的元素与集合2的元素相同

//2)遍历完了集合2的数组后不存在相同的元素

if(j == NUMBER2)

{

collection3[label]=collection1[i];

label++;

}

}

//把集合2的所有元素存进collection3中

for(j = 0;j NUMBER2;j++)

{

collection3[label++]=collection2[j];

}

printf("集合1与集合2的并集为:\n");

display(collection3,label);

return 0;

}

//随机生成一个不含重复元素的数组

void createCollect(int num[],int count)

{

//randValue:临时随机数存放变量

//condition:循环生成不重复的条件

int i,j,randValue,condition;

srand(time(NULL));

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

{

condition=1;

while(condition){

randValue=1+(int)rand()%10;

for(j = 0;j = i;j++){

if(i==0){//第一个数不可能存在重复数,可以直接赋值

condition=0;

break;

}

if(randValue==num[j])

break;

if(randValue!=num[j]j==i-1)//当生成的随机数与当前数组最后一位不同并且下标相等时

{

condition=0;

break;

}

}

}

num[i]=randValue;

}

}

//打印数组

void display(int num[],int count)

{

int i;

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

{

printf("%d\t",num[i]);

}

printf("\n");

}

C语言求两个顺序表的并集

#includestdio.h

#define maxsize 100 //宏定义常量表示线性表的最大长度

struct Sqlist

{

int elem[maxsize]; //线性表占用的数组空间

int last; //记录线性表中最后一个元素在数组elem[]中的位置

};

void initlist(Sqlist L) //初始化线性表

{

L.last=0;

}

void unionlist(Sqlist la,Sqlist lb) //求集合la和lb的并集

{

int i,j,e;

for(i=0;ilb.last;i++)

{

e=lb.elem[i]; j=0; //用e记录线性表lb中的元素

while((jla.last)(la.elem[j]!=e)) j++; //扫描顺序表la,直到找到值为e的元素,或扫描到表尾还没找到

if(j==la.last)

{

la.elem[la.last]=e;la.last++; //将lb中值不为e的元素加入到la中,表长为la,lb去掉相同元素后的两表长之和

}

}

}

void main()

{

int i;

char c;

struct Sqlist la,lb;

printf("初始化顺序表\n");

initlist(la);

initlist(lb);

printf("请输入集合a的元素\n");

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

{

scanf("%d%c",la.elem[i],c); //输入la的各元素,各元素之间用空格分开

la.last++;

if(c=='\n') //当输入Enter时结束输入

break;

}

printf("请输入集合b的元素\n");

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

{

scanf("%d%c",lb.elem[i],c);

lb.last++;

if(c=='\n')

break;

}

unionlist(la,lb);

printf("集合a与b的并集为:\n");

for(i=0;ila.last;i++)

printf("%-4d",la.elem[i]);

printf("\n");

}

你的链表长度没有随着链表元素的增加而增加,我改过了,你试下,祝好运

怎么用C语言编写求两个数组的并集的程序

#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);

printf ("集合的交集是:");  ///////////////////////计算2个数组的交集////////////////////  //flag标志位,index数组下标标志位 int flag=1, index=0; //c[20]保存交集的数组,d[40]保存并集的数组

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

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

{

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

{

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

{

c[index++] = a[n];

break;

}

}

}

printf("\n%s\n",c); ////////////////////////////计算2个数组的并集/////////////////////// flag=1;

index=0;

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

{

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

{

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

flag=0;

}

if(flag)

{

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

}

flag=1;

}

flag=1;

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

{

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

{

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

flag=0;

}

if(flag)

{

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

}

flag=1;

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

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

return 0;

}

c语言求并集

#include stdio.h

void main()

{

int a[100],b[100],m,n,i=0,j=0,k=0,p=0;

printf("input a[],end of -1:\n");

scanf("%d",a[0]);

while(a[i]!=-1){

i++;

scanf("%d",a[i]);

}

m=i;

printf("input b[],end of -1:\n");

scanf("%d",b[0]);

while(b[j]!=-1){

j++;

scanf("%d",b[j]);

}

n=j;

for(j=0;jn;j++){

for(i=0;im;i++){

if(a[i]==b[j])

p=1;

}

if(p!=1){

a[m+k]=b[j];

k++;

}

p=0;

}

for(i=0;im+k;i++)

printf("%d ",a[i]);

}

用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语言函数求并集,C语言求并集
网站路径:http://ybzwz.com/article/hcjosh.html