首页 > 试题广场 >

矩阵转置

[编程题]矩阵转置
  • 热度指数:41073 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

KiKi有一个矩阵,他想知道转置后的矩阵(将矩阵的行列互换得到的新矩阵称为转置矩阵),请编程帮他解答。


输入描述:

第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)

从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。



输出描述:
输出m行n列,为矩阵转置后的结果。每个数后面有一个空格。
示例1

输入

2 3
1 2 3
4 5 6

输出

1 4 
2 5 
3 6 
#include<stdio.h>
int main(){
    int m,n;
    scanf("%d %d",&m,&n);
    int a[m][n];
    for(int i=0;i<m;i++)
        for(int j=0;j<n;j++)
            scanf("%d",&a[i][j]);
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            printf("%d ",a[j][i]);
        }
        printf("\n");
    }
    return 0;
}

发表于 2021-04-10 16:16:16 回复(0)
#include <stdio.h>

int main(){
    int n, m, arr[10][10];
    scanf("%d %d", &n, &m);
    int i, j = 0;
    for(i = 0; i < n * m; i++, j++)
        scanf("%d", &arr[i / m][j % m]);
    for(i = 0; i < n * m; i++, j++){
        printf("%d ", arr[j % n][i / n]);
        if((j+1) % n == 0)
            printf("\n");
    }
    return 0;
}

发表于 2022-06-09 21:44:50 回复(1)
#include<stdio.h>
int main() {
    int n, m, arr[10][10];
    scanf("%d %d", &n, &m);
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            scanf("%d", &arr[i][j]);
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++)
            printf("%d ", arr[j][i]);
        printf("\n");
    }
    return 0;
}

发表于 2022-08-06 14:05:15 回复(0)
#include <stdio.h>

int main(){
    int n,m,i,j,flag=0;//flag标示是否矩阵是否相同
    int a[11][11]={0};
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%d ",a[j][i]);
        }
        printf("\n");
    }
    return 0;
}

发表于 2021-09-07 20:33:59 回复(1)
#include <stdio.h>
int main()
{
    int a[15][15],b[15][15];
    int i,j,n,m,flag=1;
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++){
        for(j=0;j<m;j++){
            scanf("%d",&a[i][j]);
        }
    }
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            printf("%d ",a[j][i]);
        }
        printf("\n");
    }
}

发表于 2020-04-10 18:48:37 回复(0)
int main()
{
    int arr[10][10] = {0};
    int n,m = 0;
    scanf("%d %d",&n,&m);
    int i = 0;
    int j = 0;

    for (i=0;i<n;i++)
    {
        for (j=0;j<m;j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    i = 0;
    j = 0;
    while (i!=n&&j!=m)
    {
        for (i = 0; i < n; i++)
        {
            printf("%d ", arr[i][j]);
        }
        if (i < n)
        {
            i++;
        }
        if (i == n)
        {
            i=0;
            j++;
            printf("\n");
        }

    }

    return 0;
}
发表于 2024-07-26 11:45:06 回复(0)
#include<stdio.h>
int main()
{
    int n,m,i,j;
    scanf("%d %d",&n,&m);
    int arr[n][m];
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            scanf("%d",&arr[i][j]);
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
            printf("%d ",arr[j][i]);//注意输出顺序,没有设两个二维数组
        //而是改变第一个二维数组的输出顺序
        printf("\n");
    }
    return 0;
}

发表于 2021-04-05 14:37:24 回复(1)
# include<bits/stdc++.h>
using namespace std;
int main()
{
    int hang,lie;
    cin>>hang>>lie;
    int arr[hang][lie],arr_num;
    for(int i = 0;i<hang;i++){
        for(int j = 0;j<lie;j++){
            cin>>arr_num;
            arr[i][j] = arr_num;
        }
    }
    for(int i = 0;i<lie;i++){
        for(int j = 0;j<hang;j++){
            cin>>arr_num;
            cout<<arr[j][i]<<" ";
        }
        cout<<endl;
    }
    
}

发表于 2020-10-02 21:39:37 回复(0)
#include <cstdio>
int main(){
    int n, m, a[11][11];
    scanf("%d %d", &n, &m);
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
            scanf("%d", &a[i][j]);
    for(int i = 0; i < m; i++){
        for(int j = 0; j < n; j++)
            printf("%d ", a[j][i]);
        printf("\n");
    }
    return 0;
}

发表于 2020-04-18 20:48:01 回复(0)
#include<stdio.h>
#define N 10
int main()
{
    int m, n;
    int j, i;
    printf("请输入\n");
    scanf_s("%d %d", &m, &n);
    int a[N][N];
    printf("请输入\n");
    for (i = 0; i <= m-1; i++)
        for (j = 0; j <= n-1 ; j++)
        {
            scanf_s("%d ", &a[i][j]);
        }

    for (i = 0; i <= m - 1; i++)
    {

        for (j = 0; j <= n - 1; j++)
        {
            printf("%d ", a[j][i]);
        }
        printf("\n");
    }
    return 0;

}
发表于 2024-11-11 18:26:11 回复(1)
#include<stdio.h>
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    int i,j,array[n][m];
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d",&array[i][j]);
        }
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%d ",array[j][i]);
        }
        printf("\n");
    }
    return 0;
}

发表于 2024-10-02 21:24:37 回复(0)
#开辟新空间数组
row,col = map(int,input().split())
arr = list(input().split() for _ in range(row))
newarr =[["0"]*row for _ in range(col) ] 

for i in range(row):
    for j in range(col):
        newarr[j][i] =arr[i][j]
for i in newarr:
    print(*i)


发表于 2024-09-29 18:51:35 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), m = in.nextInt();
        int[][] nums1 = new int[n][m];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                nums1[i][j] = in.nextInt();
            }
        }
        in.close();
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print(nums1[j][i] + " ");
            }
            System.out.println();
        }
    }
}

发表于 2024-09-11 10:48:29 回复(0)
#include <stdio.h>

int main() {
 int a,b;
   scanf("%d%d",&a,&b);
   int arr[a][b];
   //输入两行三列的二维数组
   for(int i=0;i<a;i++)
   {
    for(int j=0;j<b;j++)
    scanf("%d",&arr[i][j]);
   }
//输出三行两列的二维数组
  for(int i=0;i<b;i++)
   {
    for(int j=0;j<a;j++)
    printf("%d ",arr[j][i]);//列不动,行动
    printf("\n");
   }
    return 0;
}
发表于 2024-08-02 21:08:36 回复(0)
#include <stdio.h>

int main() {
    int n = 0;
    int m = 0;
    int arr[10][10] = { 0 };
    scanf("%d %d", &n, &m);
    int i = 0;
    int j = 0;
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < m; j++)
        {
            scanf("%d", &arr[i][j]);
        }
    }
    for (i = 0; i < m; i++)
    {
        for (j = 0; j < n; j++)
        {
            printf("%d ", arr[j][i]);
        }
        printf("\n");
    }
    return 0;
}
发表于 2024-07-28 15:36:26 回复(0)
int main()
{
	int n = 0;
	int m = 0;
	int i = 0;
	int j = 0;
	int arr[10][10]; 
	printf("请输入行和列:");
	scanf("%d%d", &n, &m);
	printf("请输入数据:");
	for ( i = 0; i < n; i++)
	{
		for ( j = 0; j < m; j++)
		{
			scanf("%d",&arr[i][j]);
		}
	}
	printf("输入前:\n");
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	printf("输入后:\n");
	for ( i = 0; i < m; i++)
	{
		for ( j = 0; j < n; j++)
		{
			printf("%d ", arr[j][i]);
		}
		printf("\n");
	}

	return 0;
}

发表于 2024-07-24 15:52:07 回复(0)
#include <stdio.h>
#define row 10
#define col 10
int main()
{
    int m = 0;
    int n = 0;
    int arr[row][col] = { 0 };
    scanf("%d %d",&m,&n);
    int i = 0;
    int j = 0;
    for(i = 0 ; i < m ; i++)
    {
        for(j = 0;j < n ; j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    for(i = 0 ; i < n ; i++)
    {
        for(j = 0 ; j < m ; j++)
        {
            printf("%d ",arr[j][i]);
        }
        printf("\n");
    }
    return 0;
}
发表于 2024-07-22 10:23:59 回复(0)
发表于 2024-05-13 08:45:46 回复(0)
#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d",&a ,&b);
    int arr1[10][10]={0};
    int arr2[10][10]={0};
    for (int i=0; i<a; i++) {
        for (int j=0; j<b; j++) {
            scanf("%d ",&arr1[i][j]);
            arr2[j][i]=arr1[i][j];
        }
    
    }
    for (int i=0; i<b; i++) {
        for (int j=0; j<a; j++) {
            printf("%d ",arr2[i][j]);
        }
        printf("\n");
    }    
    return 0;
}

编辑于 2024-04-11 19:31:45 回复(0)
#include<stdio.h>

int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    int arr[n][m];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            printf("%d ",arr[j][i]);
        }
        printf("\n");
    }
}

编辑于 2024-04-07 22:56:39 回复(0)