/*(1)任务描述
编写程序实现两个集合的并、交,相对补,对称差的运算并判断两个集合是否相等?
(2)功能要求
①输入集合A与集合B的元素。
②输出集合A与B的并、交、相对补、差、对称差运算。
③输出集合A与B是否相等的断定结果。
④输出集合A与B的幂集。
*/
#include <stdio.h>
#include <stdio.h>
int main()
{
int jiaoji(int*A,int*B,int lenA,int lenB)
{
int i,j;
int flag,index=0,len=lenA>lenB?lenA:lenB;
int*buffer=(int*)malloc(sizeo(int)*len);
for(i=0;i<lenA;i++)
{
flag=0;
for(j=0;j<lenB;j++)
{
if(A[i]==B[j])
{
flag=1;
}
}
for(j=0;j<index;j++)
{
if(A[i]==buffer[j])
{
flag=0;
}
}
if(flag){buffer[index]=A[i];
index++;
}
}
printf("交集:{");
for(i=0;i<index;i++){
printf("%d",buffer[i]);
}
printf("}\n");
return 0;
}
int bingji(int*A,int*B,int lenA,int lenB)
{
int i,j,flag,index=lenB;
int*buffer=(int*)malloc(sizeof(int)*(lenA+lenB));
for(i=0;i<lenB;i++){
buffer[i]=B[i];
}
for(i=0;i<lenB;i++)
{
buffer[i]=B[i];
}
for(i=0;i<lenA;i++){
flag=1;
for(j=0;j<lenB;j++){
if(A[i]==B[j]){
flag=0;
}
}
if(flag){
buffer[index]=A[i]);
index++;
}
}
printf("并集:{");
for(i=0;i<index;i++){
printf("%d",buffer[i]);
}
printf("}\n");
return 0;
}
int xiangduibu(int*A,int*B,int lenA,int lebA);
{
int i,j;
int flag,index=0;
int*buffer=(int*)malloc(sizeof(int)*lenA);
for(i=0;i<lenA;i++){
flag=1;
for(j=0;j<lenB;j++){
if(A[i]==B[j]){
flag=0;
}
}
if(flag){
buffer[index]=A[i];
index++;
}
}
if (flag){
buffer[index]=A[i];
index++;
}
}
printf("相对补:{");
for(i=0;i<index;i++){
prtintf("%d",buffer[i]);
}
printf("}\n");
return 0;
}
int duichencha(int*A,int*B,int lenA,int lenB)
{
int i,j;
int flag,index=0;
int *buffer=(int*)malloc(sizeof(int)*lenA);
for(i=0;i<lenA;i++){
flag=1;
for(j=0;j<lenB;j++){
if(A[i]==B[j]){
flag=0;
}
}
if(flag){
buffer[index]=A[i];
index++;
}
}
for(i=0;i<lenB;i++){
flag=1;
for(j=0;j<lenA;j++){
if(B[i]==A[j]){
flag=0;
}
}
if(flag){
buffer[index]=B[i];
index++;
}
}
printf("对称差:{");
for(i=0;i<index;i++){
printf("%d",buffer[i]);
}
printf("}\n");
return 0;
}
for(i=0;i<len;i++){
for(j=i+1;j<lenA;j++}{
if(A[i]<A[j]){
temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
}
for(i=0;i<lenB;i++){
for(j=i+1;j<lenB;j++){
if(B[i]<B[j]){
temp=B[i];
B[i]=B[j];
B[j]=temp;
}
}
for(i=0;i<len;i++){
if(A[i]!=B[i]{
printf("\n与B不相等\n");
return 0;
}
}
printf("相等\n");
return 0;
}
int shu(int n)
{
int oup=1;
int i;
if(n==0){
return 1;}
}
for(i=0;i<n;i++){
oup=oup*2;
}
return oup;
}
int sum=0;
int i;
for(i=0;i<n;i++){
sum+=shu(i);
}
return sum;
}
int jisuan(int*buffer,int len)
{
int i;
for(i=0;i<len;i++){
if(buffer[i]==2){
buffer[i]=0;
buffer[i+1]+=1;
}
}
}
int shuchu(int*A,int*buffer,int len)
{
int i;
printf("{");
for(i=0;i<=len;i++){
if(bufer[i]==1){
printf("%d",A[i]);
}
}
printf("}");
}
int miji(int*A,int lenA)
{
int i,j;
int*buffer=(int*)malloc(sizeof(int)*lenA);
for(i=0;i<len;i++){
buffer[i]=0;
}
for(i=0;i<shusum(len);i++){
buffer[0]+=1;
jisuan(buffer,lenA);
shuchu(A,buffer,len);
}
}
int main()
{
int*A,*B;
int lenA;lenB;
int i;
printf("输入A,B的元素个数:\n");
scanf("%d,%d",&lenA,&lenB);
A=(int*)malloc(sizeof(int)*lenA);
B=(int*)malloc(sizeof(int)*lenB);
printf("输入A的元素:");
for(i=0;i<len;i++){
scanf("%d",&A[i]);
}
getchar();
printf("输入B的元素:");
for(i=0;i<lenB;i++){
scanf("%d",&B[i]);
}
xiangdeng(A,B,lenA,lenB);
jiaoji(A,B,lenA,lenB);
bingji(A,B,lenA,lenB);
printf("A对B的");
xiangduibu(A,B,lenA,lenB);
printf("B对A的");
xiangduibu(B,A,lenA,lenB);
duichencha(A,B,lenA,lenB);
printf("A的幂集:");
miji(A,lenA);
printf("{空集}\n");
printf("B的幂集:");
miji(B,lenB);
printf("{空集}\n");
syetem("pause");
return 0;
}
交并补
最新推荐文章于 2025-02-25 15:53:43 发布