矩阵

矩阵运算


一、目的

-掌握矩阵的插入
-掌握矩阵的运算写法
-掌握多重循环

二、实验内容与设计思想

矩阵相乘

函数相关伪代码

1.int q1[20][20],q2[20][20]
2.输入矩阵的横和列个数a,s,d
3.双重循环输入矩阵
4.矩阵的每行每列相乘,相加
  三重循环实现

函数代码

#include<stdio.h>
int main()
{
    int a,s,d,i,n,sum,m,k=0;
    scanf("%d %d %d",&a,&s,&d);
    int q1[a][s],q2[s][d];
    //矩阵的输入
    for(i=0;i<a;i++){
    for(n=0;n<s;n++){
        scanf("%d ",&q1[i][n]);
}
    }
        for(i=0;i<s;i++){
        for(n=0;n<d;n++){
        scanf("%d",&q2[i][n]);
}
    }
      //矩阵相乘
        for(i=0;i<a;i++){
        for(m=0;m<d;m++){
            sum=0;
        for(n=0;n<s;n++){
        sum+=q1[i][n]*q2[n][m];
}
            printf("%d",sum);
            k++;
            if(k%d!=0){
            printf(" ");
            }else if(k<a*d){
                printf("\n");
            }
        }
        }
    return 0;
}

时间复杂度O(n3),空间复杂度O(n2)

三、实验使用环境

以下请根据实际情况编写

  • 操作系统:Windows 11专业版
  • 编程语言:C
  • 开发工具:[DevC++]

四、实验步骤和调试过程

矩阵相乘

本机运行截图

五、实验小结

遇到的问题及解决方法:

  1. 问题:对于矩阵运算的不熟悉
  • 解决方法:修改代码,查找矩阵运算的运行规则

实验体会和收获:

通过这段C语言代码实现了两个矩阵的乘法。
首先,程序通过是scanf函数读取两个矩阵的尺寸和元素。接着,根据输入内容建立两个矩阵,通过矩阵的特性可知,需要双重循环来存入数组q1,q2,两个矩阵进行相乘,由于矩阵相乘规则可知,需要行和列的对应值相乘再相加(例如:第一个矩阵的第0行的值乘第2个矩阵的第0列的值,相加,之后是,第一个矩阵的第0行的值乘第2个矩阵的第1列的值,相加,如此往复),这需要通过三层嵌套循环来实现此功能。因后续不需要用这个结果,可以不需要用数组来储存结果,占据内存,可以相加后直接输出结果,并用k来判断这个输出结果是否需要换行,使得每行输出矩阵的一行元素,且元素之间以空格分隔。

posted @ 2025-04-02 21:58  穗和  阅读(16)  评论(0)    收藏  举报