C++ 矩阵乘法 设矩阵int a[4][3],矩阵int b[3][5].矩阵的数据由用户输入.输出新的矩阵c=a*b.输出格式:c00 c01 c02 c03 c04 c10 c11 c12 c13 c14 c20 c21 c22 c23 c24 c30 c31 c32 c33 c34 矩阵乘法的计算方法:对于矩阵A[m]
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/24 19:20:38
C++ 矩阵乘法 设矩阵int a[4][3],矩阵int b[3][5].矩阵的数据由用户输入.输出新的矩阵c=a*b.输出格式:c00 c01 c02 c03 c04 c10 c11 c12 c13 c14 c20 c21 c22 c23 c24 c30 c31 c32 c33 c34 矩阵乘法的计算方法:对于矩阵A[m]
C++ 矩阵乘法
设矩阵int a[4][3],矩阵int b[3][5].矩阵的数据由用户输入.输出新的矩阵c=a*b.输出格式:
c00 c01 c02 c03 c04
c10 c11 c12 c13 c14
c20 c21 c22 c23 c24
c30 c31 c32 c33 c34
矩阵乘法的计算方法:
对于矩阵A[m][q]*B[q][n],
相乘的结果为矩阵C[m][n]且对于矩阵C中每一项都有
C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + .+ A[i][q]*B[q][j]
注意:实际矩阵大小不一定是4*3和3*5,请仔细阅读下面的输入说明
第一行为第一个矩阵的大小x1和y1(1
C++ 矩阵乘法 设矩阵int a[4][3],矩阵int b[3][5].矩阵的数据由用户输入.输出新的矩阵c=a*b.输出格式:c00 c01 c02 c03 c04 c10 c11 c12 c13 c14 c20 c21 c22 c23 c24 c30 c31 c32 c33 c34 矩阵乘法的计算方法:对于矩阵A[m]
#include<stdio.h>
#include<stdlib.h>
int main() {
int x1,y1,x2,y2;
int **a, **b, **c;
int i,j,k;
printf("intput x1,y1:");
scanf("%d%d", &x1, &y1);
printf("intput Array A(%d,%d):\n", x1, y1);
a = (int**)malloc(sizeof(int*)*x1);
for(i=0;i<x1;++i) {
a[i] = (int*)malloc(sizeof(int)*y1);
for(j=0;j<y1;++j) {
scanf("%d", &a[i][j]);
}
}
printf("\n");
printf("intput x2,y2:");
scanf("%d%d", &x2, &y2);
if(y1 != x2) {
printf("Wrong parameter.");
for(i=0;i<x1;++i) {
free(a[i]);
}
free(a);
return 0;
}
printf("intput Array A(%d,%d):\n", x2, y2);
b = (int**)malloc(sizeof(int*)*x2);
for(i=0;i<x2;++i) {
b[i] = (int*)malloc(sizeof(int)*y2);
for(j=0;j<y2;++j) {
scanf("%d", &b[i][j]);
}
}
printf("\n");
c = (int**)malloc(sizeof(int*)*x1);
for(i=0;i<x1;++i) {
c[i] = (int*)malloc(sizeof(int)*y2);
for(j=0;j<y2;++j) {
c[i][j] = 0;
for(k=0;k<y1;++k) {
c[i][j] += a[i][k]*b[k][j];
}
}
}
for(i=0;i<x1;++i) {//输出c
for(j=0;j<y2;++j) {
printf("%d ", c[i][j]);
}
printf("\n");
}
//释放空间
for(i=0;i<x1;++i) {
free(a[i]);
free(c[i]);
}
free(a);
free(c);
for(i=0;i<x2;++i) {
free(b[i]);
}
free(b);
return 0;
}
不定大小,完全满足题意~