有一个NN的矩阵-将矩阵的外围元素进行顺时针旋转
- 格式:docx
- 大小:23.37 KB
- 文档页数:1


2006上半年程序员考试真题及答案-下午卷试题一(共15分)阅读以下说明和流程图,回答问题1至问题3,将解答填入答题纸的对应栏内。
[说明]信息处理过程中经常需要将图片或汉字点阵做旋转处理。
一个矩阵以顺时针方向旋转90°后可以形成另一个矩阵,如下图所示:A BCDE F G H1 J K L M N O P ───→M I E AN J F BO K G CP L H D流程图1-1描述了对n*n矩阵的某种处理。
流程图1-2是将矩阵A顺时针旋转90°形成矩阵B的具体算法。
[流程图1-1][流程图1-2][问题1](3分)请写出以下3*3单位矩阵沿顺时针方向旋转90°后所形成的矩阵。
[问题2](3分)如果以下3*3矩阵沿顺时针方向旋转90°后所形成的矩阵就是原来的矩阵:其中,位于*处的元素需要考生填写请完整地写出该矩阵。
[问题3](9分)在上述流程图1-1和1-2的算法中,(1)矩阵A第i行第j列的元素A(i,j)被复制到矩阵B中的哪个位置?(2)A(i,j)后来又被复制到矩阵C中的哪个位置?(3)填补流程图1-2中的空缺。
试题二(共15分)阅读以下说明和C语言函数,将应填入__(n)__处的字句写在答题纸的对应栏内。
[说明]函数chanse(int num)的功能是对四位以内(含四位)的十进制正整数num进行如下的变换:将num的每一位数字重复一次,并返回变换结果。
例如,若num=5234,则函数的返回值为55223344,其变换过程可描述为:(4*10+4)*1 + (3*10+3)*100 + (2*10+2)*10000 + (5*10+5)*1000000 = 55223344 [C语言函数]long change (int num){int d, m =num;long result, mul;if (num <= 0 || [__(1)__) /*若num不大于0或num 的位数大于4,则返回-1*/return -1;mul = 1;__(2)__;while (m > O) {d = m % 10;m = __(3)__;result = result + (__(4)__) * mul;mul = __(5)__;}return result;}试题三(共15分)阅读以下说明和C语言函数,将应填入__(n)__处的字句写在答题纸的对应栏内。
习题2答案习题2. 写出完成如下平面图形变换的变换矩阵;(1) 保持点(5,10)固定,x 方向放大3倍,y 方向放大2倍。
(2) 绕坐标原点顺时针旋转︒90。
(3) 对直线x y =成轴对称。
(4) 对直线x y -=成轴对称。
(5) 沿与水平方向成θ角的方向扩大1S 倍,沿与水平方向成θ+︒90角的方向扩大2S 倍。
(6) 对于平面上任意一点),(00y x 成为中心对称。
(7) 对平面上任意一条方程为0=++C By Ax 的直线成轴对称。
解答:(1)变换矩阵如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=⋅⋅--11010020003)10,5()2,3()10,5(T S T(2) 变换矩阵如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡︒-︒--︒-︒-=︒-1000010101000)90cos()90sin(0)90sin()90cos()90(R(3) 变换矩阵如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡-⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡-=︒-⋅-⋅︒10000101010002222022221000100011000222202222)45()1,1()45(R S R(4) 变换矩阵如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡-⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡-=︒-⋅-⋅︒10000101010002222022221000100011000222202222)45()1,1()45(R S R(5) 变换矩阵如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⋅+⋅⋅⋅-⋅⋅-⋅+⋅=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-----=⋅⋅-1000cos sin sin cos )(0sin cos )(sin cos 1000)cos()sin(0)sin()cos(10000001000)cos()sin(0)sin()cos()(),()(2221212122212121θθθθθθθθθθθθθθθθθθS S S S S S S S S S R S S S R(6) 变换矩阵如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=⋅--⋅--1220100011010001100010001101001),()1,1(),(0000000y x y x y x y x T S y x T(7) 变换矩阵如下:对平面上任意一条方程为0=++C By Ax 的直线成轴对称 当0A ≠时,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡+-+-+-+-+-+-=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡++-++⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡+++-+⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=-⋅--⋅-⋅-⋅122020210010001100001000100011000010010001)0,())(()1,1())(()0,(22222222222222222222222222222222B A BC B A AC B A B A B A AB B A ABB A A B AC B A A BA B B A B B A A B A A B A B B A B B A A A C AC T A B arctg R S A B arctg R A C T或者当0≠B 时,⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡+-+-+-+-+-+-=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡+++-+⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡++-++⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=-⋅-⋅-⋅--⋅122020210010001100001000100011000010010001),0())(()1,1())((),0(22222222222222222222222222222222B A BCB A AC B A B A B A AB B A ABB A A B BC B A B B A A B A A B A B B A B B A A B A A B A B B C BC T B A arctg R S B A arctg R B C T习题5. 举例说明由平移、比例或旋转构成的组合变换一般不能交换变换的次序,说明什么情况下可以交换次序。