阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。 【说明】 已知两个整数数组A和B中分别存放了长度为m和n的两个非递减有序序列,函数Adjustment(A,B,m,n)的功能是合并两个非递减序列,并将序列的前m个整数存

admin2013-07-03  41

问题 阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。
    【说明】
    已知两个整数数组A和B中分别存放了长度为m和n的两个非递减有序序列,函数Adjustment(A,B,m,n)的功能是合并两个非递减序列,并将序列的前m个整数存入A中,其余元素依序存入B中。例如:
   
    合并过程如下:从数组A的第一个元素开始处理。用数组B的最小元素B[0]与数组A的当前元素比较,若A的元素较小,则继续考查A的下一个元素;否则,先将A的最大元素暂存入temp,然后移动A中的元素挪出空闲单元并将B[0]插入数组A,最后将暂存在temp中的数据插入数组B的适当位置(保持B的有序性)。如此重复,直到A中所有元素都不大于B中所有元素为止。
    【C函数】
    void Adjustment(int A[],int B[],int m,int n)
    {  /*数组A有m个元素,数组B有n个元素*/
    int k,temp;
    for(i=0;i        {
        if(AEi]<=B[0]) continue,
        temp=  (1)  ;/*将A中的最大元素备份至temp*/
        /*从后往前依次考查A的元素,移动A的元素并将来自B的最小元素插入A中*/
    for(k=m-1;    (2)    ;k- -)
      A[k]=A[k-1];
    A=    (3)   
         /*将备份在temp的数据插入数组B的适当位置*/
     for(k=1;    (4)    &&k<n;k++)
       B[k-1]=BEk];
     B[k-1]=  (5)  
    }
}

选项

答案(1)A[m-1]或*(A+m-1)或其等价表示 (2)k>i (3)B[0]或*B (4)temp>BEk]或其等价表示 (5)temp

解析 本题考查C语言中数组的基本概念和应用。
    根据程序段中的注释,(1)处将数组A中的最大元素备份至temp。由于A中存放了长度为m的非递减有序序列,其最大元素为第m个元素,因此,(1)处应填入A[m一1]或其等价表示。
    程序段接下来的for循环实现从后往前依次考查A的元素,移动A的元素并将来自B的最小元素插入A中。由于B的最小元素捕入到A和A[m一1]之间,因此,(2)处的循环控制条件应填入k>i。(3)处将B的最小元素b[0]插入到适当的位置,因此应填入B[0]或其等价表示。
    程序段的最后一个for循环实现将备份在temp的数据插入数组B的适当位置。在将temp插入到B中时,须保持B的有序性,因此,(4)处应填入temp>B[k]。(5)处实现将letup插入到B中,因此应填入temp。
转载请注明原文地址:https://kaotiyun.com/show/MnjZ777K
0

最新回复(0)