问题 填空题

在给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
则计算结果为:
1 0 0
6 5 0
10 14 9
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构。
文件BLANK1.C内容如下:
#include <stdio.h>
#define N 4
/**********found**********/
void fun(int(*t) (1) )

int i,j;
for(i=1;i<N;i++)
for(j=0;j<i;j++)
/**********found**********/
(2) =t[i][j]+t[j][i];
/**********found**********/
(3) =0;



void main( )
int t[][N]=21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10,i,j;
printf("\nThe original array: \n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)printf("%2d",t[i][j]);
printf("\n");

fun(t);
printf("\nThe result is: \n");
for(i=0;i<N;i++)
for(j=0;j<N;j++) printf("%2d",t[i][j]);
printf("\n");


答案

参考答案:t[j][i]

解析: main函数中定义了一个二维数组t存放了一个4×4矩阵。在main函数中调用fun函数,实现对二维数组的相关操作。因为二维数组的每一行都是一个一维数组,且元素个数为4,所以对应的形参t必须是一个指向4个元素一维数组的指针,因此第1空处应填入[N]。题目中的二维数组很特殊,其中存放的是一个方阵,方阵的特点是:有一个主对角线,主对角下方称为下三角,上方称为上三角。如果用t[i][j]表示下三角元素,则它的行下标i和列下标j的大小关系是:j<i,与之对称的上三角元素可以表示成t[j][i]。因此,在fun函数中通过一个两重循环的嵌套,按行的方向遍历数组元素,由于j循环的循环条件是j<i,所以t[i][j]表示下三角元素,t[j][i]则表示对称的上三角元素。两数相加的结果放在下三角中,所以第2空处应填入t[i][j],上三角元素置为0,所以第3空处应填入t[j][i]。

单项选择题
判断题