填空题 给定程序中,函数fun的功能是建立一个N×N的矩阵。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。例如,若N=5,生成的矩阵为:
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include<stdio.h>
#define N 7
/**********found**********/
void fun(int (*a) 1)
{ int i, j, k, m;
if(N%2==0)m=N/2;
else m=N/2+1;
for(i=0; i<m; i++){
/**********found**********/
for(j= 2; j<N-i; j++)
a[i][j]=a[N-i-1][j]=i+1;
for(k=i+1; k<N-i; k++)
/**********found**********/
a[k][i]=a[k][N-i-1]= 3;
}
}
main()
{ int x[N][N]={0}, i, j;
fun(x);
printf("/nThe result is:/n");
for(i=0; i<N; i++)
{ for(j=0; j<N; j++)printf("%3d", x[i][j]);
printf("/n");
}
}
【正确答案】
【答案解析】(1)[N] (2)i (3)i+1 [解析] 填空1:本题考查了形参的确定。参数传递时将实参的值赋给形参,实参和形参是一一对应的,因此该空应该填写[N]。
填空2:第二重for循环中a[i][j]和a[N-i-1][j]表示第一行和最后一行数组a[N][N]的值,因而此空应该填写i。
填空3:第三重for循环代表的是a[N][N]中每一列的值,因此此空应该填写i+1。