C语言之两矩阵乘法的实现
2016-03-26 20:56
417 查看
首先我们要清楚矩阵乘法实现需要满足的条件, 矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义[1] 。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。
运行结果如图:
代码如果有问题,希望大家指出。
//关于任意两个矩阵的乘法运算 //关于任意两个矩阵的乘法运算 #include<stdio.h> #include<stdlib.h> #define MAX 10 matrix_multiplication(int line1, int column1, int column2, int arr1[MAX][MAX], int arr2[MAX][MAX], int arr3[MAX][MAX]) { int i, j, k; int ret; for (i = 0; i < line1; i++) { for (j = 0; j < column1; j++) { ret = 0; for (k = 0; k < column2+1; k++) { ret += arr1[i][k] * arr2[k][j]; //按照矩阵的乘法规则进行运算 } arr3[i][j] = ret; } } } int main() { int line1, column1, column2; int i, j; int temp; int arr1[MAX][MAX], arr2[MAX][MAX], arr3[MAX][MAX]; printf("输入第一个矩阵的行数:\n"); scanf("%d", &line1); printf("输入第一个矩阵的列数:\n"); scanf("%d", &column1); printf("输入第一个矩阵的列数:\n"); scanf("%d", &column2); printf("输入第一个矩阵的元素(%d*%d):\n",line1,column1); for (i = 0; i < line1; i++) { for (j = 0; j < column1; j++) { scanf("%d", &temp); arr1[i][j] = temp; } } printf("输入第二个矩阵的元素(%d*%d):\n", column1, column2); //因为在这里矩阵的乘法会要求第一个的列与第二个行相等 for (i = 0; i < column1; i++) { for (j = 0; j < column2; j++) { scanf("%d", &temp); arr2[i][j] = temp; } } matrix_multiplication(line1, column1, column2, arr1, arr2, arr3); printf("输出的两个矩阵的乘法运算的结果是:\n"); for (i = 0; i<line1; i++) { for (j = 0; j<column2; j++) printf("%ld ", arr3[i][j]); printf("\n"); } system("pause"); return 0; }
运行结果如图:
代码如果有问题,希望大家指出。
相关文章推荐
- 【c++程序】deque一般用法
- [面试] C/C++ 语法(二)—— 二维数组
- C++程序设计内存管理器(内存池)
- C++作业2
- C中结构体与C++中类的区别
- 如何禁止C++默认生成成员函数
- 326. Power of Three
- C语言产生随机数
- 328 Odd Even Linked List
- C/C++程序题(1-5)
- leetcode 338:Counting Bits 数1,C++
- C++ Exceptional 有关const的用法
- C++ STL之set函数
- 1001. 害死人不偿命的(3n+1)猜想 (15)
- 【c++】币值转换
- C语言va_list,va_start,va_arg,va_end
- c++实现顺序表
- C++学习笔记
- C++第二次试验作业
- Windows平台安装OpenCV-2.4.9,利用Eclipse、MinGW构建C++调用OpenCV开发环境