矩阵相乘

输入矩阵的行列,分别输入两个矩阵,输出矩阵相乘的结果

#include<bits/stdc++.h>
using namespace std;int main(){int a,b,c;cout<<"请输入两矩阵的行列:"<<endl;cin>>a>>b>>c;                           //分别录入第一个矩阵的行,两矩阵共同行列,第二个矩阵的列int X[a][b],Y[b][c],Z[a][c];            //开辟三个二维数组存储矩阵,注意相乘结果的行列值cout<<"请输入第一个矩阵:"<<endl;for(int i=0;i<a;i++){                   //矩阵的行for(int j=0;j<b;j++){               //矩阵的列cin>>X[i][j];}}cout<<"请输入第二个矩阵:"<<endl;for(int i=0;i<b;i++){                   //矩阵的行for(int j=0;j<c;j++){               //矩阵的列cin>>Y[i][j];}}memset(Z,0,sizeof(Z));          //将二维数组Z初始化为0//int temp=0;cout<<"矩阵相乘的结果为:"<<endl;for(int i=0;i<a;i++){for(int j=0;j<c;j++){for(int k=0;k<b;k++){Z[i][j]=Z[i][j]+X[i][k]*Y[k][j];      //行与列的乘积和为相应结果值//temp=temp+X[i][k]*Y[k][j];}cout<<Z[i][j]<<" ";                  //计算完一个后输出      //cout<<temp<<" ";//temp=0;}cout<<endl;                   //计算完一列后输出换行}return 0;
}//本程序也可以不开辟存放结果的二维数组矩阵,直接将结果累加到temp中进行输出,
//当输出后重新将temp中的值置0

注意memset函数:

  1. memset函数实现对指定内存空间初始化的作用。
    memset(Z,0,sizeof(Z)); //将二维数组Z初始化为0

  2. int float long string sizeof函数返回数组元素空间的4倍数(一元素占4字节)
    char sizeof函数返回数组元素空间大小(一元素占1字节)
    double sizeof函数返回数组元素空间8倍数(一元素占8字节)

将矩阵相乘的方法体拿出来
#include<bits/stdc++.h>
using namespace std;int jzcheng(int *q, int *w, int h, int l, int k)  //定义两个指针,指向二维数组变为一维数组后的首地址
{int Z[h][k];         //h*k
//    memset(Z, 0, sizeof(Z));          //将二维数组Z初始化为0//int temp=0;//cout<<"矩阵相乘的结果为:"<<endl;//cout<<'\n';for(int i = 0; i < h; i++){for(int j = 0; j < k; j++){Z[i][j]=0;for(int n = 0; n < l; n++){Z[i][j] = Z[i][j] + q[i * l + n] * w[n * k + j]; //行与列的乘积和为相应结果值,认真思考为什么是这样,看作一维数组//temp=temp+X[i][k]*Y[k][j];}cout << Z[i][j] << " ";          //计算完一个后输出//cout<<temp<<" ";//temp=0;}cout<<'\n';}
}
int main()
{int a, b, c;cout << "请输入两矩阵的行列:" << endl;cin >> a >> b >> c;                     //分别录入第一个矩阵的行,两矩阵共同行列,第二个矩阵的列int X[a][b], Y[b][c];           //开辟三个二维数组存储矩阵,注意相乘结果的行列值cout << "请输入第一个矩阵:" << endl;for(int i = 0; i < a; i++)              //矩阵的行{for(int j = 0; j < b; j++)          //矩阵的列{cin >> X[i][j];}}cout << "请输入第二个矩阵:" << endl;for(int i = 0; i < b; i++)              //矩阵的行{for(int j = 0; j < c; j++)          //矩阵的列{cin >> Y[i][j];}}jzcheng(*X, *Y, a, b, c);//也可写作jzcheng(X[0], Y[0], a, b, c);均代表以a[0][0]为首元素的一维数组;可用作指针return 0;
}//本程序也可以不开辟存放结果的二维数组矩阵,直接将结果累加到temp中进行输出,
//当输出后重新将temp中的值置0
用vector定义二维数组,避免指针情况
#include<bits/stdc++.h>
using namespace std;int jzcheng(vector<vector<int> >X, vector<vector<int> >Y, int h, int l, int k)
{int Z[h][k];//h*kmemset(Z, 0, sizeof(Z));        //将二维数组Z初始化为0//int temp=0;cout<<"矩阵相乘的结果为:"<<endl;//cout<<'\n';for(int i = 0; i < h; i++){for(int j = 0; j < k; j++){//Z[i][j]=0;for(int n = 0; n < l; n++){Z[i][j] = Z[i][j] + X[i][n] * Y[n][j]; //行与列的乘积和为相应结果值//temp=temp+X[i][k]*Y[k][j];}cout << Z[i][j] << " ";          //计算完一个后输出//cout<<temp<<" ";//temp=0;}cout<<'\n';}
}
int main()
{int a, b, c;cout << "请输入两矩阵的行列:" << endl;cin >> a >> b >> c;                     //分别录入第一个矩阵的行,两矩阵共同行列,第二个矩阵的列vector<vector<int> >X;vector<vector<int> >Y;X.resize(a);for(int i=0;i<X.size();i++){X[i].resize(b);}Y.resize(b);for(int i=0;i<Y.size();i++){Y[i].resize(c);}             //开辟三个二维数组存储矩阵,注意相乘结果的行列值cout << "请输入第一个矩阵:" << endl;for(int i = 0; i < a; i++)              //矩阵的行{for(int j = 0; j < b; j++)          //矩阵的列{cin >> X[i][j];}}cout << "请输入第二个矩阵:" << endl;for(int i = 0; i < b; i++)              //矩阵的行{for(int j = 0; j < c; j++)          //矩阵的列{cin >> Y[i][j];}}jzcheng(X, Y, a, b, c);return 0;
}//本程序也可以不开辟存放结果的二维数组矩阵,直接将结果累加到temp中进行输出,
//当输出后重新将temp中的值置0

经典例题:求矩阵相乘相关推荐

  1. 矩阵的Frobenius范数及其经典例题求导

  2. python矩阵相乘例题_百道Python入门级练习题(新手友好)第一回合——矩阵乘法...

    题目描述 [问题描述] 编写程序,完成3*4矩阵和4*3整数矩阵的乘法,输出结果矩阵. [输入形式] 一行,供24个整数.以先行后列顺序输入第一个矩阵,而后输入第二个矩阵. [输出形式] 先行后列顺序 ...

  3. python求1到n的乘积_Python实现矩阵相乘的三种方法小结

    问题描述 分别实现矩阵相乘的3种算法,比较三种算法在矩阵大小分别为22∗2222∗22, 23∗2323∗23, 24∗2424∗24, 25∗2525∗25, 26∗2626∗26, 27∗2727 ...

  4. c语言 正整数 几位 逆序,c语言经典例题:正整数求位数and求顺、逆序位数

    经典例题:正整数求位数and求顺.逆序位数 题目要求: 给出一个int整形正整数,要求: 1.求出它是几位数字 2.按照逆序分别输出每位数字,例如123输出为321 3.按正序输出每位数字 分析: 一 ...

  5. 复合函数求导经典例题_【2017年整理】多元函数求导经典例题.ppt

    [2017年整理]多元函数求导经典例题 多元函数习题课;一 学习要求;(3) 理解偏导数和全微分的概念,会求全微分,了解全微分存在的必要和充分条件,了解全微分形式不变性;;偏导数的应用;二.主要内容; ...

  6. C++设计矩阵,实现矩阵相乘和求逆矩阵

    矩阵变换是机器人学的基础,所以Jungle把这一节内容划分到"工业机器人"栏目.这一节Jungle用C++设计了矩阵的类Matrix,并设计了3个方法: 矩阵相加add 矩阵相乘m ...

  7. C语言求任意两个矩阵相乘的算法(初学尝试矩阵乘法)

    C语言求任意两个矩阵相乘的算法(不同于大部分规格固定的矩阵乘法) 结果图如下   : 代码如下: //----- 任意两个矩阵相乘 # include <stdio.h> int main ...

  8. c++使用vector求两个矩阵相乘

    c++使用vector求两个矩阵相乘 直接上代码 #include <vector> #include <iostream> using namespace std;vecto ...

  9. c中经典例题 用牛顿迭代法求实根

    文章目录 前言 一.案例分析? 二.使用步骤 1.具体代码 2.读入数据 结果 总结 前言 c经典例题题目:用牛顿迭代法求根.方程为 ax3+bx2+cx+d=0,系数 a , b , c , d的值 ...

最新文章

  1. Ubuntu14.04下配置OpenGL及测试代码
  2. kafka与zookeeper关系
  3. BZOJ4196:[NOI2015]软件包管理器——题解
  4. 【Groovy】闭包 Closure ( 闭包参数列表规则 | 默认参数列表 | 不接收参数 | 接收自定义参数 )
  5. 成本中心组和标准层次有何区别
  6. 冒泡排序python代码_Python-排序-冒泡排序-优化
  7. 官方野生蝇群流口水分数
  8. 推荐系统学习(三)SVD奇异值分解做推荐与python代码
  9. 【Java】String hashCode 这个数字 31
  10. ​php mysql教学管理系统计算机毕业设让网站作品
  11. 【IOS-COCOS2D游戏开发之十九】游戏数据存储的四种常用方式NSKEYEDARCHIVER/NSUSERDEFAULTS/WRITE写入/SQLITE3...
  12. 继电保护整定值计算软件_继电保护整定计算软件功能介绍
  13. 张国荣一生57部电影海报全集
  14. 2018千元内的UGP VR一体机开箱评测:ugp vr一体机怎么样真的好吗?
  15. NVIDIA RTX A6000深度学习训练基准
  16. 我的(此)电脑里面除了磁盘以外,多了一个CD驱动器,删除方法,亲测有效
  17. 怎么编辑PDF文件?分享三种好用的编辑方法
  18. 由freemarker毫秒级时间谈固定日期格式
  19. 规范的版权Copyright说明怎么写?
  20. 计算机进入桌面黑屏怎么办,电脑开机进入桌面就黑屏怎么解决??

热门文章

  1. element表格点击某一单元格,当前列变色,列变色
  2. matlab里excel汉字怎么显示,如果EXCEL里既有字母,汉字又有数据,在MATLAB中该如何读取?|excel提取重复项...
  3. 全球及中国汽车租赁行业投资规模及未来发展布局研究报告2021-2027年
  4. android 小米推送 no account,XiaomiPushDemo【小米推送集成,基于V3.6.12版本】
  5. 积木开发系列----Workspace的一些设定细节
  6. echarts水平柱状图滚动
  7. gitblit推送代码到远程仓库
  8. php jq 饼状图,jQuery插件FusionCharts绘制饼状图
  9. 沈阳工业大学计算机专业是一本吗,辽宁省第一类大学——沈阳工业大学
  10. OSChina 周日乱弹 —— 小云云生日快乐