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