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

这篇具有很好参考价值的文章主要介绍了C语言求任意两个矩阵相乘的算法(初学尝试矩阵乘法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C语言求任意两个矩阵相乘的算法(不同于大部分规格固定的矩阵乘法)

结果图如下   :C语言求任意两个矩阵相乘的算法(初学尝试矩阵乘法)                         

代码如下:

//----- 任意两个矩阵相乘
# include <stdio.h>

int main (void)
{
    char ch;
    int a, b, c, d;
    printf ("此算法用于任意两个矩阵相乘  \n矩阵1(a行b列)乘以矩阵2(c行d列),请您按顺序输入a、b、c、d,中间以空格隔开:\n");
    scanf ("%d %d %d %d", &a, &b, &c, &d);
    
    while (b != c)
    {
        printf ("您输入的矩阵规格不能相乘,请重新输入。\n");
        printf ("矩阵1(a行b列)乘以矩阵2(c行d列),请按顺序输入a、b、c、d,中间以空格隔开:\n");
        scanf ("%d %d %d %d", &a, &b, &c, &d);
    }
    
    while ((ch = getchar()) != '\n')
            continue;

    printf ("\n");

    int i, j;
    int f[100][100] = {0}; //100是随机大数,是算法能计算的矩阵上限
    int    g[100][100] = {0};
    int h[100][100] = {0};

    printf ("\n");
    
    for (i=0;i<a;++i)//输入矩阵1
    {
        printf ("请输入矩阵1的第%d行数据,元素之间用空格隔开:\n", (i+1));
        
        for (j=0;j<b;++j)
        {
            scanf ("%d", &f[i][j]);
        }
        
        while ((ch = getchar()) != '\n')
            continue;    
    }
    
    printf ("矩阵1为:\n");
    
    for (i=0;i<a;++i)//输出矩阵1
    {
        for (j=0;j<b;++j)
            printf ("  %-10d ", f[i][j]);//-10是指左对齐,每个数占10格
        printf ("\n");
    }

    printf ("\n");
    
    for (i=0;i<c;++i)//输入矩阵2
    {
        printf ("请输入矩阵2的第%d行数据,元素之间用空格隔开:\n", (i+1));

        for (j=0;j<d;++j)
        {
            scanf ("%d", &g[i][j]);
        }
        
        while ((ch = getchar()) != '\n')
            continue;    
    }
    
    printf ("矩阵2为:\n");
    
    for (i=0;i<c;++i)//输出矩阵2
    {
        for (j=0;j<d;++j)
            printf ("  %-10d ", g[i][j]);//-10是指左对齐,每个数占10格
        printf ("\n");
    }

    printf ("\n");
    
    int k;


    for (i=0;i<a;++i)//矩阵相乘
    {
        for (j=0;j<d;++j)
            for (k=0;k<b;++k)
            {
                h[i][j] = h[i][j] + f[i][k]*g[k][j];
            }
    }
    
    printf ("结果矩阵为:\n");
    
    for (i=0;i<a;++i)//输出结果矩阵
    {
        for (j=0;j<d;++j)
            printf ("  %-10d ", h[i][j]);//-10是指左对齐,每个数占10格
        printf ("\n");
    }
    
    return 0;
}

 文章来源地址https://www.toymoban.com/news/detail-400414.html

 

 

到了这里,关于C语言求任意两个矩阵相乘的算法(初学尝试矩阵乘法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • R语言的的矩阵相乘 %*% 和 *的区别

    ①创建1个矩阵test1和1个向量test2 test1*test2 是不是感觉很乱,看不出来是怎么计算的,如果改变一下test1,然后test1*test2 ②通过对比上述2种情形,我们可以发现*的计算方式就是先把test1转换为1维向量,然后在乘以test2,即: 创建2个矩阵test1和test2 4x2矩阵乘以2x1矩阵得到一个4x1矩

    2024年02月04日
    浏览(30)
  • C语言数据结构课设:矩阵的运算(转置.求和.求差.矩阵相乘.求逆.数乘),文件读取矩阵

      #include stdio.h #include string.h #includestdlib.h #includemath.h // 定义一个结构体类型,表示一个矩阵 typedef struct matrix {     int nrow; // 矩阵的行数     int ncol; // 矩阵的列数     double data[10][10]; // 矩阵的数据,最大为 10 x 10 } matrix; // 定义一个函数,用于显示一个矩阵的内容  void dis

    2024年03月27日
    浏览(54)
  • 矩阵算法之矩阵乘法

    矩阵算法在图像处理、神经网络、模式识别等领域有着广泛的用途。 在矩阵乘法中,A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量。 运算规则:A的每一行中的数字对应乘以B的每一列的数字把结果相加起来。 1、当矩阵A的列数(column)等于矩阵

    2024年02月11日
    浏览(38)
  • 【C语言】矩阵乘法

    题目描述 计算两个矩阵的乘法。n×m阶的矩阵A乘以m×k阶的矩阵B得到的矩阵C 是n×k阶的,且C[i][j] = A[i][0]×B[0][j] + A[i][1]×B[1][j] + …… +A[i][m-1]×B[m-1][j](C[i][j]表示C矩阵中第i行第j列元素)。 输入 第一行为n, m, k,表示A矩阵是n行m列,B矩阵是m行k列,n, m, k均小于100。 然后先后输入

    2024年02月04日
    浏览(40)
  • 【数理知识】求两个三维空间点的坐标矩阵之间,任意两两点之间的空间距离,matlab 实现

    假设有两个包含了三维空间点坐标的,三维向量集 A A A 和 B B B ,两集合中分别有 m m m 个和 n n n 个三维空间坐标点,可以用矩阵表示为 A = [ a 1 x a 2 x a 3 x ⋯ a m x a 1 y a 2 y a 3 y ⋯ a m y a 1 z a 2 z a 3 z ⋯ a m z ] 3 × m , B = [ b 1 x b 2 x b 3 x ⋯ b n x b 1 y b 2 y b 3 y ⋯ b n y b 1 z b 2 z b 3 z ⋯

    2024年02月11日
    浏览(47)
  • 求矩阵的乘法(Java语言)

    输入两个矩阵(nxk,  kxm),  计算其乘积的结果。 模板如下 import java.util.Scanner; /**  *   * @author Administrator 矩阵乘法  */ public class MatrixMultiply { public static void main(String[] args) { // 0. 定义变量 // 1. 获取输入第一个矩阵1 // 2. 获取输入第二个矩阵 // 3. 相乘 // 4. 打印 } public double[][

    2024年02月04日
    浏览(33)
  • 矩阵乘法(C语言实现),超详细

    分别求得两个矩阵的行数a1,b1以及列数a2,b2。 如果a1 == b1,并且a2 == b2则进行乘法运算

    2024年02月05日
    浏览(39)
  • 「算法小记」-2:矩阵链相乘的方案数【迭代/递归/动态规划/区域化DP/记忆化搜索】(C++ )

    😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号:程序员洲洲。 🎈 本文专栏:本文收录于洲洲的《算法小记》系列专栏,该专栏记录了许

    2024年02月05日
    浏览(49)
  • R语言矩阵、向量操作(矩阵乘法,向量内积、外积(叉乘),矩阵转置,矩阵的逆)

    创建两个四维矩阵 A 与 B,A 按列填充,B 按行填充 : 创建两个 n 维向量 x 和 y : 使用 t(矩阵、向量名) 即可: 输出如下: 使用 %*% 符号即可: 输出如下: 在R语言中,两个矩阵、向量的内积并不只是简单的 * 号就完事了,而是有以下两种求法: 或者 其结果如下: (注意区分

    2024年02月12日
    浏览(32)
  • 给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有R a​ 行、C a​ 列,B有R b​ 行、C b​ 列,则只有C a

    输入格式: 输入先后给出两个矩阵A和B。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给出C个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数,并且所有整数的绝对值不超过100。 输出格式: 若输入的两个矩阵的规模是

    2024年02月12日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包