Files
C_code/C语言/翁凯C语言/5/二维数组:矩阵运算2.c
T
Serendipity 93c16edb5a 更新MD文件路径引用
- 修正主README.md中的所有路径引用,使其与当前文件结构一致
- 更新翁凯C语言学习指南链接路径
- 更新五子棋AI项目文档链接路径
- 更新数据结构学习文档链接路径
- 修正编译说明和学习模块使用指南中的目录路径
- 改进五子棋README.md的编译运行说明,增加Windows和Linux/macOS的分平台指导
- 确保所有文档链接和路径引用都能正确工作
2025-10-17 10:52:27 +08:00

126 lines
2.5 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <stdbool.h>
// !二维数组
/*
int a[3][5];
通常理解为a是一个3行5列的矩阵
*/
// !二维数组的遍历
/*
for ( i=0; i<3; i++)
{
for ( j=0; j<5; j++ )
{
a[i][j] = i*j;
}
}
a[i][i]是一个int
表示第i行第j列上的单元
但a[i,j]是数学上表示a是一个i行j列的矩阵,在C语言是a[i][j]
*/
// !二维数组的初始化
/*
nt a[] [5] =
{
{0,1,2,3,4},
{2,3,4,5,6
};
列数是必须给出的,行数可以由编译器来数每行一个,逗号分隔
最后的逗号可以存在,有古老的传统
如果省略,表示补零
也可以用定位(*C99 标准)
*/
void matrix_produce(int l,int m, int a[l][m]);
void matrix_multiply( int l, int m, int n, int a[l][m], int b[m][n], int c[l][n]);
void matrix_print(int l, int n, int c[l][n]);
// !矩阵与矩阵的乘法运算
int main()
{
int l, m, q, n;
// !矩阵的定义
printf("请输入矩阵a的行数、列数:\n");
scanf("%d %d", &l, &m);
printf("请输入矩阵b的行数、列数:\n");
scanf("%d %d", &q, &n);
while (m!=q)
{
printf("矩阵a的列数与矩阵b的行数不相等,无法进行矩阵乘法运算!\n");
printf("请重新输入矩阵a的行数、列数:\n");
scanf("%d %d", &l, &m);
printf("请重新输入矩阵b的行数、列数:\n");
scanf("%d %d", &q, &n);
}
int a[l][m];
int b[m][n];
int c[l][n];
// !矩阵的输入
printf("请输入矩阵a的元素:\n");
matrix_produce(l, m, a);
printf("请输入矩阵b的元素:\n");
matrix_produce(m, n, b);
// !矩阵的乘法运算
matrix_multiply(l, m, n, a, b, c);
// !矩阵的打印
printf("矩阵a和矩阵b的乘法结果矩阵c为:\n");
matrix_print(l, n, c);
return 0;
}
void matrix_produce(int l,int m, int a[l][m])
{
// !矩阵的输入
int i, j;
for ( i = 0; i < l; i++)
{
for ( j = 0; j < m; j++)
{
scanf("%d", &a[i][j]);
}
}
}
void matrix_multiply (int l, int m, int n, int a[l][m], int b[m][n], int c[l][n])
{
// !矩阵的乘法运算
int i, j, k;
for ( i = 0; i < l; i++)
{
for ( j = 0; j < n; j++)
{
c[i][j] = 0;
for ( k = 0; k < m; k++)
{
c[i][j] += a[i][k] * b[k][j];
}
}
}
}
void matrix_print(int l, int n, int c[l][n])
{
// !矩阵的打印
int i, j;
for (i = 0; i < l; i++)
{
for (j = 0; j < n; j++)
{
printf("%d ", c[i][j]);
}
printf("\n");
}
}