C语言--矩阵相乘

C语言–矩阵相乘

题目:
利用矩阵相乘公式cij= aik*bkj,编程计算并输出m×n阶矩阵A和n×m阶矩阵B之积。其中,m和n从键盘输入,m和n的值不超过6,否则提示用户重新输入,如果输入非法字符也提示用户重新输入。要求按如下函数原型编写程序:

/* 函数功能:计算m×n阶矩阵A和n×m阶矩阵B之积,结果存于二维数组c中 */

void MultiplyMatrix(int a[ROW][COL], int b[COL][ROW], int c[ROW][ROW], int m, int n);

/* 函数功能:输出m×m阶矩阵a中的元素 */

void PrintMatrix(int a[ROW][ROW], int m);

**输入m和n的输入提示信息:“Input m, n:”

**输入m和n的输入格式:"%d,%d"

*输入矩阵元素的输入提示信息:"Input %d%d matrix a:\n"

**输入矩阵元素的输入格式: “%d”

**输出提示信息:“Results:\n”

**输出格式:"%6d"

代码借鉴:博客园—C语言实现矩阵相乘
在这里插入图片描述代码:

include <stdio.h>

//void input(int matrix1[][], int matrix2[][], int m, int n);
//void mul(int matrix1[][], int matrix2[][], int m, int n);
int main (void)
{
int matrix1[10][10];
int matrix2[10][10];
int m, n;

printf("Input m, n:");
scanf("%d,%d", &m, &n);


while (m > 6 || n > 6)
{
    fflush(stdin);
    printf("Input m, n:");
    scanf("%d,%d", &m, &n);
}


//input(matrix1, matrix2, m, n);
 printf("Input %d*%d matrix a:\n", m, n);
for (int i = 0; i < m; i++)
    for (int p = 0; p < n; p++)
        scanf("%d", &matrix1[i][p]);


printf("Input %d*%d matrix b:\n", n, m);
for (int i = 0; i < n; i++)
    for (int p = 0; p < m; p++)
        scanf("%d", &matrix2[i][p]);
//mul(matrix1, matrix2, m, n);

 int matrix[10][10];
for (int i = 0; i < 10; i++)
    for (int p = 0; p < 10; p++)
        matrix[i][p] = 0;
//初始化二维结果数组
for (int rank = 0; rank < m; rank++)
    for (int col = 0; col < m; col++)
        for (int k = 0; k < n; k++)
            matrix[rank][col] = matrix[rank][col] + matrix1[rank][k] * matrix2[k][col];

printf("Results:\n");
for (int i = 0; i < m; i++)
{
   // if(i>0)

    for (int p = 0; p < m; p++)
        printf("%6d", matrix[i][p]);
    printf("\n");
}

return 0;

}
注意事项
1.函数中定义二维数组不可以

void mul(int a[][]);

不可以省略数组的列
2.矩阵相乘要注意循环边界
第一层循环选定第一个矩阵的行,第二个循环遍历第二个矩阵的列,他们的边界都是那个m

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值