已知有一维数组T[0...m*n-1],其中m>n。从数组T的第一个元素(T[0])开始,每隔n个元素取出一个元素依

题目

已知有一维数组T[0...m*n-1],其中m>n。从数组T的第一个元素(T[0])开始,每隔n个元素取出一个元素依次存入数组B[1...m]中,即B[1]=T[0],B[2)= T[n],依次类推,那么放入B[k](1≤k≤m)的元素是______。

A.T[(k-1)*n]

B.T[k*n]

C.T[(k-1)*m]

D.T[k*m]

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设C/C++二维数组a[m][n],每个数组元素占用k个存储单元,第一个数组元素的存储地址是LOC(a[0][0]),求按行优先顺序存放的数组元素a[i][j](0≤i≤m-1,0≤j≤n-1)的存储地址为()。

A.LOC(a[0][0])+[(i-1)×n+j-1]×k

B.LOC(a[0][0])+[i×n+j]×k

C.LOC(a[0][0])+[j×m+i]×k

D.LOC(a[0][0])+[(j-1)×m+i-1]×k


C

第2题:

已知有一维数组T[0...m*n-1],其中m>n。从数组T的第一个元素(T[0])开始,每隔n个元素取出一个元素依次存入数组B[1...m]中,即B[1]=T[0],B[2)= T[n],依次类推,那么放入B[k](1≤k≤m)的元素是( )。

A.T[(k-1)*n]
B.T[k*n]
C.T[(k-1)*m]
D.T[k*m]

答案:A
解析:
由题可知,B[1]=T[(1-1)*n],B[2]=T[(2-1)*n],B[3]=T[(3-1)*n],...,根据归纳法可得B[k]=T[(k-1)*n)。

第3题:

已知有二维数组A[0..n-1][0..n-1],其中当i+j=n时,A[i][j]≠0,现在要将A数组压缩存储到一维数组T[0..m],其中m>n。数组T的第一个元素T[0]=A[1][n-1] T[1]=A[2][n-2],……,依次类推,那么放入A[i][j](i+j=n)的元素是(37)。

A.T[i+j]

B.T[i*n+j]

C.T[i]

D.T[i-1]


正确答案:D
解析:由题可知,除第0行外,每一行只存储一个元素,因此i行应存放在T[i-1]之中。

第4题:

已知有一维数组T[0..m*n-1],其中m>n。从数组T的第一个元素(T[0])开始,每隔n个元素取出一个元素依次存入数组B[1..m]中,即B[1]=T[0],D[2]=T[n],依此类推,那么放入B[k](1≤k≤n)的元素是______。

A.T[(k-1)*n]

B.T(k*n)

C.T[(k-1)*m]

D.T[k*m]


正确答案:A
解析:根据题意,每隔n个元素取出一个元素依次存入数组B(1..m]中。所以,不难推导出B[1]=T[0],B[2]=T[n],B[3]=T[2n],…,B[k]=T[(k-1)n]故本题应该选择A。

第5题:

假设有一维数组T[O...m*n-1],其中m>n。从数组T的第一个元素(T[0])开始,每隔n个元素取出一个元素依次存入数组B[1...m)中,即B[1]=T[0],B[2]=T[n],依此类推,那么放入B[k](1≤k≤n)的元素是(120)。

A.T[(K-1)*m]

B.T[K*n)

C.T[(K-1)*n]

D.T[K*m]


正确答案:C
解析:代入k=1,得到B[k]=T[0];代入k=2,得到B[k]=T[n]。可见只有T[(K-1)*m)满足要求。

第6题:

已知有一维数组A[0...m*n-1],若要对应为m行、n列的矩阵,则下面的对应关系______可将元素A[k](0≤k<m*n)表示成矩阵的第i行、第j列的元素(0≤i<m,0≤j<n)。

A.i=k/n,j=k%m

B.i=k/m,j=k%m

C.i=k/n,j=k%n

D.i=k/m,j=k%n


正确答案:C
解析:本题其实是求一个一维数组A[m*n)向二维数组B[m][n]的转化问题。最原始的方法就是把A数组的前n个元素放到B数组的第一行中,A数组的第n个元素放到B数组的第二行中,依次类推,A数组的最后n个元素放到B数组的最后一行中。
  要求A[k]在B数组中的位置,首先确定A[k]处在哪一行,根据上面的存放方法,显然,应该是k/n行。然后再确定处在k/n行的哪一列,显然是k%n。

第7题:

设用一维数组A[1…n]来存储一个栈,令A[n]为栈底,用整型变量T指示当前栈顶位置,A[T]为栈顶元素。当从栈中弹出一个元素时,变量T的变化为

A.T:=T+1

B.T:=T-1

C.T不变

D.T:=n


正确答案:A

第8题:

●试题三

阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

函数move(int*a,int n)用于整理数组a[]的前n个元素,使其中小于0的元素移到数组的前端,大于0的元素移到数组的后端,等于0的元素留在数表中间。

令a[0]~a[low-1]小于0(初始为空);a[low]~a[i-1]等于0(初始为空);a[i]~a[high]还未考察,当前考察元素为a[i]。a[high+1]~a[n-1]大于0(初始为空)。

【函数】

move(int*a,int n)

{

int i,low,high,t;

low=i=0;high=n-1;

while( (1) )

if(a[i]<0)

{

t=a[i];a[i]=a[low];a[low]=t;

(2) ;i++;

}

else if( (3) )

{t=a[i];a[i]=a[high];a[high]=t;

(4) ;

}

else (5) ;

}


正确答案:

●试题三

【答案】(1)i<=high(2)low++(3)ai>0(4)high--(5)i++

【解析】程序的说明已经对程序的功能和相关变量解释得很清楚了,这儿就不再重复了。由变量i、变量low和变量high的含义和初值可以判断,ihigh之间的元素还未处理,因此while循环条件是"i<=high"或其等价形式,这就是(1)空所填写的内容。

(2)空所在语句块是处理当ai<0的情况,显然这时需要将ai]与alow]进行交换,交换后需要将ilow都要向后移动,因此(2)空处应填写"low++"或其等价形式。

(3)空需要填写执行(4)空所在语句块的条件,由(4)空所在语句块的可以判断,它是处理当ai>0的情况,因此(3)空处应填写"ai>0"或其等价形式。当ai>0时,需要将ai]与ahigh]进行交换,交换后需要将high都要向前移动,因此(4)空处应填写"high--"或其等价形式。注意这时i不能向后移动,因为交换后的ai]还没有处理,需要循环的下一趟进行处理。

ai=0情况,当ai=0时,不需要进行元素交换,只需将i向后移动就可以了,因此(5)空处应填写"i++"或其等价形式。

 

第9题:

●已知有二维数组A[0..n-1][0..n-1],其中当i+j=n时,A[i][j]≠0,现在要将A数组压缩存储到一维数组T[0..m],其中m>n。数组T的第一个元素T[0]=A[1][n-1] T[1]=A[2][n-2],……,依次类推,那么放入A[i][j](i+j=n)的元素是 (37) 。

(37) A.T[i+j]

B.T[i*n+j]

C.T[i]

D.T[i-1]


正确答案:D
【解析】由题可知,除第0行外,每一行只存储一个元素,因此i行应存放在T[i-1]之中。