使用VC6打开考生文件夹下的源程序文件modi2.cpp。完成fun()函数,其功能是:将两个从小到大有序数组a和b,复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。 注意:不能修改程序的其他部分,只能修改fun()函数。

admin2018-10-23  26

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。完成fun()函数,其功能是:将两个从小到大有序数组a和b,复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。
    注意:不能修改程序的其他部分,只能修改fun()函数。
1  #include<iostream.h>
2  void  fun  (int  a[],int  n,int b[],int m,int *c)
3  {
4
5  }
6  void main()
7   {
8    int A[]={3,5,7,9,11,18,21};
9    int B[]={6,15,19,21,39};
10    int C[25],i;
11    for(i=0;i<25;i++)C=0;
12    cout<<’’A[]=’’;
13    for(i=0;i<7;i++)
14    cout<<A  <<[,[;
15    cout<<end1;
16    cout<<’’B[]=’’;
17    for(i=0;i<5;i++)
18    cout<<B<<’,’;
19    cout<<end1;
20    fun(A,7,B,5,C);
21    cout<<’’C[]=’’;
22    for(i=0;i<12;i++)
23    cout<<C<<’,’,
24    cout<<end1;
25    return;
26  }

选项

答案1 int i,j; 2 for(i=j=0;i<n&&j<m;) 3 { 4 *c++=a[i]<b[j]?a[i++]:b[j++];//比较两个数组中元素大小 5 } 6 while(i<n)*c++=a[i++]; 7 while(j<m)*c++=b[j++];

解析 (1)该程序功能是将两个从小到大有序数组a和b,复制合并出一个有序整数序列c。它的解题思路,因为要合并的数组是有序数组,所以在循环中依次比较两个数组中的元素大小,如果它比另一个数组的元素小,那么将其拷贝到c,并将其向后移动,直到数组结尾。
    (2)从已给部分源程序的main主函数开始入手,核心函数void fun(int a[],int n,int b[],int m,int *c)中的a,b参数为要合并的数组,n和m为两个数组的大小,c为合并的结果。
    (3)首先都指向数组的第一个元素。
    (4)然后利用for循环对要合并的两个数组中的元素进行比较,直到两个数组结束。
    (5)取比较结果小的元素,并将指向这个数组的位置向后移动一位。
转载请注明原文地址:https://kaotiyun.com/show/RwAp777K
0

最新回复(0)