计算矩阵的乘积

问题:

  编写程序,计算两矩阵a与b的乘积,并输出结果

分析:

  根据两矩阵相乘的规则,矩阵a的列数应与矩阵b的行数相同。若a是4行3列矩阵,b是3行2列矩阵,设乘积为c,则c是4行两列矩阵,由于数学上的矩阵恰好和C语言上二维数组相对应,因此本例说明三个二维数组变量,其所分配的存储空间恰好可以存放a、b、c三个矩阵所有的元素值,为简便计,不妨设矩阵元素为整型数值,矩阵a、b的元素值均由键盘输入,为增强直观性,希望所输入的数据以及输出的结果数据形式均与矩阵的书写顺序相对应,,即各矩阵按行列左右分开、上下对齐。

 1 //实现任意两个矩阵的乘积,并输出结果
 2 #include<stdio.h>
 3 int main(){
 4     int i,j,k,s;
 5     int M,P,X,Y;
 6     printf("Enter your first of matrix a rows and cols:");
 7     scanf("%d %d",&M,&P);
 8     printf("Enter your second of matrix a rows and cols:");
 9     scanf("%d %d",&X,&Y);
10     int a[M+1][P+1],b[X+1][Y+1],c[M+1][Y+1];
11     printf("Enter the elements of matrix a(%d*%d):\n",M,P);
12     for(i=1;i<=M;i++)
13         for(j=1;j<=P;j++)
14             scanf("%d",&a[i][j]);
15     printf("\n");
16     printf("Enter the elements of matrix b(%d*%d):\n",X,Y);
17     for(j=1;j<=X;j++)
18         for(k=1;k<=Y;k++){
19             scanf("%d",&b[j][k]);
20         }
21     printf("\n\n");
22     printf("The result of a*b is\n");
23     for(i=1;i<=M;i++){
24         for(k=1;k<=Y;k++){
25             s=0;
26             for(j=1;j<=X;j++)
27                 s+=a[i][j]*b[j][k];
28             c[i][k]=s;
29             printf("%6d",s);
30         }
31         printf("\n");
32     }
33     return 0;
34 }

原文地址:https://www.cnblogs.com/geziyu/p/8783491.html

时间: 2024-10-12 12:48:32

计算矩阵的乘积的相关文章

题目1489:计算两个矩阵的乘积

时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:5744 解决:1234 题目描述: 计算两个矩阵的乘积,第一个是2*3,第二个是3*2 输入: 输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵 输出: 一个2*2的矩阵(每一个数字后都跟一个空格) 样例输入: 1 2 3 3 4 5 6 7 8 9 10 11 样例输出: 52 58 100 112 来源: 2012年哈尔滨工业大学计算机研究生机试真题 矩阵乘积的计算是  52 = 1*6+2*8+3*10  58 =

@大脑练习: 计算两个矩阵的乘积

题目1489:计算两个矩阵的乘积时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:134 解决:25 题目描述: 计算两个矩阵的乘积,第一个是2*3,第二个是3*2 输入: 输入为两个矩阵,其中一个为2*3的矩阵,另一个为3*2的矩阵 输出: 一个2*2的矩阵(每一个数字后都跟一个空格) 样例输入: 1 2 3 3 4 5 6 7 8 9 10 11样例输出: 52 58 100 112来源: 2012年哈尔滨工业大学计算机研究生机试真题 [cpp] /****************

opencv计算矩阵与数值的乘积,矩阵与矩阵的乘积

1.矩阵与数值的乘积 在进行数组与一个常量相乘的运算时,使用了Mat类中的mul函数. //! per-element matrix multiplication by means of matrix expressions MatExpr mul(InputArray m, double scale=1) const; 使用后,发现数据有些异常,于是就打印出每一个计算后的数值, 发现原来该函数是将,m中矩阵每个元素先做二次方运算,再与scale相乘,于是放弃用该函数,改用 //! comput

【原创】开源Math.NET基础数学类库使用(17)C#计算矩阵条件数

               本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html 上个月对Math.NET的基本使用进行了介绍,主要内容有矩阵,向量的相关操作,解析数据格式,数值积分,数据统计,相关函数,求解线性方程组以及随机数发生器的相关内容.这个月接着深入发掘Math.NET的各种功能,并对

开源Math.NET基础数学类库使用(17)C#计算矩阵条件数

原文:[原创]开源Math.NET基础数学类库使用(17)C#计算矩阵条件数                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html 上个月对Math.NET的基本使用进行了介绍,主要内容有矩阵,向量的相关操作,解析数据格式,数值积分,数据统计,相关函数,求解线性方程组

SPOJ - Find The Determinant III 计算矩阵的行列式答案 + 辗转相除法思想

SPOJ -Find The Determinant III 参考:https://blog.csdn.net/zhoufenqin/article/details/7779707 参考中还有几个关于行列式的性质. 题意: 计算矩阵的行列式答案 思路: 计算行列式的基本方法就是把矩阵化成上三角或下三角,然后观察对角线的元素,如果其中有一个元素为0则答案为0,否则行列式的值就是对角线上各个元素的乘积. #include <algorithm> #include <iterator>

Armadillo之计算矩阵的行列式(determinant)

计算矩阵的行列式很简单,用det方法或是log_det方法 1 det(A) 如果A不是方阵的(square),将抛出std::logic_error异常 例: mat m = "3,2,4;1,-2,3;2,3,2;"; double d = det(m); cout << d << endl; 运行结果是-3 2 log_det(value, sign,A) 文档里推荐当矩阵A比较大时,使用本函数来代替det函数(估计会加快计算速度) det(A)=exp(

【原创】开源Math.NET基础数学类库使用(16)C#计算矩阵秩

               本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html 上个月对Math.NET的基本使用进行了介绍,主要内容有矩阵,向量的相关操作,解析数据格式,数值积分,数据统计,相关函数,求解线性方程组以及随机数发生器的相关内容.这个月接着深入发掘Math.NET的各种功能,并对

03:计算矩阵边缘元素之和

03:计算矩阵边缘元素之和 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个整数矩阵,计算位于矩阵边缘的元素之和.所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素. 输入 第一行分别为矩阵的行数m和列数n(m < 100,n < 100),两者之间以一个空格分开.接下来输入的m行数据中,每行包含n个整数,整数之间以一个空格分开. 输出 输出对应矩阵的边缘元素和 样例输入 3 3 3 4 1 3 7 1 2 0 1 样例输出