全国计算机等级考试C语言上机考试专业辅导二
写一个C程序,可以读入集合A中的一串整数(以-9999结尾,整数个数小于1000)和集合B中的一串整数(以-9999结尾,整数个数小于1000),计算A和B的交集,按降序输出A和B的交集中的所有整数(输入一个整数时, 相邻的两个整数用/[/]当输入a或b时,同一个数可能出现多次,但a和b的交集中的同一个数不能出现多次)。 (注意:程序的可执行文件名必须是e2.exe)
/注意,调试程序时要多输入一些重复数据进行调试;本程序是根据青龙提供的程序改编的,消除了重复数据的错误!;
#包括
#包括
Void冒泡排序(int r [],int n)
{//冒泡排序
int i,j,k;
int exchange;
for(I = 0;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(!交换)
break;
}
}
int bingji (int m [],int n [],int l [],int countaa,int count bb)
{/查找集合的并集
int i=0,j=0,k = 0;
while(in[j])中国官网2004-5-27 22:11:50
{//如果m[i]>n[j],取小值n[j],则j++;
l[k]= n[j];
k++;
j++;
}//end else If
else
{//If m[I]= = n[j],可以取任意值,然后i++;j++;
l[k]= m[I];
k++;
i++;
j++;
}//end else
}//end while
If(I > Countaa)
{/If I > Countaa,即数组m[i]中的元素个数较少,
//n[j]中剩余的所有元素都将支付给l[]。
while(j {
l[k]= n[j];
j++;
k++;
}//end while
}//endif
If(j > count bb)
{/If j > count bb,即数组n[i]中的元素个数较少,
//将m[j]中剩余的元素支付给l[]。
while(I {
l[k]= m[I];
i++;
k++;
}//end while
}//endif
返回k;//返回生成数组的元素个数
}//end bucountblesort
Int吉焦(Int m[],Int N [],Int L [],Int Countaa,Int count bb)
{//寻找集合的交集
//消除数组M
int w,x,y中的重复元素;
for(w = 0;w {
for(x = w+1;x {
if(m[w]= = m[x])
{
Countaa-;
for(y = x;y {
m[y]= m[y+1];
}//end for
x-;
}//endif
}//end for
}//end for
/*
//用下面的循环测试消除数组中重复元素的效果并输出
int z;
for(z = 0;z {
printf(%d,m[z]);
}
printf(\ n);
*/
//消除结束
/////////////////////////////
//Intersect
int I = 0,j = 0
while(I {
for(j = 0;J {//将一个集合的第一个元素与另一个集合的元素进行比较
//然后将第二个元素(直到最后一个元素)与另一个集合的元素进行比较
if(m[i]==n[j])
{//如果有相同的
k++;
break;
}//endif
}//end for
i++;
}//endwhile
//结束交集
///////////////////////
返回k;
}
void main()
{
int a[1000],b[1000],c[2000];
int exchange = 0;
int i,CountA,CountB,CountC
printf(输入a \ n);
for(I = 0;i {
scanf(%d,& a[I]);
if(a[I]= =-9999)
break;
}//end for
CountA = I-1;
BuCountbbleSort(a,CountA);//首先对集合A进行排序
printf(\ n输入b \ n);
for(I = 0;i {
scanf(%d,& b[I]);
if(b[I]= =-9999)
break;
}//end for
CountB = I-1;
BuCountbbleSort(b,CountB);//设置B排序
// CountC=BingJi(a,b,c,CountA,CountB);
CountC =吉焦(a,b,c,CountA,CountB);
printf(\ n \ n);
for(I = 0;i {
printf(%d,c[I]);
}
printf(\ n);
}
0条评论