矩阵乘法。编写一个C函数实现M行K列矩阵与K行N列的矩阵的乘积。设A为M行K列的矩阵,B为K行N列的矩阵,则C=A×B的积为M行N列的矩阵。 其中:M为2,K为3,N为2. 矩阵乘法的规则是:设A[m,k],B[k,n],则C[m,n]=A[m,k]×B[k,n],其中: C[i,j]=∑kl=1A[i,l]×B[l,j], (i=1,2,…,m j=1,2,…,n) **输入提示:"请输入矩阵A:\n" "请输入矩阵B:\n" **输入格式:"%d" **输出格式要求:"array C=\n" "\t%d"
时间: 2024-03-10 08:51:19 浏览: 115
好的,下面是一个实现你所需功能的C函数:
```
void matrix_multiply(int M, int K, int N, int A[][K], int B[][N], int C[][N]) {
int i, j, l;
for (i = 0; i < M; i++) {
for (j = 0; j < N; j++) {
C[i][j] = 0;
for (l = 0; l < K; l++) {
C[i][j] += A[i][l] * B[l][j];
}
}
}
}
```
该函数接受6个参数:矩阵A的行数M、列数K,矩阵B的列数N,以及指向矩阵A、B和C的指针。函数会计算出C=A×B的积,并将结果存储在C指向的内存中。
这个函数的实现采用了三重循环,其中最外层的两个循环遍历矩阵C的每个元素,内层的循环计算出C的每个元素的值。这个循环结构可以保证每个元素都被恰好计算一次,从而得到正确的结果。
在主函数中,你可以按照以下方式调用该函数:
```
int main() {
int A[2][3], B[3][2], C[2][2];
int i, j;
printf("请输入矩阵A:\n");
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &A[i][j]);
}
}
printf("请输入矩阵B:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 2; j++) {
scanf("%d", &B[i][j]);
}
}
matrix_multiply(2, 3, 2, A, B, C);
printf("array C=\n");
for (i = 0; i < 2; i++) {
for (j = 0; j < 2; j++) {
printf("\t%d", C[i][j]);
}
printf("\n");
}
return 0;
}
```
在这个例子中,我们首先定义了矩阵A、B和C,然后使用循环语句分别从标准输入中读入矩阵A和B的元素。接着,我们调用matrix_multiply函数计算出C=A×B的积,并将结果存储在矩阵C中。最后,我们使用循环语句输出矩阵C的元素。
希望这个函数能够帮助你完成矩阵乘法的计算。如果你有任何其他问题,请随时问我。
阅读全文