c语言编写函数求解两个矩阵相乘
时间: 2024-01-20 21:04:45 浏览: 30
可以使用以下代码实现两个矩阵相乘的函数:
```c
void matrix_multiply(int m, int n, int p, int q, int matrix1[m][n], int matrix2[p][q], int result[m][q]) {
int i, j, k;
for (i = 0; i < m; i++) {
for (j = 0; j < q; j++) {
result[i][j] = 0;
for (k = 0; k < n; k++) {
result[i][j] += matrix1[i][k] * matrix2[k][j];
}
}
}
}
```
该函数接受六个参数:
- `m`:第一个矩阵的行数
- `n`:第一个矩阵的列数
- `p`:第二个矩阵的行数
- `q`:第二个矩阵的列数
- `matrix1`:第一个矩阵,是一个 `m` 行 `n` 列的二维数组
- `matrix2`:第二个矩阵,是一个 `p` 行 `q` 列的二维数组
函数会将两个矩阵相乘的结果存储在 `result` 中,其中 `result` 是一个 `m` 行 `q` 列的二维数组。
相关问题
C语言编写函数求解字符串长度
好的,我知道了。用C语言编写函数求解字符串长度的方法是使用字符串库中的strlen()函数,其原型为:
```c
size_t strlen(const char *str);
```
函数的参数为一个字符串常量(或称为字符数组)指针,返回值为该字符串的长度,即字符的个数(不包括字符串末尾的'\0')。
例如,以下代码可以实现计算一个字符串的长度,并输出结果:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
printf("该字符串的长度为:%d\n", len);
return 0;
}
```
注意,在使用strlen()函数之前,需要包含<stdio.h>和<string.h>头文件。
希望我的回答能够帮助到您,如有其他问题,请继续提问。
用C语言写两个三维矩阵相乘
以下是使用 C 语言编写的两个三维矩阵相乘的示例代码:
```c
#include <stdio.h>
#define ROW1 2
#define COL1 3
#define ROW2 3
#define COL2 4
void matrix_mul(int mat1[][COL1], int mat2[][COL2], int res[][COL2]) {
int i, j, k;
for (i = 0; i < ROW1; i++) {
for (j = 0; j < COL2; j++) {
res[i][j] = 0;
for (k = 0; k < COL1; k++) {
res[i][j] += mat1[i][k] * mat2[k][j];
}
}
}
}
int main() {
int mat1[ROW1][COL1] = {{1, 2, 3}, {4, 5, 6}};
int mat2[ROW2][COL2] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int res[ROW1][COL2];
int i, j;
matrix_mul(mat1, mat2, res);
printf("Matrix 1:\n");
for (i = 0; i < ROW1; i++) {
for (j = 0; j < COL1; j++) {
printf("%d ", mat1[i][j]);
}
printf("\n");
}
printf("\nMatrix 2:\n");
for (i = 0; i < ROW2; i++) {
for (j = 0; j < COL2; j++) {
printf("%d ", mat2[i][j]);
}
printf("\n");
}
printf("\nResult:\n");
for (i = 0; i < ROW1; i++) {
for (j = 0; j < COL2; j++) {
printf("%d ", res[i][j]);
}
printf("\n");
}
return 0;
}
```
输出:
```
Matrix 1:
1 2 3
4 5 6
Matrix 2:
1 2 3 4
5 6 7 8
9 10 11 12
Result:
38 44 50 56
83 98 113 128
```
在本例中,我们定义了两个三维矩阵 `mat1` 和 `mat2`,并将它们相乘的结果储存在 `res` 中。函数 `matrix_mul()` 接受三个参数:两个矩阵和储存结果的矩阵。函数使用三个循环,分别遍历每个矩阵元素,并进行相乘。最后,我们打印了输入矩阵和结果矩阵的值。