📜  C |数组|问题5

📅  最后修改于: 2021-05-28 05:36:34             🧑  作者: Mango

考虑以下C函数,其中a [n]和b [m]是两个排序的整数数组,而c [n + m]是另一个整数数组。

void xyz(int a[], int b [], int c[])
{
  int i, j, k;
  i = j = k = O;
  while ((i

while循环终止后,以下哪个条件成立? (GATE CS 2006)
(i)如果i = n,则j (仅A) (i)
仅( B) (ii)
(C) (i)或(ii),但不能两者都选
(D) (i)或(ii)答案: (D)
说明:函数xyz()与mergeSort()的merge()类似,条件(i)和(ii)分别在k = n + j-1和k = m + i-1部分中为假。

while循环将a和b(以较小者为准)的元素添加到c中,并在它们中的任何一个耗尽时终止。因此,当循环终止时,i = n或j = m。

假设i = n。这意味着将数组a中的所有元素都添加到c => k时必须增加n。 c也将包含来自数组b的j个元素。因此,c中的元素数量为n + j,因此k = n + j。

类似地,当j = m时,k = m + 1。

因此,选项(D)是正确的。 (如果k从-1开始而不是0,并且我们在循环内使用了++ k,答案将是选项(C))
这个问题的测验