编一个C语言程序,实现A并(B-C)的功能???

如题所述

第1个回答  2011-09-26
B-C的算法思路
for(i,B的元素数次 )
{
for(j,C的元素数次)
{
if(C[i]==C[j])
把B[i]从B中删除;
}
}

A并D (D=B-C)
for(i,D的元素数次)
{
int ex=0;
for(j,A的元素数次)
{
if(A[j]==D[i]) ++ex;
}
if(ex!=0) 把D[i]加到A的末尾;
}

其中把B[i]从B中删除的算法比较多,可以视情况而定
比如你的ABC数组都是大于零的正整数的话, B[i]=-1; 这句话就可以标识为删除了,当然只是你心里知道,到时候调用A数组的时候得有个判断语句遇到小于零的自动跳过比如。
如果不是这种情况的话那就没办法了,用线性表的删除算法,数据结构书上有
第2个回答  2011-09-26
//A并(B-C)
#include <stdio.h>
int sub( int set1[] , int l1 , int set2[] , int l2 , int set[] )
{
int i=0,j=0,k=0;

//检查set1中的元素,如果不在set2中,则加入set
for( i=0;i<l1;i++ )
{
for(j=0;j<l2;j++)
{
if ( set1[i] == set2[j] )
break;
}
//set1[i]不在set2中
if ( j == l2 )
set[k++]=set1[i];
}
return k;
}
int or_ab( int set1[] , int l1 , int set2[] , int l2 , int set[] )
{
int i=0,j=0,k=0;

//先把set1放入set中
for( i=0;i<l1;i++ )
set[k++]=set1[i];

//检查set2中的元素,如果不在set1中,则加入set
for(j=0;j<l2;j++)
{
for( i=0;i<l1;i++ )
{
if ( set1[i] == set2[j] )
break;
}
//set2[j]不在set1中
if ( i == l1 )
set[k++]=set2[j];
}
return k;
}
int main( void )
{
int A[]={1,3,5,7} , lena=4;
int B[]={1,3,2,5,4,6,8} ,lenb=7;
int C[]={2,8,4,10}, lenc=4;
int D[100];
int E[100];
int i=0;
//sub:B-C
int len=sub( B ,lenb, C ,lenc , D );
for( i=0;i<len;i++ )
printf("%3d" , D[i] );
printf("\n");
//or_ab:A并(B-C)
len=or_ab( A , lena , D , len , E );

for( i=0;i<len;i++ )
printf("%3d" , E[i] );
printf("\n");
return 0;
}本回答被提问者采纳
第3个回答  2011-09-26
#include<stdio.h>
int main()
{
int a[10],b[5],c[5],d[5];
int i,j,t;
printf("请输入集合A:\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
printf("请输入集合B:\n");
for(i=0;i<5;i++)
scanf("%d",&b[i]);
printf("请输入集合C:\n");
for(i=0;i<5;i++)
scanf("%d",&c[i]);
for(j=0;i<4;j++)
{
for(i=0;i<4-j;i++)
{
if(a[i]>a[i+1])
{
t=a[i];a[i]=a[i+1];a[i+1]=t;
}
if(b[i]>b[i+1])
{
t=b[i];b[i]=b[i+1];b[i+1]=t;
}
if(c[i]>c[i+1])
{
t=c[i];c[i]=c[i+1];c[i+1]=t;
}
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
if(c[i]==b[j])
{
b[i]=b[i+1];
}
}
t=5;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
if(a[i]==b[j])
{
t++;
b[j]=b[j+1];
}
}
for(i=0;i<5;i++)
{
printf("%d ",a[i]);
}
for(i=0;i<t-5;i++)
{
printf("%d",b[i]);
}
return 0;
}
第4个回答  2011-09-26
A并(B-C)楼主的意思是指a&(b-c)吗?A、B、C是三个数?还是三个数组?
如果是第一个那很简单的
#include <stdio.h>
int main()
{
int a,b,c;
printf("输入三个数:\n");
sacnf("%d %d %d",&a,&b,&c);
printf("%d\n",a&(b-c));//1表示a与(b-c)中间均不为0,0表示a与b-c中间有一个为0
return 0;
}追问

三个数组咯!就是集合的意思。。。

第5个回答  2011-09-26
这个要看A\B\C里面的元素是什么类型的了。追问

都是集合,是整形的