问答题
[说明]
本程序将自然数1,2,……,N
2(N=5)按蛇形方式逐个顺序存入N阶矩阵。令n=N-1,则矩阵中的每一元素可用a
ij标记,其中i,j(0≤i,j≤n)分别为其所在行的行号和所在列的列号。蛇形方式顺序存放的方法是从a
n0开始、到a
0n为止,依次填入由1递增的自然数,交替地对每一斜列从左上角向右下角或从右下角向左上角排列。程序的输出为:
【正确答案】
【答案解析】(1) row_end-row_start (2) k++ (3) 2* n+1
(4) n,d-1,n+1-d (5) 2*n-d+1,n,0
[解析]
本程序中二维数组a[][]用于存放矩阵元素,k表示当前应存放的元素(从1开始递增的某个自然数)。数据的填充按斜对角线进行,n+1阶矩阵的斜对角线有2*n+1条(包括两个单点an0、a0n。函数makeArray对斜对角线进行编号,从矩阵左下角开始依次为d=1,…,2*n,对于每条斜对角线,根据数据在其上的填充方式(左上角到右下角还是右下角到左上角)确定起点行号row_start、列号col_start以及终点行号
row_end,再调用函数makeline为这条线上填数。makeline函数根据row_end-row_start的正负判断数值填充方式。