问题
填空题
阅读以下说明和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 |
[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。