首页 > 试题广场 >

矩阵转置

[编程题]矩阵转置
  • 热度指数:36274 时间限制: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)
#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>

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)
输出空的print()表示换行
n, m = map(int, input().split())
a = []

for i in range(n):
    a.append(list(map(int, input().split())))

for j in range(m):
    for i in range(n):
        print(a[i][j],end=" ")
    print()


编辑于 2024-02-09 22:49:46 回复(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");     
    }
    return 0;
}

发表于 2024-02-08 19:06:11 回复(0)
#include <stdio.h>

int main() {
    int arr[10][10] = { 0 };
    int rows = 0;
    int cols = 0;
    int i = 0;
    int j = 0;
    int tem = 0;

    //输入矩阵size
    scanf("%d %d", &rows, &cols);

    //输入矩阵元素
    for (i = 0; i < rows; i++) {
        for (j = 0; j < cols; j++) {
            scanf("%d", &arr[i][j]);
        }
    }

    //输出矩阵
    for (j = 0; j < cols; j++) { //列
        for (i = 0; i < rows; i++) { //行
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

编辑于 2024-02-04 00:17:23 回复(0)
package main

import (
    "fmt"
)

func main() {
    var n,m int
    fmt.Scan(&n,&m)

    sl1 := make([][]int, n)
    sl2 := make([][]int, m)

    for i:=0;i<n;i++{
        sl1[i]=make([]int, m)  
    }
    for i:=0;i<m;i++{
        sl2[i]=make([]int, n)
    }

    for i:=0;i<n;i++{
        for j:=0;j<m;j++{
            fmt.Scan(&sl1[i][j])
        }
    }

    for i:=0;i<m;i++{
        for j:=0;j<n;j++{
            sl2[i][j] = sl1[j][i]
            fmt.Printf("%d ", sl2[i][j])
        }
        fmt.Println()
    }
}
编辑于 2023-12-25 22:06:45 回复(0)
int main()
{
	int n = 0;
	int m = 0;
	scanf("%d %d", &n, &m);
	int arr[10][10] = { 0 };
	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;
}

发表于 2023-12-14 11:29:16 回复(0)
#include <stdio.h>

int main() {
    int n, m;
    scanf("%d %d", &n, &m);

    int arr[10][10] = { 0 };
    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;
}
编辑于 2023-12-05 17:29:03 回复(0)
#include <stdio.h>

int main()
{
    int n,m;
    int arr[1000][1000];
    int arr1[1000];
    int count = 0;
    scanf("%d %d",&n,&m);
    for(int i = 0;i<n*m;i++)
    {
        scanf("%d",&arr1[i]);
    }
    //转置
    for(int i = 0;i<n;i++)
    {
        for(int j = 0;j<m;j++)
        {
            arr[j][i] = arr1[count];
            count++;
        }
    }
    //打印
    for(int i = 0;i<m;i++)
    {
        for(int j = 0;j<n;j++)
        {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

编辑于 2023-12-01 22:15:59 回复(0)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int n = 0;
    int m = 0;
    scanf("%d%d", &n, &m);
    int arr[100] = { -1 };
    for (int i = 0; i < n * m; i++)
    {
        scanf("%d", &arr[i]);
    }
    for (int i = 0; i < m; i++)
    {
        int j = i;
        int count = 0;
        while (count - n)
        {
            printf("%d ", arr[j]);
            j += m;
            count++;
        }
        printf("\n");
    }
    return 0;
}
发表于 2023-11-20 21:09:16 回复(0)
#include <stdio.h>
int main()
{
    int m,n;
    scanf("%d %d",&n,&m);
    int arr[n][m],ar[m][n];
    int i;
    for(i=0;i<n;i++)
    {
        int j;
        for(j=0;j<m;j++)
        {
            scanf("%d ",arr[i]+j);
            ar[j][i] = arr[i][j];
        }
    }
    for(i=0;i<m;i++)
    {
        int j;
        for(j=0;j<n;j++)
        {
            printf("%d ",ar[i][j]);
        }
        printf("\n");
    }
    

    return 0;
}

发表于 2023-11-12 09:48:39 回复(0)
#include<stdio.h>
int main()
{
    int m = 0, n = 0;
    int arr1[10][10] = { 0 };
    int arr2[10][10] = { 0 };
    scanf("%d%d", &m, &n);
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &arr1[i][j]);
        }
    }
    for (int j = 0; j < n; j++) {
        for (int i = 0; i < m; i++) {
            arr2[j][i] = arr1[i][j];
            printf("%d ", arr2[j][i]);
        }
        printf("\n");
    }
    return 0;
}
发表于 2023-10-30 08:23:14 回复(0)

问题信息

上传者:牛客309119号
难度:
91条回答 3453浏览

热门推荐

通过挑战的用户

查看代码