矩阵的转置在C中发送错误

时间:2015-12-30 12:46:03

标签: c

有两个2D数组,rc是它们的行和列,ij用于整数变量。

矩阵的转置运行良好,直到输入值rc

#include <stdio.h>

int main() {
    // your code goes here
    int a[50][50], b[50][50], i, j, r, c;

    printf("Enter the value of R and c");
    scanf("%d%d", &r, &c);

    for(i = 0; i < r; i++)
    {
        for(j = 0; j < c; j++)
        {
            scanf("%d", &a[i][j]);
        }
    }

    for(i = 0; i < r; i++)
    {  
        for(j = 0; j < c; j++)
        {
            b[i][j] = a[i][j];
        }
    }

    for(i = 0; i < r; i++)
    {
        for(j = 0; j < c; j++)
        {
            printf("%d\n", b[i][j]);
        }
        printf("\n");
    }

    return 0;
}

2 个答案:

答案 0 :(得分:2)

你不是“转置”矩阵。您只是将一个数组复制到另一个数组。要转置矩阵,您需要将行转换为列:

  for(i=0;i<r;i++)
    {
        for(j=0;j<c;j++)
        {
            b[j][i]=a[i][j];
        }
    }
打印时

并在循环条件中反转cr

for(i=0;i<c;i++)
{
    for(j=0;j<r;j++)
    {
        printf("%d\n",b[i][j]);
    }
    printf("\n");
}

请注意,您的阵列能够处理50x50。因此,您需要确保rc的输入值不超过这些限制。

答案 1 :(得分:0)

您的代码是

#include <stdio.h>

int main() {
    // your code goes here
    int a[50][50], b[50][50], i, j, r, c;

    printf("Enter the value of R and c\n");
    scanf("%d%d", &r, &c);

    for(i=0;i<r;i++)
    {
        for(j=0;j<c;j++)
        {
           scanf("%d",&a[i][j]);
        }


    }

    for(i=0;i<r;i++)
{
    for(j=0;j<c;j++)
    {
        printf("%3d",a[i][j]);
    }
    printf("\n");
}
  printf("\n");

    for(i = 0; i < c; i++)
    {
        for(j = 0; j < r; j++)
        {
            printf("%3d", a[j][i]);
        }
        printf("\n");
    }

    return 0;
}