使用VC++6.0打开考生文件夹下的源程序文件2.cpp。完成fun函数,使其功能为将两个按小到大排序的数组a和b,复制合并成一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。
注意:不能修改程序的其他部分,只能修改fun函数。
试题程序:
#include<iostream.h>
void fun(int a[],int n,int b[],int m,int *c)
void main()
int A[]=3,5,7,9,11,18,21;
int s[]=6,15,19,21,39;
int C[25],i;
for(i=0;i<25;i++)C[i]=0;
cout<<"A[]=";
for(i=0;i<7;i++)
cout<<A[i]<<’,’;
cout<<end1;
cout<<"B[]=";
for(i=0;i<5;i++)
cout<<B[i]<<’,’;
cout<<end1;
fun(A,7,B,5,C);
cout<<"C[]=";
for(i=0;i<12;i++)
cout<<C[i]<<’,’;
cout<<end1;
return;
参考答案:int i,j;
for(i=j=0;i<n&&j<m;)
{
*c++=a[i](b[j]a[i++]:b[j++]; //比较两个数组中元素大小
}
while(i<n)*c++=a[i++];
while(j(m)*c++=b[j++];
解析: 本题都指向数组的第一个元素。利用for循环对要合并的两个数组中的元素进行比较,直到两个数组结束。取比较结果小的元素,并将指向这个数组的位置向后移动一位。