用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