【答案解析】
[分析] 试题一
信息处理过程中经常需要将图片点阵或汉字点阵做旋转处理。这种方法可以简化为对n*n矩阵的旋转处理。其中,n应该是一个变量,运行时由该程序模块外部导入具体的值。编程技术的一个基本要点就是对通用的情况找出规律,再按规律进行处理。
试题中给出了“按顺时针方向旋转90°”的例子。在这种场合,用案例说明比叙述定义更为简单。人们也不难在案例的基础上推广理解。
对于问题1,人们不难获得另一个案例:

对于问题2,根据按顺时针方向旋转90°保持矩阵不变,可以逐步推断出一些元素的值:

对于问题3,矩阵A按顺时针方向旋转90°得到矩阵B,矩阵B按顺时针方向旋转 90°得到矩阵C。
矩阵A的第1行复制到矩阵B的第n列。
矩阵A的第2行复制到矩阵B的第n-1列。
矩阵A的第3行复制到矩阵B的第n-2列。
按照上述规律,矩阵A的第i行应复制到矩阵B的第n-i+1列。
A(i,j)是矩阵A的第i行第j列的元素,它应复制到矩阵B的第n-i+1列中,第j行元素。即A(i,j)→B(j,n-i+1)。
矩阵B的第1行复制到矩阵C的第n列。
矩阵B的第2行复制到矩阵C的第n-1列。
按照上述规律,矩阵B的第j行应复制到矩阵C的第n-j+1列。
B(j,n-i+1)是矩阵B的第j行第n-i+1列的元素,它应复制到矩阵C的第n-j+1列中,第n-i+l行元素。即B(j,n-i+1)→C(n-i+l,n-j+1)。
反之,矩阵B的第1列来自矩阵A的第n行。
矩阵B的第2列来自矩阵A的第n-1行。
按照上述规律,矩阵B的第j列来自矩阵A的第n-j+1行。
B(i,j)是矩阵B的第j列中第i行元素,它来自矩阵A的第n-j+1行中第i列的元素,即B(i,j)←A(n-j+1,i)。
另一种更理性的方法是:在导出按顺时针方向旋转90°的变换
A(i,j)→B(j,n-i+1)
后,就能通过推导再导出其他多次变换。可以将上述变换写成:
A(x,y)→B(u,v)
从而,B(j,n-i+1)可以直接变换到C(n-i+l,n-j+1)。而且,可以直接导出A(n-j+1),i)→B(i,j)。
