首页 > 试题广场 >

矩阵转置

[编程题]矩阵转置
  • 热度指数:36806 时间限制: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 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)
#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 n, m, i, j;
    int a[10][10] = {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;
}
发表于 2023-07-27 16:54:26 回复(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;
}

发表于 2023-04-13 23:46:44 回复(0)
#include <stdio.h>
int main()
{
    int n = 0,m = 0;
    int arr[11][11] = {0};
    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 j = 0;j<m;j++)//列
    {
        for(int i = 0;i<n;i++)//行
        {
            printf("%d ",arr[i][j]);//列不变,行变
        }
        puts("");
    }
    return 0;
}

发表于 2023-03-22 21:54:15 回复(0)
#include <stdio.h>

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

    return 0;
}

发表于 2023-03-22 15:44:38 回复(0)
#include <stdio.h>
#include <stdlib.h>
int main(){
    int n, m;
    scanf("%d%d",&n,&m);
    //由外而内创建动态数组
    int **p = (int *)malloc(n * sizeof(int *));
    for(int i = 0; i < n; i++){
        p[i] = (int *)malloc(m * sizeof(int));
    }
    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            scanf("%d",&p[i][j]);
        }
    }
    for(int i = 0; i < m; i++){
        for(int j = 0; j < n; j++){
            printf("%d ",p[j][i]);
        }
        printf("\n");
    }
    //由内而外释放动态数组
    for(int i = 0; i < n; i++){
        free(p[i]);
    }
    free(p);
    return 0;
}

发表于 2022-08-22 14:19:58 回复(0)
#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;
    scanf("%d %d",&n,&m);
    int a[n][m];
    for(i=0;i<n;i++){
        for(j=0;j<m;j++){
            scanf("%d",&a[i][j]);
        }
    }
    for(j=0;j<m;j++){
        for(i=0;i<n;i++){
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
}
发表于 2022-07-26 12:04:07 回复(0)
#include <stdio.h>
int main(){
    int n, m;
    scanf("%d %d", &n, &m);
    int a[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;
}

发表于 2022-07-22 23:13:28 回复(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;
}
发表于 2022-07-13 23:09:58 回复(0)
#include<stdio.h>
int main()
{
    int n,m,a[10][10],b[10][10];
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            scanf("%d",&a[i][j]);
            b[j][i]=a[i][j];
        }
    }
    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            printf("%d ",b[i][j]);
        }
        printf("\n");
    }
}

发表于 2022-07-02 09:11:02 回复(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 arr[10][10] = { 0 };
    int n, m;
    scanf("%d%d", &n, &m);
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            scanf("%d\n", &arr[i][j]);
        }
    }
    for (int j = 0; j < m; j++)
    {
        for (int i = 0; i < n; i++)
        {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
}
发表于 2022-05-09 09:55:05 回复(0)
#include<stdio.h>
int main()
{
    int n = 0;
    int m = 0;
    scanf("%d %d",&n,&m);
    int i = 0;
    int arr[10][10];
    for(i = 0;i<n;i++)
    {
        int j = 0;
        for(j = 0;j<m;j++)
            scanf("%d ",&arr[i][j]);
    }
    for(i = 0;i<m;i++) //输出m行n列
    {
        int j = 0;
        for(j = 0;j<n;j++)
            printf("%d ",arr[j][i]);
        printf("\n");
    }
    return 0;
}

发表于 2022-05-06 18:03:34 回复(0)
#include<stdio.h>
int main()
{
    int n,m,i,j;
    int arr1[10][10]={0};
    int arr2[10][10]={0};
    scanf("%d%d",&n,&m);
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            scanf("%d",&arr1[i][j]);
            arr2[j][i]=arr1[i][j];
        }
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%d ",arr2[i][j]);
        }
        printf("\n");
    }
    return 0;
}

发表于 2022-04-29 14:30:11 回复(0)

问题信息

上传者:牛客309119号
难度:
29条回答 3485浏览

热门推荐

通过挑战的用户

查看代码