矩阵转置

问题:矩阵的数都是随机产生的,输入行数n,行数和列数一样,输出转置后的矩阵

代码:

#include

#include //进制转化 strtol和itoa  随机数rand()

#include   //随机数种子  srand((int)time(0))

#define random(x)rand()%(x);  //宏定义 产生随机数

using namespace std;

void print_ju(int **p,int n){

    for(int i=0;i

        for(int j=0;j

            cout<

        }

        cout<

    }

}

void zhuanzhi(int **a,int n){

    int i,j;

    for(i=0;i

        for(j=0;j<=i;j++){

            int temp=a[i][j];

            a[i][j]=a[j][i];

            a[j][i]=temp;

        }

    }

}

int main(){

    srand((int)time(0)); //产生随机数种子

    int n;

    cin>>n;

    int i,j;

    int **p=new int* [n];

    for(i=0;i

        p[i]=new int[n];

    }

    for(i=0;i

        for(j=0;j

            p[i][j]=random(100);

        }

    }

    print_ju(p,n);

    //转置

    zhuanzhi(p,n);

    cout<

    print_ju(p,n);

    return 0;

}

结果:

//行列不同的矩阵转置

代码:

#include

#include

#include

using namespace std;

void free(int **p,int n){

    //释放空间

    for(int i=0;i

        delete[] p[i];

    }

    p=NULL;

}

int main(){

    srand((int)time(0));//随机数种子

    int n,m;

    cin>>n>>m;

    int **p=new int*[n];

    for(int i=0;i

        p[i]=new int[m];

    }

    for(int i=0;i

        for(int j=0;j

            p[i][j]=rand()%1000+1;//产生1到1000之内的数字

            cout<

        }

        cout<

    }

    cout<

    int a[m][n];//这是转置后的数组

    int i=0,j=0;

    while(1){

        if(i==n){

            break;

        }

        if(j==m){

            j=0;i++;

            continue;

        }

        a[j][i]=p[i][j];

        j++;

    }

    for(int i1=0;i1

        for(int j1=0;j1

            cout<

        }

        cout<

    }

    //释放空间

    free(p,n);

    return 0;

}

结果:

你可能感兴趣的:(矩阵转置)