c语言集合的差
发布时间: 2023-01-31 10:15:56
Ⅰ c语言 集合的差,交,并,笛卡尔积的运算。例如A={2,3,4,5,6,7,8}B={2,3,4,5,11,25}
交:C={2,3,4,5} 就是既属于A的又属于B的那部分
并:C = {2,3,4,5,6,7,8,11,25} 两个集合的整合去掉重复的。A+B-AB(AB:公共部分)
差:C= {6,7,8}就是属于A但是不属于B的那部分
笛卡尔乘积:这个得出的集合就多了:举个例子。。假设集合A={a,b},集合B={c,d}则两个集合的笛卡尔积为{(a,c),(a,d),(b,c),(b,d)}
Ⅱ 用C语言编写一个集合的交,并和差运算的程序怎么写啊
/*第一,你的题意不明,我只能输入两个集合了【互异性由输入保证】*/
#include<stdio.h>
#include<string.h>
void main()
{
char temp[60]="",str1[30]="",str2[30]="",i,j,l1,l2,ch;
printf("STR1:");
gets(str1);
printf("STR2:");
gets(str2);
l1=strlen(str1);
l2=strlen(str2);
//交集
printf(" 交集: {");
for(i=0;i<l1;i++)
for(j=0;j<l2;j++)
if(str1[i]==str2[j]) printf("%c,",str1[i]);
printf("} ");
//并集 偷懒的算法: 合并->排序->删除相同
printf(" 并集: {");
/*合并*/sprintf(temp,"%s%s",str1,str2);
/*排序*/
for(i=0;i<l1+l2-1;i++)
for(j=i+1;j<l1+l2;j++)
if(temp[i]>temp[j])
{
char ch;
ch=temp[i];
temp[i]=temp[j];
temp[j]=ch;
}
/*删除相同字符*/
for(i=j=1;i<l1+l2;i++)
if(temp[i]!=temp[j-1]) temp[j++]=temp[i];
temp[j]='