C语言教程
C语言控制语句
C语言函数
C语言数组
C语言指针
C语言字符串
C语言数学函数
C语言结构
C语言文件处理
C预处理器

C 使用多维数组将两个矩阵相乘的程序

使用多维数组将两个矩阵相乘的 C 程序

在本例中,您将学习将两个矩阵相乘并使用用户定义的函数显示它。
要理解此示例,您应该了解以下C 编程 主题:
C 数组 C 多维数组
该程序要求用户输入两个矩阵的大小(行和列)。
两个矩阵相乘,第一个矩阵的列数应该等于第二个矩阵的行数。
下面的程序要求两个矩阵的行数和列数,直到满足上述条件。
然后,执行两个矩阵的相乘,并将结果显示在屏幕上。
为此,我们创建了三个函数:
getMatrixElements()-获取用户输入的矩阵元素。 multiplyMatrices()-两个矩阵相乘。 display()-显示乘法后的结果矩阵。

通过将矩阵传递给函数来乘以矩阵

#include <stdio.h>
// function to get matrix elements entered by the user
void getMatrixElements(int matrix[][10], int row, int column) {
   printf("\nEnter elements: \n");
   for (int i = 0; i < row; ++i) {
      for (int j = 0; j < column; ++j) {
         printf("Enter a%d%d: ", i + 1, j + 1);
         scanf("%d", &matrix[i][j]);
      }
   }
}
// function to multiply two matrices
void multiplyMatrices(int first[][10],
                      int second[][10],
                      int result[][10],
                      int r1, int c1, int r2, int c2) {
   // Initializing elements of matrix mult to 0.
   for (int i = 0; i < r1; ++i) {
      for (int j = 0; j < c2; ++j) {
         result[i][j] = 0;
      }
   }
   // Multiplying first and second matrices and storing it in result
   for (int i = 0; i < r1; ++i) {
      for (int j = 0; j < c2; ++j) {
         for (int k = 0; k < c1; ++k) {
            result[i][j] += first[i][k] * second[k][j];
         }
      }
   }
}
// function to display the matrix
void display(int result[][10], int row, int column) {
   printf("\nOutput Matrix:\n");
   for (int i = 0; i < row; ++i) {
      for (int j = 0; j < column; ++j) {
         printf("%d  ", result[i][j]);
         if (j == column-1)
            printf("\n");
      }
   }
}
int main() {
   int first[10][10], second[10][10], result[10][10], r1, c1, r2, c2;
   printf("Enter rows and column for the first matrix: ");
   scanf("%d %d", &r1, &c1);
   printf("Enter rows and column for the second matrix: ");
   scanf("%d %d", &r2, &c2);
   // Taking input until
   // 1st matrix columns is not equal to 2nd matrix row
   while (c1 != r2) {
      printf("Error! Enter rows and columns again.\n");
      printf("Enter rows and columns for the first matrix: ");
      scanf("%d%d", &r1, &c1);
      printf("Enter rows and columns for the second matrix: ");
      scanf("%d%d", &r2, &c2);
   }
   // get elements of the first matrix
   getMatrixElements(first, r1, c1);
   // get elements of the second matrix
   getMatrixElements(second, r2, c2);
   // multiply two matrices.
   multiplyMatrices(first, second, result, r1, c1, r2, c2);
   // display the result
   display(result, r1, c2);
   return 0;
}
输出
Enter rows and column for the first matrix: 2
3
Enter rows and column for the second matrix: 3
2
Enter elements:
Enter a11: 2  
Enter a12:-3
Enter a13: 4
Enter a21: 53
Enter a22: 3
Enter a23: 5
Enter elements:
Enter a11: 3
Enter a12: 3
Enter a21: 5
Enter a22: 0
Enter a31:-3
Enter a32: 4
Output Matrix:
-21  22
159  179
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4