厦门理工学院离散数学实验2_集合论
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《离散数学》实验报告
实验序号:2 实验项目:集合论
附源程序清单:
1.#include<stdio.h>
main()
{
int a[10]={1,2,3,4,5,6,7,8,9};
int b[5]={3,1,7,9};
int i,j,m=0,p=9,q=4;
for(i=0;i<p;i++)
{
if(3==a[i])
m++;
}
if(m!=0)
printf("3属于集合A\n");
else
printf("3不属于集合A\n");
m=0;
for(i = 0;i<p;i++)
{
if(10==a[i])
m++;
}
if(m!=0)
printf("10属于集合A\n");
else
printf("10不属于集合A\n");
m=0;
for(i=0;i<p;i++)
{
for(j=0;j<q;j++)
{
if(a[i]==b[j])
m++;
}
}
if(m=4)
printf("集合B属于集合A\n");
else
printf("集合B不属于集合A\n");
return 0;
}
2.#include<stdio.h>
int main(){
int a[80],b[80],c[80],e[80];
int m,n,k,l,i,j,p,q,o;
l=1;
while(l){
printf(" ###欢迎使用集合运算软件###\n");
printf("#请输入您要输入的A数组内存放的数字的数目:");
scanf("%d",&m); //输入一个数组内需要存放的数字的数目
printf("#请输入集合A中的元素:");
scanf("%d",&a[0]);
for(i=1;i<m;i++){
scanf("%d",&a[i]);
for(j=0;j<i;j++)
if(a[i]==a[j]){
printf("#您的输入有误!集合中的元素不能相同!\n");
printf("#请重新输入:");
for(i=0;i<m;i++)
scanf("%d",&a[i]);
} //判断数组内是否存在重复的数字,若有,能重新输入
}
printf("#请输入您要输入的B数组内存放的数字的数目:");
scanf("%d",&n);
printf("#请输入集合B中的元素:");
scanf("%d",&b[0]);
for(i=1;i<n;i++){
scanf("%d",&b[i]);
for(j=0;j<i;j++)
if(b[i]==b[j]){
printf("#您的输入有误!集合中的元素不能相同!\n");
printf("#请重新输入:"); //重新输入集合B for(i=0;i<n;i++)
scanf("%d",&b[i]);
}
}
p=k;
printf("#A数组与B数组的交集为{");
for(k=0;k<p;k++)
printf("%d ",c[k]);
printf("}\n"); //交集的代码
k=0;
for(q=0;q<p;q++)
c[q]=0; //将C数组置空
for(i=0;i<m;i++){
c[k]=a[i];
k++;
}
for(i=0;i<n;i++)
for(j=0;j<k;j++){
if(b[i]==c[j]) break;
if(j==k-1){
c[k]=b[i];
k++;}
} //并集的代码
p=k; //确定C数组当前的数目,便于下一次置空printf("#A数组与B数组的并集为{");
for(k=0;k<p;k++)
printf("%d ",c[k]);
printf("}\n");
k=0;
for(q=0;q<p;q++)
c[q]=0;
for(j=0;j<m;j++)
for (i=0;i<n;i++){
if (a[j]==b[i])
break;
if(j==n-1)
{
c[k]=a[i];
k++;
} //差运算的代码}
p=k;
printf("#A数组与B数组的差运算集为{");
for(k=0;k<p;k++)
printf("%d ",c[k]);
printf("}\n");
k=0;
for(q=0;q<p;q++)
c[q]=0;
for (i=0;i<o;i++)
for (j=0;j<m;j++)
{
if (e[i]==a[j])
break;
if (j==m-1)
{
c[k]=e[i];
k++;
}
} //补运算的代码
printf("#您是否还想继续计算。
是请输入1,否请输入0\n");
scanf("%d",&l);
} //while语句判断是否继续
printf("\n\n欢迎使用,再见!\n");
return 0;
}
3.#include <iostream>
#include <cstring>
#include <ctype.h>
#include <stdlib.h>
#include <string>
using namespace std;
char a[100];
char b[100];
void GetPowerSet(int i, char a[])
{
char x;
int k;
int len = strlen(a);
if(i >= len)
{
if(b[0])
cout << b << endl;
else
cout << "空集" << endl; // 表示空集}
else
{
x = a[i];
k = strlen(b);
b[k] = x;
GetPowerSet(i+1, a);
b[k] = 0;
GetPowerSet(i+1, a);
}
}
int main()
{
printf("请输入集合");
while(scanf("%s", a) != EOF)
{
printf("%s的幂集是:\n", a);
printf("------------\n");
GetPowerSet(0, a);
printf("------------\n");
}
}。