问答题 给定程序中,函数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中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 4
/**********found**********/
void fun(int (*t)______)
{ int i,j;
for(i=1;i<N;i++)
{ for(j=0;j<i;j++)
{
/**********found**********/
______=t[i][j]+t[j][i];
/**********found**********/
______=0;
}
}
}
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");
}
}
【正确答案】
【答案解析】(1)[N] (2)t[i][j] (3)t[j][i]
答案考生文件夹 [解析] 函数fun的功能是将对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0,操作顺序是将对称元素相加存放在左下三角元素中,然后将右上三角元素置0。
第一空:在主函数中fun函数的调用形式是“fun(t);”,t是数组名,故fun函数的参数是指针,因此第一空处应为“[N]”。
第二空:“______=t[i][j]+t[j][i];”是将对称元素相加存放在左下三角元素中,左下三角元素可表示为t[i][j],故第二空处应为“t[i][j]”。
第三空:“______=0;”是将右上三角元素置0,右上三角元素可表示为t[j][i],故第三空为“t[j][i]”。
[考点] 二维数组、指向一维数组的指针以及指针数组。