【c语言】旋转一个二维数组

                               
写个程序让下面数组旋转90度,不允许另外开辟数组:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
#include <stdio.h>

#include <string.h>

#include <stdlib.h>



void swap(int* a,int *b){

        int t=*a;

        *a=*b;

        *b=t;

}







void transp(int a[][4],int n){



        int i,j;



        for(i=0;i<n;i++)

                for(j=i+1;j<n;j++)

                        swap(&a[i][j],&a[j][i]);



        for(i=0;i<n/2;i++)

                for(j=0;j<n;j++)

                        swap(&a[i][j],&a[n-1-i][j]);





}



int main(){



        int a[][4]={

                {1,2,3,4},

                {5,6,7,8},

                {9,10,11,12},

                {13,14,15,16}

        };



        int i,j;



        for(i=0;i<4;i++)

                for(j=0;j<4;j++)

        {

                printf("%d\t",a[i][j]);

                if(3==j) printf("\n");

        }



        printf("\n");



        transp(a,4);



        for(i=0;i<4;i++)

                for(j=0;j<4;j++)

        {

                printf("%d\t",a[i][j]);

                if(3==j) printf("\n");

        }



        return 0;

}
View Code

 

你可能感兴趣的:(二维数组)