用c语言编写两个集合的运算

分别输入两个数据元素类型为正整数的集合A和集合B(集合大小在100个元素之内),输出两个集合的交、并、差。... 分别输入两个数据元素类型为正整数的集合A和集合B(集合大小在100个元素之内),输出两个集合的交、并、差。 展开
 我来答
飘零的狐狸
2019-06-18 · TA获得超过1.8万个赞
知道大有可为答主
回答量:9251
采纳率:77%
帮助的人:2436万
展开全部

记得采纳哦

集合

#include "stdafx.h"

#include <stdio.h>

int fun(int a,int M[])//判断元素是否在集合里 在返回1 不在返回0

{

int i=0;

for(i=0;M[i]!=0;i++)

if(a==M[i]) return 1;

return 0;

}

void get(int M[])//输入集合元素

{

int i=0;

printf("\n");

do

{

scanf("%d",&M[i++]);

}

while(M[i-1]!=0);

}

void print(int M[])//打印集合

{

int i=0;

printf("\n");

while(M[i]!=0)

{

printf("%d ",M[i++]);

}

printf("\n");

}

void clear(int M[])

{

int i=0;

do

{

M[i++]=0;

}

while(M[i]!=0);

}

void fun_sum(int A[],int B[],int C[])//集合A和集合B的并集

{

int i,j;

for(i=0;A[i]!=0;i++)

{

C[i]=A[i];

}

for(j=0;B[j]!=0;j++)

{

if(!fun(B[j],C)) C[i++]=B[j];

}

}

void fun_sub(int A[],int B[],int C[])//集合A和集合B的差集

{

int i,j=0;

for(i=0;A[i]!=0;i++)

{

if(!fun(A[i],B)) C[j++]=A[i];

}

}

void fun_J(int A[],int B[],int C[])//集合A和集合B的交集

{

int i,j=0;

for(i=0;A[i]!=0;i++)

{

if(fun(A[i],B)) C[j++]=A[i];

}

}

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

{

int A[50]={0},B[50]={0},C[100]={0};

printf("请输入集合A以0结束\n");

get(A);

printf("请输入集合B以0结束\n");

get(B);

fun_sum(A,B,C);

printf("集合A与集合B的并:\n");

print(C);

clear(C);

fun_sub(A,B,C);

printf("集合A与集合B的差:\n");

print(C);

clear(C);

fun_J(A,B,C);

printf("集合A与集合B的交:\n");

print(C);

return 0;

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式