首页 > 试题广场 >

编写一个函数,输入为一个矩阵,打印这个矩阵转置后的结果。

[问答题]
编写一个函数,输入为一个矩阵,打印这个矩阵转置后的结果。
例:
输入矩阵是
1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,16

打印结果应该是
13,9,5,1
14,10,6,2
15,11,7,3
16,12,8,4

#include<stdio.h>
#include<stdlib.h>
int main()
{   
    int N;   
    while (~scanf("%d",&N))    
    {       
        int M[105][105] = { 0 };        
        for (int i = 0; i < N; ++i)       
            
            for (int j = 0; j < N; ++j)          
            {              
                scanf("%d", &M[j][i]);           
            }                         
        for (int i = 0; i < N; ++i)          
            for (int j = 0; j < N; ++j)           
            {              
                if (j < N - 1)                 
                    printf("%d ", M[i][j]);               
                else                  
                    printf("%d\n", M[i][j]);           
            }   
    }    
    return 0;
}


发表于 2017-04-02 15:07:34 回复(0)
#include <iostream>

using namespace std;

int main()
{
    int m,n;
    cin>>m>>n; // m行n列
    int **p=new int *[m]; // p为输入矩阵
    for(int i=0;i<m;i++)
    {
        p[i]=new int[n];
    }

    int **q=new int *[n]; // q为输出矩阵
    for(int t=0;t<n;t++)
    {
        q[t]=new int[m];
    }

    for(int j=0;j<m;j++) // 输入p中的元素并给q中的元素赋值
    {
        for(int k=0;k<n;k++)
        {
            cin>>p[j][k];
            q[k][m-j-1]=p[j][k];
        }
    }
    for(int r=0;r<n;r++) // 输出q中的元素
    {
        for(int s=0;s<m;s++)
        {
            cout<<q[r][s]<<" ";
        }
        cout<<endl;
    }

    return 0;
}


发表于 2015-10-05 21:35:47 回复(0)
class MatrixRoll: 
    def matrixRoll(self, E): 
          matrix1 = [[row[i] for row in E] for i in range(len(E[0]))] 
          for j in range(len(matrix1)): 
                  matrix1[j].reverse()
                  print matrix1 

测试用例 
x = MatrixRoll() 
x.matrixRoll(([1,2,3,4],[65,7,8,9])) 

 输出为 [[65,1],[7,2],[8,3],[9,4]]
编辑于 2015-09-15 10:41:16 回复(0)
JavaScript版本
function Trans(matrix) {
    let row = matrix.length;
    let col = matrix[0].length;
    let res = Array(col).fill(0).map(e => []);
    for(let i=0; i<row; i++) {
        for(let j=0; j<col; j++) {
            res[j][row-1-i] = matrix[i][j];
        }
    }
    return res;
}


发表于 2020-10-11 16:43:18 回复(0)
publicstaticvoidmatrixfunc(int[][] matrix,int[][] res){
    introw = matrix.length;
    intcol = matrix[0].length;
    for(inti = 0; i < row; i++) {
        for(intj = 0; j < col; j++) {
            res[j][row-i-1]=matrix[i][j];
        }
    }
}
发表于 2015-09-20 20:07:05 回复(0)
//matrix是原矩阵,res是结果矩阵
public static void matrixfunc(int[][] matrix,int[][] res){
    int row = matrix.length;
    int col = matrix[0].length;
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            res[j][row-i-1]=matrix[i][j];
        }
    }
}
发表于 2015-09-14 10:41:14 回复(1)