#include
#include
void matrix_print(int row, int col, float** mtx);
void matrix_mut(int row_a, int col_a, int col_b, float** a, float** b, float** c);
void matrix_print(int row, int col, float** mtx)
{
int r = 0, c = 0;
for (r = 0; r < row; r++)
{
for (c = 0; c < col; c++)
{
printf("%g ", *(*(mtx + r) + c));
}
printf("\n");
}
}
void matrix_mut(int row_a, int col_a, int col_b, float** a, float** b, float** c)
{
int i, j, k;
for (i = 0; i < row_a; i++)
{
for (j = 0; j < col_b; j++)
{
float sum = 0;
for (k = 0; k < col_a; k++)
{
sum += *(*(a + i) + k) * *(*(b + k) + j);
}
*(*(c + i) + j) = sum;
}
}
}
int main(void)
{
int i, j;
float** a, ** b, ** c;
int row_a, col_a, row_b, col_b;
printf("请输入矩阵A的行数,列数:\n");
scanf("%d,%d", &row_a, &col_a);
a = (float**)malloc(row_a * sizeof(float*));
for (i = 0; i < row_a; i++)
a[i] = (float*)malloc(col_a * sizeof(float));
printf("请输入矩阵A:\n");
for (i = 0; i < row_a; i++)
for (j = 0; j < col_a; j++)
scanf("%f", &a[i][j]);
row_b = col_a;
printf("请输入矩阵B的列数:\n");
scanf("%d", &col_b);
b = (float**)malloc(row_b * sizeof(float*));
for (i = 0; i < row_b; i++)
b[i] = (float*)malloc(col_b * sizeof(float));
printf("请输入矩阵B:\n");
for (i = 0; i < row_b; i++)
for (j = 0; j < col_b; j++)
scanf("%f", &b[i][j]);
c = (float**)calloc(row_a, sizeof(float*));
for (i = 0; i < row_a; i++)
c[i] = (float*)calloc(col_b, sizeof(float));
// float a[2][3] = {{1,2,3}, {1,5,2}};
// float b[3][2]= {{1,2},{2,1},{3,1}};
// float d[2][2];
matrix_mut(row_a, col_a, col_b, a, b, c);
matrix_print(row_a, col_b, c);
for (i = 0; i < row_a; i++)
free(*(a + i));
free(a);
for (i = 0; i < row_b; i++)
free(*(b + i));
free(b);
for (i = 0; i < row_a; i++)
free(*(c + i));
free(c);
return 0;
}
阅读(1123) | 评论(0) | 转发(0) |