/*

矩阵乘法C语言实现

Slyar 2009.3.20

*/

#include

#include

/* 给 int 类型定义别名 datatype */

typedef int datatype;

/* 函数声明部分 */

datatype** Create(int m, int n);

void Reset(datatype**, int, int);

void Input(datatype**, int, int);

void Output(datatype**, int, int);

void MatrixMutiply(datatype**, datatype**, datatype**);

void MatrixFree(datatype** , int);

/* 定义三个矩阵的行列大小 */

int row_a, col_a;

int row_b, col_b;

int row_c, col_c;

/* 定义文件指针 */

FILE *fp;

int main()

{

int i;

datatype **a, **b, **c;

/* 以只读方式打开输入文件 in.txt */

if((fp = fopen("in.txt","r")) == NULL)

{

printf("Cannot open this file.

");

exit(0);

}

/* 创建并读入矩阵a */

fscanf(fp,"%d%d", &row_a, &col_a);

a=Create(row_a, col_a);

Input(a,row_a, col_a);

/* 创建并读入矩阵b */

fscanf(fp,"%d%d", &row_b, &col_b);

b = Create(row_b, col_b);

Input(b,row_b, col_b);

/* 关闭输入文件 */

fclose(fp);

/* 以写入方式打开输出文件 out.txt */

if((fp = fopen("out.txt","w")) == NULL)

{

printf("Cannot open this file.

");

exit(0);

}

/* 判断两个矩阵能否相乘 */

if(col_a == row_b)

{

row_c = row_a;

col_c = col_b;

}

else

{

fprintf(fp,"Matrix Can't Mutiply !

");

exit(0);

}

/* 创建并初始化结果矩阵c */

c = Create(row_c, col_c);

Reset(c, row_c, col_c);

/* 进行矩阵乘法运算 */

MatrixMutiply(a, b, c);

/* 输出结果矩阵C */

Output(c, row_c, col_c);

/* 关闭输出文件 */

fclose(fp);

/* 释放矩阵内存 */

MatrixFree(a,row_a);

MatrixFree(b,row_b);

MatrixFree(c,row_c);

//system("pause");

return 0;

}

/* 为矩阵动态分配内存的函数 */

datatype** Create(int m, int n)

{

int i;

datatype **Matrix;

Matrix = (datatype **) malloc(sizeof(datatype *) * m);

for(i = 0; i < m; i++)

{

Matrix[i] = (datatype *) malloc(sizeof(datatype) * n);

}

return Matrix;

}

/* 初始化矩阵函数 */

void Reset(datatype** Matrix, int m, int n)

{

int i,j;

for(i = 0; i < m; i++)

{

for(j = 0; j < n; j++)

{

Matrix[i][j] = 0;

}

}

}

/* 读入数据函数 */

void Input(datatype** Matrix, int m, int n)

{

int i,j;

for(i = 0; i < m; i++)

{

for(j = 0; j < n; j++)

{

fscanf(fp,"%d", &Matrix[i][j]);

}

}

}

/* 输出数据函数 */

void Output(datatype** Matrix, int m, int n)

{

int i,j;

for(i = 0; i < m; i++)

{

for(j = 0; j < n; j++)

{

fprintf(fp,"%d ", Matrix[i][j]);

}

fprintf(fp,"

");

}

}

/* 矩阵乘法运算函数 */

void MatrixMutiply(datatype** a, datatype** b, datatype** c)

{

int i,j,k;

for(i = 0; i < row_c; i++)

{

for(j = 0; j < col_c; j++)

{

for(k = 0; k < col_a; k++)

{

c[i][j] += a[i][k] * b[k][j];

}

}

}

}

/* 释放矩阵内存函数 */

void MatrixFree(datatype** Matrix, int m)

{

int i;

for(i = 0; i < m; i++)

{

free(Matrix[i]);

}

free(Matrix);

}

转载自:http://nickandmiles.blog.163.com/blog/static/234221232011428114811156/

c语言矩阵乘法流程图,矩阵乘法C语言实现相关推荐

  1. 使c语言程序变成流程图的软件,c语言流程图生成器

    c语言流程图生成器是一款极佳的根据源码生成流程图的工具.软件可以帮助程序员更好地理解程序,制作文档和可视化代码.支持C,C++,VC++(Visual C++ .NET),Delphi(Object ...

  2. C语言实现文件读取矩阵乘法

    用C语言计算矩阵乘积 一.设计需求: 用命令行参数的形式编写C语言程序 从A.txt和B.txt中读取连个矩阵 需要判断两个矩阵能否相乘 把计算后的结果写入到C.txt中 二.实现思路 1.用命令行参 ...

  3. 【Android 应用开发】Paint 滤镜原理 之 颜色矩阵 ( 颜色模式 | 颜色通道 | 颜色矩阵 | 矩阵运算 | 矩阵乘法 | 矩阵加法 | 颜色矩阵深入解析 )

    文章目录 颜色模式 颜色通道 Android 中的颜色矩阵 矩阵乘法运算 滤镜中的矩阵乘法运算 矩阵加法运算 滤镜中的矩阵乘法运算 滤镜运算原理 ( 总结 ) 实际滤镜理论示例 颜色模式 颜色模式 : ...

  4. 疯子的算法总结(五) 矩阵乘法 (矩阵快速幂)

    学过线性代数的都知道矩阵的乘法,矩阵乘法条件第为一个矩阵的行数等与第二个矩阵的列数,乘法为第一个矩阵的第一行乘以第二个矩阵的第一列的对应元素的和作为结果矩阵的第一行第一列的元素.(详解参见线性代数) ...

  5. Vijos 1603 ----迷宫(矩阵乘法,矩阵快速幂)

    描述 在某个神秘的星球上有一个游乐园 游乐园里有一个奇怪的迷宫,迷宫内有n个点,每个点之间都可能会有一条有向边(可能会有自环) 现在游乐园主有个问题想请你帮忙: 问:从s点走到f点,恰好走过m条边(边 ...

  6. 矩阵问题入门(矩阵乘法and矩阵快速幂)acm寒假集训日记22/1/15

    今天凌晨3点才睡,没想到通过看小说抑制玩游戏,反而看小说的时间更长. u1s1:那小说太刺激了,晚上看很有感觉,风吹草动我就会猛地看过去(类似茄子说柜子动了,哈哈),真TM(语气词)练胆量!!!..Q ...

  7. lu分解法matlab_MIT 18.065—机器学习中的矩阵方法02 矩阵乘法与矩阵分解

    数据分析.信号处理和机器学习中的矩阵方法 第02讲 矩阵乘法与矩阵分解 新MIT 线性代数|机器学习(中英机翻字幕)18.065 by Gilbert Strang_哔哩哔哩 (゜-゜)つロ 干杯~- ...

  8. 离散数学16__矩阵的加法、乘法

    常见的矩阵有 4*4 一 矩阵的加法,就是一个矩阵的第几行第几列,与 另一个矩阵相同的第几行第几列,相加. 也就是说,矩阵相加是相同位置加一下.   得到一个新矩阵. 二 矩阵的乘法 这里以矩阵的平方 ...

  9. Java实现矩阵运算——矩阵乘法、矩阵转置、自动填充矩阵行

    在做大数据或人工智能开发的过程做难免会遇到矩阵运算,本文在这里给大家实现一个简单的矩阵运算,请看下代码: package test;/*** 矩阵运算* * @author Administrator ...

最新文章

  1. 《Linux内核原理与分析》第二周作业
  2. 干货 | “青年AI自强计划项目”首节讲座视频、课件分享
  3. ICMP隧道工具ptunnel
  4. [已解决] InnoDB: preallocating bytes for file ./ibdata1 failed with error
  5. php提供的用户密码加密函数
  6. Mob统计分析游戏类App详细埋点需求
  7. 我对无服务器架构的一些看法
  8. HDU 5937 2016CCPC杭州 E: Equation(DFS)
  9. Django的cmdb探索与开发(三)
  10. 5-vue-template模板制作
  11. 微软推补丁服务器,[图]微软再推稳定性补丁 为即将到来功能更新做准备
  12. Keytool命令详解
  13. FPGA数字IC的Verilog刷题解析基础版02——T触发器(异步复位和同步复位)
  14. 王家林老师 大数据学习之路
  15. Codeforces - Robot Rapping Results Report
  16. 【电脑无法打开移动热点】——终极解决方法
  17. 小米手机录制数据集软件操作
  18. 基于 ffmpeg + Webassembly 实现前端视频帧提取
  19. 计算机硬件更新快,频繁更新电脑硬件驱动程序到底好不好?真相在此
  20. mysql8.0.20忘记密码_mysql8.0版本忘记密码修改密码

热门文章

  1. 怎么给视频添加动态歌词字幕?原来用微信就能完成,涨知识了
  2. Camera sensor驱动
  3. 2022 Pycharm 不同版本镜像源添加
  4. 防止arp攻击怎么做?ARP攻击防范的解决办法
  5. Application的作用
  6. C语言入坑指南-缓冲区溢出
  7. 浪神授权系统源码|孤傲授权系统|SF授权系统3.0
  8. 最速下降法极小化rosenbrock函数 代码_RL An Introduction-Chapter 9 函数拟合时的同步预测...
  9. Vue使用v-if和v-else报错
  10. 【USB笔记】 标准设备请求Standard Device Requests