For working professionals
For fresh graduates
More
Talk to our experts. We are available 7 days a week, 9 AM to 12 AM (midnight)
Indian Nationals
Foreign Nationals
The above statistics depend on various factors and individual results may vary. Past performance is no guarantee of future results.
The student assumes full responsibility for all expenses associated with visas, travel, & related costs. upGrad does not .
Recommended Programs
5. Array in C
13. Boolean in C
18. Operators in C
33. Comments in C
38. Constants in C
41. Data Types in C
49. Double In C
58. For Loop in C
60. Functions in C
70. Identifiers in C
81. Linked list in C
83. Macros in C
86. Nested Loop in C
97. Pseudo-Code In C
100. Recursion in C
103. Square Root in C
104. Stack in C
106. Static function in C
107. Stdio.h in C
108. Storage Classes in C
109. strcat() in C
110. Strcmp in C
111. Strcpy in C
114. String Length in C
115. String Pointer in C
116. strlen() in C
117. Structures in C
119. Switch Case in C
120. C Ternary Operator
121. Tokens in C
125. Type Casting in C
126. Types of Error in C
127. Unary Operator in C
128. Use of C Language
Matrix multiplication in C is one of the most fundamental yet powerful operations in programming, widely used in mathematics, computer graphics, engineering, and scientific computing. It allows programmers to handle large datasets, solve linear equations, perform transformations, and model real-world systems efficiently. In C programming, matrices are represented as 2D arrays, and their multiplication requires a systematic approach where rows and columns are combined using loops.
In this article, we will walk you through the complete process of matrix multiplication in C. You’ll learn the algorithm, flowchart, and different methods to multiply square and rectangular matrices. We’ll also explore sample codes, examples, and the use of functions for cleaner implementation, along with the benefits of applying matrix operations in C.
Looking to build a career in software development? Kickstart your journey with upGrad’s Software Engineering programs, designed in collaboration with top universities and industry leaders. Explore diverse learning paths and gain the skills to thrive in today’s tech-driven world!
Matrix is an ordered rectangular array of functions or numbers. A matrix with n vertical lines, known as columns, and m horizontal lines, known as rows, is a matrix of order m by n.
Learn essential object-oriented programming concepts and advance your skills with our specialized programs to excel in software development.
Multiplication of two matrices is possible only when the number of columns in the first matrix equals the number of rows in the second matrix. Hence, the order of the product of the two matrices will be equivalent to the number of rows in the first matrix and the number of columns in the second matrix.
The dot product of the first row of the first matrix and the first column of the second matrix leads to the first element of the product matrix. You can perform matrix multiplication in C using function or without it.
Step-1: Enter the value of m and n, i.e., the order of the first matrix.
Step-2: Enter the value of p and q, i.e., the order of the second matrix.
Step-3: Define a matrix of size a[m][n] and b[p][q].
Step-4: Enter the element of each matrix (row-wise) to calculate matrix multiplication in C using for loop.
Step-5: If the number of columns of the first matrix doesn’t equal the number of rows of the second matrix, then print the below message “matrix multiplication is incompatible” and exit. If not, move to the next step.
Step-6: Define a third matrix c (result matrix) of size m x q to save the multiplication result.
Step-7: Create a for loop from i=0 to i=m.
Step-8: Create an inner loop in the above loop from j=0 to j=q.
Step-9: Initialise the value of the element i & j of the new matrix to 0.
Step-10: Create an inner loop from k=0 to k=p within the above loop.
Step-11: Use add (+) and assign (=) operator to save the value of a[i][k] * b[k][j] in the result matrix c[i][j].
Step-12: Print the output of the result matrix.
Flowchart of Matrix Multiplication
In C, there are two types of matrices: square matrices and rectangular matrices. Let's begin by exploring how to multiply two square matrices in C.
A square matrix is one in which the number of rows and columns are the same. You can perform matrix multiplication in C of two square matrices only if both the matrices have the same order. The corresponding elements are multiplied and added to the products together.
An easy way to understand this is to develop the code for 2x2 matrix multiplication in C and 3x3 matrix multiplication in C.
Here’s the code for the multiplication of two square matrices:
#include<stdio.h>
int main() {
int a[5][5], b[5][5], c[5][5], n, x, y, z;
printf("Enter the value of N (N <= 5): ");
scanf("%d", & n);
printf("Enter the elements of Matrix-1: \n");
for (x = 0; x < n; x++) {
for (y = 0; y < n; y++) {
scanf("%d", & a[x][y]);
}
}
printf("Enter the elements of Matrix-2: \n");
for (x = 0; x < n; x++) {
for (y = 0; y < n; y++) {
scanf("%d", & b[x][y]);
}
}
for (x = 0; x < n; x++) {
for (y = 0; y < n; y++) {
c[x][y] = 0;
for (z = 0; z < n; z++) {
c[x][y] += a[x][z] * b[z][y];
}
}
}
printf("The product of the two matrices is: \n");
for (x = 0; x < n; x++) {
for (y = 0; y < n; y++) {
printf("%d\t", c[x][y]);
}
printf("\n");
}
return 0;
}
Output:
Enter the value of N (N <= 5): 2
Enter the elements of Matrix-1:
1 3
3 4
Enter the elements of Matrix-2:
4 6
1 2
The product of the two matrices is:
7 12
16 26
In the above code, the first step defines the input, output, and resultant matrix sizes. The user is prompted to enter the elements of matrix-1 and matrix-2. Subsequently, the program runs the for loop to multiply and add the elements of the matrices. The loop runs until ‘n’ (the size of a square matrix).
In a rectangular matrix, the number of rows and the number of columns are unequal. Unlike the square matrix, the rectangular matrix allows matrix multiplication in C with different dimensions. The number of columns in the first matrix must equal the number of rows in the second matrix. Otherwise, you will get an error
Here’s the code for the multiplication of two rectangular matrices:
#include <stdio.h>
void multiplyMatrices(int mat1[][3], int row1, int col1, int mat2[][2], int row2, int col2, int result[][2]) {
int x, y, z;
// Performs matrix multiplication
for (x= 0; x < row1; x++) {
for (y = 0; y < col2; y++) {
result[x][y] = 0;
for (z = 0; z < col1; z++) {
result[x][y] += mat1[x][z] * mat2[z][y];
}
}
}
}
void showMatrix(int mat[][2], int row, int col) {
int x, y;
printf("Resultant Matrix:\n");
for (x = 0; x < row; x++) {
for (y = 0; y < col; y++) {
printf("%d ", mat[x][y]);
}
printf("\n");
}
}
int main() {
int row1, col1, row2, col2;
printf("Enter the number of rows and columns for Matrix 1: ");
scanf("%d %d", &row1, &col1);
printf("Enter the number of rows and columns for Matrix 2: ");
scanf("%d %d", &row2, &col2);
if (col1 != row2) {
printf("Matrix multiplication is not possible!\n");
return 0;
}
int mat1[row1][col1];
int mat2[row2][col2];
int result[row1][col2];
int x, y;
printf("Enter the elements of Matrix 1:\n");
for (x = 0; x < row1; x++) {
for (y = 0; y < col1; y++) {
scanf("%d", &mat1[x][y]);
}
}
printf("Enter the elements of Matrix 2:\n");
for (x = 0; x < row2; x++) {
for (y = 0; y < col2; y++) {
scanf("%d", &mat2[x][y]);
}
}
multiplyMatrices(mat1, row1, col1, mat2, row2, col2, result);
showMatrix(result, row1, col2);
return 0;
}
In the above code of rectangular matrix multiplication in C, the first step initialises the rows and columns of the input matrices and the result matrix. The user then inputs the elements of each matrix. The program runs the for loop to multiply and add the elements of each of the input matrices. If the number of columns in the first matrix is not equal to the number of rows in the second matrix, it displays a message that matrix multiplication is not possible.
Output:
Enter the number of rows and columns for Matrix 1: 2 3
Enter the number of rows and columns for Matrix 2: 3 4
Enter the elements of Matrix 1:
1 2 3
2 3 4
Enter the elements of Matrix 2:
1 2 3 4
2 3 4 5
1 5 4 2
Resultant Matrix:
13 19 19 28
19 28 28 37
Let’s try running the above program in the case when the number of columns in the first matrix doesn’t equal the number of rows in the second matrix. Here’s the output.
Output:
Enter the order of first matrix
1 4
Enter the order of second matrix
1 4
Matrix multiplication is not possible
The code for matrix multiplication in C without function may be long. You can pass a function to simplify the code for matrix multiplication. The method of passing a function involves allowing the user to input the matrix using the input() function. The display() function is used to show the matrix’s result. You can name a function multiply() and use it to calculate the multiplication of two matrices.
Matrix multiplication in C is an essential concept for programmers and learners. It shows how mathematical logic can be applied directly in coding. By mastering the algorithm, flowchart, and implementation, you develop strong problem-solving and logical thinking skills.
Practicing with both square and rectangular matrices helps you understand nested loops, functions, and efficient memory use. These basics prepare you for advanced fields like AI, computer graphics, and engineering.
Matrix multiplication in C also builds confidence in handling real-world problems that involve large datasets. With consistent practice, you strengthen your programming foundation and gain skills that are valuable for future career growth.
Learning core programming concepts like matrix multiplication in C is just the beginning of your journey. To move beyond the basics, you need structured guidance, real-world projects, and mentorship. That’s where upGrad comes in.
With industry-relevant programs and expert instructors, upGrad helps you strengthen your coding foundation and apply mathematical logic to solve complex problems. You also get access to free beginner-friendly courses, including Python, to broaden your programming skills alongside C.
Speak to an upGrad counselor today and discover how you can progress from mastering concepts like matrix multiplication in C to building a rewarding career in technology.
Matrix multiplication in C is the process of multiplying two matrices represented as 2D arrays. It involves computing the dot product of rows and columns to form a new matrix. This operation is fundamental in mathematics and widely applied in programming, including computer graphics, simulations, and data processing.
Matrix multiplication in C follows strict rules. The number of columns in the first matrix must equal the number of rows in the second matrix. If this condition is satisfied, the resultant matrix will have dimensions equal to the rows of the first matrix and the columns of the second matrix.
Matrix multiplication is important because it enables handling of large-scale data and solving mathematical problems efficiently. It is widely used in fields like computer graphics, image processing, machine learning, and engineering applications. Practicing matrix multiplication in C helps programmers apply mathematical logic to practical, real-world problems in computing.
To implement matrix multiplication in C, define two matrices, check if multiplication is possible, and use nested loops to multiply and sum corresponding elements. The result is stored in a new matrix. Using functions can simplify and structure the program for better readability and reusability.
The algorithm involves several steps: input the order of two matrices, check compatibility, define a result matrix, and initialize it. Then, use three nested loops—one for rows, one for columns, and one for the dot product—to compute results. Finally, display the output matrix with multiplied values.
Yes, you can multiply square matrices in C if both have the same order. For example, multiplying two 2x2 or two 3x3 matrices is possible. The dot product of rows and columns gives the resulting matrix, which is also square. Square matrix multiplication is commonly practiced for learning purposes.
To multiply rectangular matrices in C, ensure that the number of columns in the first matrix equals the number of rows in the second. Unlike square matrices, rectangular matrices can have different dimensions. Using nested loops, you multiply rows of the first matrix with columns of the second to get results.
If the number of columns in the first matrix does not equal the number of rows in the second, matrix multiplication in C is not possible. In such cases, the program should print an error message like “Matrix multiplication is not possible” and exit without performing calculations.
The time complexity of matrix multiplication in C is O(n³) for standard algorithms, as it uses three nested loops. For larger datasets, this can be computationally expensive. Optimized methods like Strassen’s algorithm or libraries can reduce the complexity, but basic C implementations typically follow the cubic time approach.
Yes, functions can be used to simplify matrix multiplication in C. You can create functions like multiply() to handle multiplication, input() for entering matrix elements, and display() for printing results. This approach makes the code cleaner, modular, and easier to debug compared to writing everything inside main().
Matrix multiplication in C is applied in computer graphics, 3D modeling, scientific computing, neural networks, and physics simulations. It is also useful in solving systems of linear equations, transformations, and handling large datasets efficiently. Mastering it prepares you for advanced concepts in AI, engineering, and scientific programming.
In C, matrices are stored as 2D arrays. During multiplication, the program allocates memory for input matrices and the resultant matrix. Proper initialization and indexing ensure efficient memory use. Since C uses static or dynamic allocation, programmers must carefully manage memory to avoid overflow or segmentation errors.
Yes, matrix multiplication in C can handle floating-point numbers by declaring arrays with float or double data types instead of int. This is useful in scientific and engineering applications where precision is required. The multiplication and addition operations remain the same but allow decimal-based results.
No, matrix multiplication is generally not commutative. Multiplying matrix A with matrix B does not always yield the same result as multiplying B with A. The order of multiplication matters, as row-column combinations differ, which leads to different results or sometimes makes the operation invalid.
Matrix addition in C involves adding corresponding elements of two matrices of the same dimensions. Matrix multiplication, however, requires the number of columns in the first matrix to equal the rows in the second, and it computes the dot product of rows and columns instead of element-wise addition.
After computing the result matrix, use nested loops to print each element row by row. The printf() function can be used with tab spacing (\t) for better formatting. Printing the result in matrix form makes it easier to visualize the multiplication output clearly.
Yes, you can use dynamic memory allocation functions like malloc() or calloc() to handle matrices when dimensions are unknown at compile time. This is particularly useful when working with large matrices. After completing operations, freeing allocated memory with free() prevents memory leaks in C programs.
Nested loops are essential because multiplication involves iterating over rows of the first matrix and columns of the second. The outer loops traverse rows and columns, while the innermost loop calculates the dot product. Without nested loops, multiplying each element accurately would not be possible in C.
Yes, pointers can be used for matrix multiplication in C. By treating a matrix as a contiguous memory block, pointers help access and manipulate elements efficiently. This method is often used in advanced C programming for dynamic allocation, memory optimization, and performance improvement in large-scale applications.
To test matrix multiplication in C, use small matrices like 2x2 or 3x3 and manually calculate expected results for verification. Input values, run the program, and compare outputs with manual calculations. Gradually, test larger matrices to ensure correctness and efficiency of your implementation under various conditions.
Take a Free C Programming Quiz
Answer quick questions and assess your C programming knowledge
FREE COURSES
Start Learning For Free
Author|900 articles published