十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
有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的数。
参考资料来源:百度百科-集合
#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;
}
#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");
}
你的链表长度没有随着链表元素的增加而增加,我改过了,你试下,祝好运
#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]);
}
#includestdio.h
#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");
}