全国计算机等级考试C语言上机考试专业辅导二
文章作者 100test 发表时间 2007:03:10 17:26:18
来源 100Test.Com百考试题网
编一C程序,它能读入集合A的一串整数(以-9999为结束标记,整数个数小于1000) 和集合B的一串整数(以-9999为结束标记,整数个数小于1000),计算出A与B的交集,并以由小到大的次序输出A与B的交集中的所有整数(输入整数时,相邻的两个用空格隔开。 为A或B输入时,同一个数可能出现多次,而A与B的交集中同一个数不能出现多次)。 (注:程序的可执行文件名必须是 e2.exe)
//注意调试程序时要多输入重复数据调试;本程序是根据青龙提供的程序改编,消除了重复数据的错误!;
#include
#include
void BuCountbbleSort(int r[],int n)
{//冒泡排序
int i,j,k.
int exchange.
for(i=0.i<=n.i )
{
exchange=0.
for(j=n-1.j>=i.j--)
if(r[j 1] {
k=r[j 1].
r[j 1]=r[j].
r[j]=k.
exchange=1.
}
if(!exchange)
break.
}
}
int BingJi(int m[],int n[],int l[],int Countaa,int Countbb)
{//求集合的并集
int i=0,j=0,k=0.
while(i<=Countaa&.&.j<=Countbb)
{
if(m[i] {//如果 m[i] l[k]=m[i].
k .
i .
}//endif
else if(m[i]>n[j]) 中国公务网 2004-5-27 22:11:50
{//如果 m[i]>n[j]则取小的值n[j],然后j .
l[k]=n[j].
k .
j .
}//end elseif
else
{//如果 m[i]==n[j],可以任取一个值,然后i .j .
l[k]=m[i].
k .
i .
j .
}//endelse
}//endwhile
if(i>Countaa)
{//如果i>Countaa,即数组m[i]中的元数个数较少,
//则把n[j]中的剩余元素,都付给l[]。
while(j<=Countbb)
{
l[k]=n[j].
j .
k .
}//endwhile
}//endif
if(j>Countbb)
{//如果j>Countbb,即数组n[i]中的元数个数较少,
//则把m[j]中的剩余元素,都付给l[]。
while(i<=Countaa)
{
l[k]=m[i].
i .
k .
}//endwhile
}//endif
return k.//返回生成的数组的元数个数
}//end BuCountbbleSort
int JiaoJi(int m[],int n[],int l[],int Countaa,int Countbb)
{//求集合的交集