1

初学者在这里,我想用 C 语言编写一个程序,用该行的值初始化 8 x 10 矩阵 A[8][10] 的每一行(第一行包含全 0,第二行包含全 1 等)

打印此矩阵后,我想转置它,制作第二个矩阵 B[10][8]

我正在尝试使用嵌套的 for 循环,但我似乎无法接近答案。

4

2 回答 2

1

如果您想在自己的代码中执行此操作,这里有一个示例:

#include<stdio.h>

#define ROWS 8
#define COLS 10

int main(int argc, char *argv[])
{
    int A[ROWS][COLS];
    int B[COLS][ROWS];
    int i,j;

    /*populate*/
    for (i=0; i<ROWS; i++)
    {
        for (j=0; j<COLS; j++)
        {
            A[i][j] = 2*i + j;
        }
    }

    /*display*/
    printf("=== Original matrix === \n");

    for (i=0; i<ROWS; i++)
    {
        for (j=0; j<COLS; j++)
        {
            printf("%3d  ", A[i][j]);
        }
        printf("\n");
    }


    /*transpose*/
    for (i=0; i<ROWS; i++)
    {
        for (j=0; j<COLS; j++)
        {
            B[j][i] = A[i][j];
        }
    }


    /*display*/
    printf("\n\n=== Transposed matrix === \n");

    for (i=0; i<COLS; i++)
    {
        for (j=0; j<ROWS; j++)
        {
            printf("%3d  ", B[i][j]);
        }
        printf("\n");
    }

    return 0;
}

输出:

=== 原始矩阵 ===

0 1 2 3 4 5 6 7 8 9

2 3 4 5 6 7 8 9 10 11

4 5 6 7 8 9 10 11 12 13

6 7 8 9 10 11 12 13 14 15

8 9 10 11 12 13 14 15 16 17

10 11 12 13 14 15 16 17 18 19

12 13 14 15 16 17 18 19 20 21

14 15 16 17 18 19 20 21 22 23

=== 转置矩阵 ===

0 2 4 6 8 10 12 14

1 3 5 7 9 11 13 15

2 4 6 8 10 12 14 16

3 5 7 9 11 13 15 17

4 6 8 10 12 14 16 18

5 7 9 11 13 15 17 19

6 8 10 12 14 16 18 20

7 9 11 13 15 17 19 21

8 10 12 14 16 18 20 22

9 11 13 15 17 19 21 23

于 2013-11-14T02:19:43.357 回答
0

GSL - GNU 科学图书馆可能会有所帮助。

http://www.gnu.org/software/gsl/

他们在这里有一个类似的例子http://www.gnu.org/software/gsl/manual/html_node/Example-programs-for-matrices.html#Example-programs-for-matrices

于 2013-11-14T01:48:12.190 回答