2012.B组 方阵旋转

来源:互联网 发布:bangbangbangmv知乎 编辑:程序博客网 时间:2024/05/16 08:39
方阵旋转    
对一个方阵转置,就是把原来的行号变列号,原来的列号变行号
例如,如下的方阵:
1  2  3  4
5  6  7  8
9 10 11 12
13 14 15 16
转置后变为:
1  5  9 13
2  6 10 14
3  7 11 15
4  8 12 16
但,如果是对该方阵顺时针旋转(不是转置),却是如下结果:
13  9  5  1
14 10  6  2
15 11  7  3

16 12  8  4

代码:

#include<stdio.h>int main(){    int n,i,j;    int a[10][10],b[10][10];    while(~scanf("%d",&n))    {        for(i=0;i<n;i++)            for(j=0;j<n;j++)                scanf("%d",&a[i][j]);        for(i=0;i<n;i++)            for(j=0;j<n;j++)                b[j][i]=a[i][j];//先转置;        for(i=0;i<n;i++)//再将行反着输出;            for(j=n-1;j>=0;j--)                printf(j==0?"%d\n":"%d ",b[i][j]);    }}