C語言對矩陣的轉制 二維數組行列互換

 //矩陣的轉制就是二維數組的行列互換,比如有這樣的一個矩陣a[3][3]=   1,2,3

                                                                                                                    4,5,6

                                                                                                                     7,8,9         

                                              你的目的就是要把它變成a[3][3]=   1,4,7

                                                                                                    2,5,8 

                                                                                                     3,6,9

你可以發現1,5,9的位置沒有改變。  如果你把矩陣按照1,5,9所在的直線對摺,發現後來的矩陣跟前面的矩陣重疊的位置交換下 也就是把第1行第2列換成第2行第1列 ,a[0][1]=a[1][0],  因此得出a[i][j]互換a[j][i],這裏以3*3的矩陣爲例

#include <stdio.h>
#define N 3

void convert(int a[][N])
{
    int i,j,temp;
    for(i=0;i<N;i++)
        for(j=i+1;j<N;j++)
        {
            temp=a[i][j];
            a[i][j]=a[j][i];
            a[j][i]=temp;
        }
    printf("轉置後:/n");
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
            printf("%d  ",a[i][j]);
        putchar('/n');
    }


void main()
{
  
    
    int i,j,a[N][N];
    printf("請爲數組賦值:");
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            scanf("%d",&a[i][j]);
    printf("初始數組:/n");
    for(i=0;i<N*N;i++)
    {
        printf("%d  ",*(a[0]+i));
        if((i+1)%3==0)

            printf("/n");
    }

    convert(array);
    
    printf("/n新數組:/n");
    for(i=j=0;i<N*N;i++)
    {
        printf("%d  ",*(a[0]+i))
        j++;
        if(j%3==0) puts("");
    }
}


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章