数据结构实验一 —— 矩阵相乘算法

实验名称

矩阵相乘算法

实验内容

实现两个矩阵的相乘算法。

实验要求

  1. 输入要求:矩阵大小阶数及元素值可以在程序中固定。但最好不固定矩阵形式,从键盘输入矩阵阶数以及元素值。
  2. 输出要求:在屏幕上显示矩阵相乘的结果。
  3. 严格按照要求的文件命名方式进行命名,如个人文档命名:实验1-班级-学号-名字.doc。
    当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

问题描述

使用C语言编写代码实现两个矩阵的相乘算法,并将结果输出。

算法描述

代码

#define true 1
#define false 0
#include <malloc.h>
#include <stdio.h>int IsAvailable(int line[], int column[]);                                                                     //判断两个矩阵是否可相乘
void input(double *matrix, int line, int column);                                                              //输入矩阵
void output(double *matrix1, int line1, int column1, double *matrix2, int line2, int column2, double *matrix); //输出矩阵
int main()
{int line[2], column[2];do{printf("请输入矩阵A的行数和列数,输入完成后请换行以录入系统。\n");scanf("%d%d", &line[0], &column[0]);double *matrix1 = (double *)malloc(line[0] * column[0] * sizeof(double)); //利用一维数组模拟二维数组printf("请输入矩阵A的元素,每行的元素以空格隔开,输入完每行数据后换行输入下一行\n");input(matrix1, line[0], column[0]);printf("请输入矩阵B的行数和列数,输入完成后请换行以录入系统。\n");scanf("%d%d", &line[1], &column[1]);double *matrix2 = (double *)malloc(line[1] * column[1] * sizeof(double)); //利用一维数组模拟二维数组printf("请输入矩阵B的元素,每行的元素以空格隔开,输入完每行数据后换行输入下一行\n");input(matrix2, line[1], column[1]);if (IsAvailable(line, column) == false){free(matrix1);free(matrix2);continue;}double *matrix = (double *)malloc(line[0] * column[1] * sizeof(double)); //矩阵乘积行数和矩阵A相同,列数和矩阵B相同output(matrix1, line[0], column[0], matrix2, line[1], column[1], matrix);free(matrix1);free(matrix2);free(matrix);system("pause");return 0;} while (1);
}int IsAvailable(int line[], int column[])
{if (column[0] != line[1]){printf("矩阵A的列数不等于矩阵B的行数,无法进行相乘,请按任意键重新输入!\n");system("pause");return false;}elsereturn true;
}
void input(double *matrix, int line, int column)
{for (int i = 0; i < line; ++i){for (int j = 0; j < column; ++j){scanf("%lf", &matrix[i * column + j]);}}
}
void output(double *matrix1, int line1, int column1, double *matrix2, int line2, int column2, double *matrix)
{int line = line1;int column = column2;printf("矩阵A*矩阵B=\n");for (int i = 0; i < line; ++i){for (int j = 0; j < column; ++j){matrix[i * column + j] = 0;for (int k = 0; k < column1; ++k){matrix[i * column + j] += matrix1[i * column1 + k] * matrix2[k * column2 + j];}printf("%lf ", matrix[i * column + j]);}printf("\n");}printf("程序执行完毕。\n");
}

数据结构实验一 —— 矩阵相乘算法相关推荐

  1. 数据结构实验:内部排序算法的性能分析

    文章目录 前言 一.问题描述 二.问题分析 三.实验结果及分析 (1)实验数据描述 (2)实验结果 (3)性能分析 四.源代码 前言 记录下本学期的数据结构实验 本实验主要集中于比较几种内部排序算法 ...

  2. 算法系列:矩阵相乘算法的MapReduce实现

    看到一篇文章,列出了几个使用MapReduce完成的算法(附有实现案例),但是还是想自己实现下,所以自己写了一个,后来看了下案例,不是太一样,但是我实现了,不管效果如何,或者好不好看,总之我实现了.这 ...

  3. 矩阵相乘的strassen算法_4-2.矩阵乘法的Strassen算法详解

    题目描述 请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法. 思路分析 根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵B的列数和另一个矩阵A的行数相等时才能定义.如A是m×n矩阵和B ...

  4. python与机器学习(二)Numpy / Pandas /矩阵相乘速度对比

    NumPy(Numerical Python)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库. NumPy的官方文档:https://nump ...

  5. 两个随机矩阵相乘的c语言编程,实现两个矩阵相乘的C语言程序

    程序功能:实现两个矩阵相乘的C语言程序,并将其输出 代码如下: 1 #include "stdafx.h" 2 #include "windows.h" 3 v ...

  6. python矩阵乘法算法_Python算法|矩阵链乘法

    概述 矩阵乘法是一个满足结合律的运算.显然,对于矩阵A.B.C来说,(AB)C 与 A(BC) 是等价的,我们可以根据自己的心情选择任意的运算顺序,总之,结果都是一样的. 糟糕的是,对计算机来说可不是 ...

  7. 数据结构实验6_压缩矩阵的转置、普通转置、快速转置算法

    实验6.压缩矩阵的2种转置运算 (1)实验目的 通过该实验,让学生理解矩阵压缩存储的概念.方法等相关知识,掌握用三元组表的方式如何进行矩阵的压缩存储, 并在此基础上进行转置操作,理解转置和快速转置两种 ...

  8. c语言三元组稀疏矩阵的转置实验报告,稀疏矩阵三元组实现矩阵转置算法实验报告.doc...

    稀疏矩阵三元组实现矩阵转置算法实验报告.doc 1实验三稀疏矩阵的三元组表示实现矩阵转置算法学院专业班学号姓名一.实习目的1掌握稀疏矩阵的三元组顺序表存储表示:2掌握稀疏矩阵三元组表示的传统转置算法的 ...

  9. 矩阵相乘的strassen算法_矩阵乘法的Strassen算法+动态规划算法(矩阵链相乘和硬币问题)...

    矩阵乘法的Strassen 这个算法就是在矩阵乘法中采用分治法,能够有效的提高算法的效率. 先来看看咱们在高等代数中学的普通矩阵的乘法 两个矩阵相乘 上边这种普通求解方法的复杂度为: O(n3) 也称 ...

最新文章

  1. 计算机考研不压分的学校,考研院校里,这些学校不压分、不歧视专科生,值得关注...
  2. java计算机全部代码_(Java)谁有计算器的完整代码?
  3. python函数注释 参数 省略号_python – make函数在help()函数中有参数的省略号
  4. Windows Pe 第三章 PE头文件-EX-相关编程-2(RVA_FOA转换)
  5. 【计算机网络】协议,接口,服务
  6. springBoot(20):使用Spring Session实现集群-redis
  7. eclipse 导入maven项目_解决Eclipse导入JAVA WEB项目错误的问题
  8. 鬼灭之刃人物炫酷高清壁纸
  9. 7 面阿里,终获 Offer《原力计划【第二季】》第 9周周榜揭晓!!!
  10. node createConnection connect 区别?
  11. 虚拟服务器软件,VMware ESXi(服务器虚拟化软件) V7.0 官方版
  12. Rational Rose 2016
  13. Excel 2010 VBA 入门 109 获取某列最后非空单元格行号
  14. Ps 初学者教程「68」如何创建海报?
  15. 西联汇款和Bharti Airtel向印度数百万银行账户和非洲移动钱包提供实时全球支付服务
  16. 浪潮服务器重置密码方法
  17. 推荐四个Flutter重磅开源APP项目!
  18. 基于多目标算法的冷热电联供型综合能源系统运行优化 代码构建了含冷、热、电负荷的冷热电联供型综合能源系统优化调度模型,考虑了燃气轮机、电制冷机
  19. 第二十七篇 网页数据解析三种方法: 正则表达--BeautifulSoup--xpath 满满的干货
  20. 公式编辑的符号和英文要不要前后加空格

热门文章

  1. 代码中终止python程序
  2. 《单片机原理及应用》(B)课程教学大纲
  3. 带状矩阵[BandMatrix]解网格图一类问题
  4. java试题库管理系统源代码_Java试题库管理源代码
  5. 中科院声学所ZJ-3型压电测试仪
  6. 天鹅到家拟在纽交所上市:年营收超7亿元,亏损率逐渐收窄
  7. [绿色软件]鲁大师绿色版 VV2.94 Build 11.1027
  8. Matlab将文本转换为数值
  9. STM32之STM Studio使用
  10. 基于AT89C51最小系统的手机遥控车