How to transpose a matrix (interchanging of rows and columns) in C

2 Answers

0 votes
#include <stdio.h> 

int main(void)
{   
    int matrix[3][3] = {{1, 2, 3},
                        {4, 5, 6},
                        {7, 8, 9}};
    int transpose[3][3] = {{0}};
  
    size_t rows = sizeof matrix/sizeof matrix[0];
    size_t cols = (sizeof matrix/sizeof matrix[0][0])/rows;
 
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < cols; j++)
            transpose[j][i] = matrix[i][j];
             
    for (int i = 0; i < cols; i++)  { // matrix[rows][cols] = transpose[cols][rows]
        for (int j = 0; j < rows; j++)
            printf("%d ", transpose[i][j]);
        printf("\n");
    }
     
    return 0;
}
 
   
/*
run:
 
1 4 7 
2 5 8 
3 6 9 
 
*/

 



answered Jun 1, 2017 by avibootz
edited Jan 18, 2021 by avibootz
0 votes
#include <stdio.h>

#define ROWS 2
#define COLS 3

void transpose(int input[ROWS][COLS], int output[COLS][ROWS]) {
    for (int i = 0; i < ROWS; ++i) {
        for (int j = 0; j < COLS; ++j) {
            output[j][i] = input[i][j];
        }
    }
}

void printMatrix(int matrix[COLS][ROWS]) {
    for (int i = 0; i < COLS; ++i) {
        for (int j = 0; j < ROWS; ++j) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
}

int main() {
    int matrix[ROWS][COLS] = {
        {1, 2, 3},
        {4, 5, 6}
    };

    int transposed[COLS][ROWS];

    transpose(matrix, transposed);
    printMatrix(transposed);

    return 0;
}



/*
run:

1 4 
2 5 
3 6 

*/

 



answered Jun 26, 2025 by avibootz
...