• 实现两个矩阵相乘的C语言程序


    程序功能:实现两个矩阵相乘的C语言程序,并将其输出

    代码如下:

     1 #include "stdafx.h"
     2 #include "windows.h"
     3 void Multi(int * left, int * right, int * result, int f1, int f2, int s1, int s2);
     4 
     5 int main()
     6 {
     7     int i, j;
     8     int a[4][3] = 
     9     {   {1,2,3},
    10         {4,5,6},
    11         {7,8,9},
    12         {1,2,3}};
    13     int b[3][3] =
    14     { { 1,2,3 },
    15     { 4,5,6 },
    16     {7,8,9} };
    17     //c矩阵为a矩阵与b矩阵的乘积
    18     int c[4][3];
    19     //计算两个矩阵相乘
    20     Multi(a[0], b[0],c[0], 4, 3, 3, 3);
    21     //输出c矩阵
    22     for (i = 0; i < 4; i++)
    23     {
    24         for(j=0;j<3;j++)
    25             printf("%4d  ", c[i][j]);
    26         printf("
    ");
    27     }
    28     system("pause");
    29     return 0;
    30 }
    31 
    32 //矩阵相乘算法,最后四个参数是两个相乘的矩阵的行数和列数
    33 void Multi(int * left, int * right, int * result,int f1, int f2, int s1, int s2)
    34 {
    35     //int a[f1][f2], b[s1][s2], c[f1][s2];
    36     //a[i][j]==a[i*f2+j]
    37     //由矩阵相乘,要求f2=s1,以下用f2
    38     for (int i = 0; i < f1; i++)    //i表示第i行
    39     {
    40         for (int j = 0; j < s2; j++) //j表示第j列
    41         {
    42             result[i*f2 + j] = 0;        //在这里 result[i][j] = result[i*f2+j];
    43             for(int p=0;p<f2;p++)
    44             {
    45                 result[i*f2 + j] +=left[i*f2+p]*right[p*f2+j];
    46             }
    47         }
    48     }
    49 }

     运行结果:

  • 相关阅读:
    Java的基本数据类型
    第五小组链表讨论作业
    WLST 命令和变量
    Linux之find命令详解
    Linux之netstat命令详解
    Linux之 sort,uniq,cut,wc命令详解
    Linux之grep命令详解
    Linux之awk命令详解
    Linux之sed命令详解
    关于表 datatable的条件查询
  • 原文地址:https://www.cnblogs.com/junjunjun123/p/9064985.html
Copyright © 2020-2023  润新知