问答题
给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。
例如,若N=3,有下列矩阵:
1 2 3
4 5 6
7 8 9
计算结果为
7 4 1
8 5 2
9 6 3
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在
下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
#define N 4
void fun(int (*t) [N])
{ int j,r[N];
for(j=0;j<N;j++) r[j]=t[0][j];
for(j:0;j<N;j++)
/**********found**********/
t[0][N-j-1]=t[j][______];
for(j=0;j<N;j++)
t[j][0]=t[N-1][j];
/**********found**********/
for(j=N-1;j>=0;______)
t[N-1][N-1-j]=t[j][N-1];
for(j=N-1;j>=0;j--)
/**********found**********/
t[j][N-1]=r[______];
}
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");
}
}