如何实现将3*3的二维数组表示的方阵进行顺时针旋转90°函数rotate()?

并编写主函数验证之。
例如,rotate()函数将数组
11 22 33
44 55 66
77 88 99
变为:
77 44 11
88 55 22
99 66 33

函数式编程
浏览 175回答 2
2回答

精慕HU

#include "stdlib.h"void rotate(int (*a)[3]){int i,j;int temp[3][3];for (i=0;i<3;i++){for (j=0;j<3;j++)temp[j][2-i]=a[i][j];}for (i=0;i<3;i++){for (j=0;j<3;j++)a[i][j]= temp[i][j];}}main(){int i,j;int a[3][3]= {11,22,33, 44,55,66, 77,88,99};rotate(a);printf(“after transform\n”);for (i=0;i<3;i++){for (j=0;j<3;j++)printf(“%d\t”,a[i][j]);}

阿晨1998

#include "stdlib.h"void rotate(int* data){int t;t = data[0];data[0] = data[6];data[6] = data[8];data[8] = data[2];data[2] = tt = data[1];data[1] = data[3];data[3] = data[7];data[7] = data[5];data[5] = t;}int main(){int data[9] = {11,22,33,44,55,66,77,88,99};printf("原来的:");printf("%i %i %i\r\n",data[0],data[1],data[2]);printf("%i %i %i\r\n",data[3],data[4],data[5]);printf("%i %i %i\r\n",data[6],data[7],data[8]);rotate(data);printf("旋转后的:");printf("%i %i %i\r\n",data[0],data[1],data[2]);printf("%i %i %i\r\n",data[3],data[4],data[5]);printf("%i %i %i\r\n",data[6],data[7],data[8]);}
打开App,查看更多内容
随时随地看视频慕课网APP