问题 填空题

阅读以下说明和C函数,填充函数中的空缺。
[说明]
已知两个整数数组A和B中分别存放了长度为m和n的两个非递减有序序列,函数Adiustment(A,B,m,n)的功能是合并两个非递减序列,并将序列的前m个整数存入A中,其余元素依序存入B中。例如:

合并前 合并后
数组A的内容 1,9,28 1,4,7
数组B的内容 4,7,12,29,37 9,12,28,29,37
合并过程如下:从数组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<m;i++)

if(A[i]<=B[0]) continue,
temp=______;/*将A中的最大元素备份至temp*/
/*从后往前依次考查A的元素,移动A的元素并将来自B的最小元素插入A中*/
for(k=m-1;______;k--)
A[k]=A[k-i];
A[i]=______;
/*将备份在temp的数据插入数组B的适当位置*/
for(k=1;______&&k<n;k++)
B[k-i]=B[k];
B[k-1]=______;

答案

参考答案:temp

解析:本题考查C语言中数组的基本概念和应用。
根据程序段中的注释,第一空处将数组A中的最大元素备份至temp。由于A中存放了长度为m的非递减有序序列,其最大元素为第m个元素,因此,第一空处应填入:A[m-1]或其等价表示。
程序段接下来的for循环实现从后往前依次考查A的元素,移动A的元素并将来自B的最小元素插入A中。由于B的最小元素插入到A[i]和A[m-1]之间,因此,第二空处的循环控制条件应填入:k>i。第三空处将B的最小元素b[0]插入到适当的位置,因此应填入B[0]或其等价表示。
程序段的最后一个for循环实现将备份在temp的数据插入数组B的适当位置。在将temp插入到B中时,须保持B的有序性,因此,第四空处应填入:temp>B[k]。第五空处实现将temp插入到B中,因此应填入temp。

问答题
应用设计题