實現二維陣列的行列互換

程式碼女民工發表於2021-11-05

#include<stdio.h>


void fun( int*,size_t );

void swap( int*,int* );


void print( const int*,size_t,size_t );


int main( void )

{

    

    int arr[][3]=

    {

        {1,2,3},

        {4,5,6},

        {7,8,9}

    };

    

    const size_t size=sizeof (arr)/sizeof (*arr);

    

    fun(*arr,size);

    print(*arr,size,size);

    

    return 0;

}


void fun( int* arr,size_t size )

{

             

    size_t i=0;

    size_t j=1;

    

    if (size==0)

        return ;


    for (;i!=size-1;++j!=size?1:(j=++i+1))

        swap(arr+size*i+j,arr+size*j+i);        

}


void swap( int* p,int* q )

{

    const int t=*p;

    

    *p=*q;

    *q=t;

}


void print( const int* arr,size_t col,size_t row )

{

    const size_t size=(col+1)*row;

    

    size_t i;    

    

    for (i=0;i!=size;++i)

    {

        const size_t m=i%(row+1);

        const size_t n=col*(i/col)+i%row-i/(row+1);

       

        printf("%-4d\000\n"+5*(m==row),*(arr+n));

    }

}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70007056/viewspace-2840810/,如需轉載,請註明出處,否則將追究法律責任。

相關文章