This example will show you how to compute transpose of a matrix in C program. In this example a user will be asked to enter the number of rows and columns for matrices. Then user will be asked to enter the elements at each index of the matrix. A matrix has to be square matrix for computing the transpose of that matrix.

Here we will see also how to use pointers to allocate memory dynamically for array using malloc function.

Transpose of an N x N (row x column) square matrix A is a matrix B such that an element b_{i,j} of B is equal to the element of a_{j,i} of A for 0<=i,j<N.

C program

/* * File: matrixTranspose.c * Author: https://www.roytuts.com * */ #include <stdio.h> #include <stdlib.h> void matrixTranspose(int **a, int r, int c) { int i, j, temp; for (i = 0; i < r; i++) { for (j = i + 1; j < c; j++) { temp = a[i][j]; a[i][j] = a[j][i]; a[j][i] = temp; } } } int main() { int i, j, rows, cols, **a; printf("Transpose of a Matrix"); printf("\nEnter number of rows :"); scanf("%d", &rows); printf("\nEnter number of columns :"); scanf("%d", &cols); // allocate rows, each row is a pointer to int a = malloc(rows * sizeof (int *)); // for each row allocate cols int for (i = 0; i < rows; i++) { a[i] = malloc(cols * sizeof (int)); } printf("\nEnter Matrix\n"); for (i = 0; i < rows; i++) { for (j = 0; j < cols; j++) { printf("Enter Element %d %d : ", i, j); scanf("%d", &a[i][j]); } } matrixTranspose(a, rows, cols); printf("\nTranspose of the given Matrix\n"); for (i = 0; i < rows; i++) { for (j = 0; j < rows; j++) { printf("%d ", a[i][j]); } printf("\n"); } return 0; }

Output

Transpose of a Matrix Enter number of rows :3 Enter number of columns :3 Enter Matrix Enter Element 0 0 : 1 Enter Element 0 1 : 2 Enter Element 0 2 : 3 Enter Element 1 0 : 4 Enter Element 1 1 : 5 Enter Element 1 2 : 6 Enter Element 2 0 : 7 Enter Element 2 1 : 8 Enter Element 2 2 : 9 Transpose of the given Matrix 1 4 7 2 5 8 3 6 9

Thanks for reading.

**Tags:**Function returning array • malloc • Pointer • Transpose of Matrix • Two Dimensional Array