用C语言实现矩阵计算器

代码:

//矩阵计算器
#include <stdio.h>
void getmatrix(int m, int n, double m1[][n], double m2[][m]);
void calculate(int m, int n, double m1[][n], double m2[][m], double ansm[][m]);
void display(int m, int n, double m1[][n], double m2[][m], double ansm[][m]);
int main(void)
{
    int m, n;
    printf("Enter the size of the matrix:\n");
    printf("The number of rows:");
    scanf("%d", &m);
    printf("The number of columns:");
    scanf("%d", &n);
    const int m1[m][n];
    const int m2[n][m];
    int ansm[m][m];
    getmatrix(m, n, m1, m2);
    calculate(m, n, m1, m2, ansm);
    display(m, n, m1, m2, ansm);
    
    return 0;
}
void getmatrix(int m, int n, double m1[][n], double m2[][m])
{
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            printf("Enter one number to complete matrix1:");
            scanf("%lf", &m1[i][j]);
        }
    }
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            printf("Enter one number to complete matrix2:");
            scanf("%lf", &m2[i][j]);
        }
    }
}

void calculate(int m, int n, double m1[][n], double m2[][m], double ansm[][m])
{
    int sum = 0;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < m; j++)
        {
            for (int k = 0; k < n; k++)
            {
                sum += m1[i][k] * m2[k][j];
            }
            ansm[i][j] = sum;
            sum = 0;
        }
    }
}

void display(int m, int n, double m1[][n], double m2[][m], double ansm[][m])
{
    printf("\nmatrix1:\n");
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            printf("%6.1f", m1[i][j]);
        }
        printf("\n");
    }

    printf("\nmatrix2:\n");
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            printf("%6.1f", m2[i][j]);
        }
        printf("\n");
    }

    printf("\nThe answer of calculation:\n");
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < m; j++)
        {
            printf("%6.1f", ansm[i][j]);
        }
        printf("\n");
    }
}

核心:

两个矩阵计算的算法:

int sum = 0;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < m; j++)
        {
            for (int k = 0; k < n; k++)
            {
                sum += m1[i][k] * m2[k][j];
            }
            ansm[i][j] = sum;
            sum = 0;
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 作者 | HCY崇远 01 前言 本文源自于前阵子连续更新的推荐系统系列,前段时间给朋友整理一个关于推荐系统相关的...
    daos阅读 5,698评论 0 77
  • android.jobbole.com/80766/ 如果是继承ArrayAdapter,SimpleAdapte...
    聪_0b56阅读 314评论 0 0
  • 大部分人都知道,执行力很重要,但是执行力是什么?又如何培养执行力呢?人类的知识本质上是一套逻辑系统,只有自洽...
    浮云狒阅读 322评论 0 1
  • 1.回家陪爸妈三天 2.请姐姐帮忙照顾彤彤,给自己半天独处时间 3.与老公共同讨论每次时间管理课程学习成果 4.每...
    琪琪风雨阅读 224评论 0 0
  • 本篇写的内容,其实是在我们离开的倒数第二天写的。但由于顺序问题所以只能先把它放在前面写了!这次我们去了...
    huzeyu阅读 1,140评论 7 5