问答题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码。函数MergeAndSort(int s[],int e[],int a[],int m,int n)实现将两个数组合并。这两个数组已经有序,按照由小到大的顺序排列。 例如: e[]={1,3,5,6},m是数组e的长度,即为4。 a[]={2,4,5,7,11,13},n是数组a的长度,即为6。 则执行的结果为:s[]={1,2,3,4,5,6,7,11,13} 补充函数fun(int s[],int e[],hat a口,int m,int n),使之实现上述要求。 注意:请勿改动主函数。 #include void MergeAndSort(int S[], int e[],int a[],int m,int n) { } int main() { int data[2 0],i; int a[]={1,3,5,6); int b[]={2,4,5,7,11,13); cout<<”a[]=”; for(i=0;i<4; i++) cout<
【正确答案】正确答案:int i,j,k; i=0; j=0; k=0; while(i<m&&j<n) { if(e[i]<a[j]) { s[k++]=e[i++]; //取小的,因为从小到大排序 } else if(e[i]==a[j]) //相等,取e[i]或a[j]都可 { s[k++]=e[i]; i++; j++; } else //e[i]>a[j],取小 的a[j] { S[k++]=a[j++]; } } while(i<m)s[k++]=e[i++]; //如果数组e后面还有没有加进来的元素,则加进去 while(j<n) s[k++]=a[j++]; //如果数组a后面还有没有加进来的元素,则加进去
【答案解析】解析:函数MergeAndSort(int s[],int e[],inta[],int m,int n)实现将数组e和数组a的合并,这两个数组已经照由小到大的顺序排列,因此只需逐个比较e数组和a数组的元素值,每次取两个元素值的小的,如果相等则取两个当中的任意一个均可。