矩阵旋转
描述
给你各一个n*n的矩阵,你的任务是将它顺时针旋转角度d。
输入
输入的第一个数为T,表示接下来有T组数据。
每组数据的格式如下:
第一行为两个整数n,d。1<=n<=100,d是90的倍数。
接下来有n行。每行n个整数,每个数之间由一个空格隔开,表示这个矩阵的元素。
输出
输出旋转后的矩阵,每个矩阵后面空一行,注意行末不要输出多余的空格。
输入样例 1
2 3 90 1 2 3 4 5 6 7 8 9 4 270 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
输出样例 1
7 4 1 8 5 2 9 6 3 4 8 12 16 3 7 11 15 2 6 10 14 1 5 9 13
就按照数组的下标,该输出哪个就输出哪个,即可。
注意:每一个数组结束后记得加\n !!!
#include<stdio.h> int a[100][100]; int main() { int i,j,n,d,t; scanf("%d",&t); while(t--) { scanf("%d %d",&n,&d); for(i=0;i<n;i++) { for(j=0;j<n;j++) scanf("%d",&a[i][j]); } if(d%360==90) { for(i=0;i<n;i++) { for(j=n-1;j>=0;j--) { printf("%d",a[j][i]); if(j!=0) printf(" "); else printf("\n"); } } } else if(d%360==180) { for(i=n-1;i>=0;i--) { for(j=n-1;j>=0;j--) { printf("%d",a[i][j]); if(j!=0) printf(" "); else printf("\n"); } } } else if(d%360==270) { for(j=n-1;j>=0;j--) { for(i=0;i<n;i++) { printf("%d",a[i][j]); if(i!=n-1) printf(" "); else printf("\n"); } } } else { for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%d",a[i][j]); if(j!=n-1) printf(" "); else printf("\n"); } } } printf("\n"); } return 0; }