百练的这道题很简单,通过率也达到了86%,所以我也就来贴个代码了。。。下面是题目:
不过还是说一下我的思路:
这道题对一个新来说,可能是会和矩阵的转置相混淆,这题并不是要我们去求矩阵的转置。
这题,我们只需要先得到这个矩阵,然后再按列的从小到大,行的从大到小来输出即可。顺便说一句,这是在做题,只要去把原矩阵旋转输出就行了,而在以后的软件程序中,我们最好还是用一个相同大小的矩阵来保存一份。指不定在程序的哪个地方还会用到原矩阵或是旋转后的矩阵。废话不多说,贴代码:
#include <stdio.h> #define MAXN 100 int main() { int m, n; int i, j; int mat[MAXN][MAXN]; scanf("%d", &m); while(m--) { // 输入行和列均为n的n阶矩阵 scanf("%d", &n); for(i = 0; i < n; ++i) { for(j = 0; j < n; ++j) { scanf("%d", &mat[i][j]); } } // 输出旋转后的矩阵 for(i = 0; i < n; ++i) { for(j = n - 1; j >= 0; --j) { printf("%d", mat[j][i]); if(j == 0) printf(" "); else printf(" "); } } } return 0; }
原题的连接:4075:矩阵旋转