初始化2d数组然后转置它

时间:2013-11-14 01:44:21

标签: c arrays loops for-loop 2d

初学者,我想在C中编写一个程序来初始化一个8 x 10矩阵的每一行,A [8] [10],该行的值(第一行包含全0,第二行包含所有1的等。)

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)