本题考查数据结构矩阵相关知识。
本题有隐含条件需要注意,虽然前半段描述的是我们存储的下三角部分元素,但是最后提问的是i<=j情况下,元素下标与k的对应关系,此时已经指向的是其对称元素位置了。
【方法1】可用代入法解决问题。
将S[1]=A[0][0]实例,对应上三角元素A[0][0],代入选项验证可得,只有B和C选项符合要求;
根据按行存储的顺序来看,下一个元素应该是A[1][0],对应上三角元素A[0][1],对应的一维数组位置为S[2],代入BC选项进行验证,选项结果都为2,无法区分;
根据按行存储的顺序来看,接下来元素应该是A[1][1],对应上三角元素A[1][1],对应的一维数组位置为S[3],代入BC选项进行验证,选项结果都为3,无法区分;
根据按行存储的顺序来看,接下来元素应该是A[2][0],对应上三角元素A[0][2],对应的一维数组位置为S[4],代入BC选项进行验证,选项C结果为3不符合要求,选项B结果为4是正确的选项;
所以本题选择B选项。
【方法2】也可以根据规律分析。对于对称矩阵A[][]结构如下:
A[0][0] A[0][1] A[0][2] ... A[0][n-1] A[0][n]
A[1][0] A[1][1] A[1][2] ... A[1][n-1] A[1][n]
A[2][0] A[2][1] A[2][2] ... A[2][n-1] A[2][n]
...
A[n-1][0] A[n-1][1] A[n-1][2] ... A[n-1][n-1] A[n-1][n]
A[n][0] A[n][1] A[n][2] ... A[n][n-1] A[n][n]
S[1]对应A[0][0],对于下三角元素A[i][j](i>=J),按行存储时,先处理前i-1行元素,此时每行对应元素分别为1、2、3、...、i-1、i个,求和,结果为(1+i)*i/2。接着处理第i行数据,本行列下标分别为0、1、2、...、j-1、j,共有j+1个元素。所以A[i][j]元素从S[1]开始,对应k=i(i+1)/2+j+1下标。这是下三角位置的分析过程。
再根据本题问题,i<=j的元素,此时是对称的上三角区域元素,对称关系为A[i][j]=A[j][i],将上面的表达式i、j位置互换即可,结果为k=j(j+1)/2+i+1。答案选择B选项。