你好,输入输出,可以这么写
#include<stdio.h>
int const m=4, n=3;
int main(){
double a[m][n], b[n][m], c[m][m];
int i,j,k;
for(i=0;i<m;i++)for(j=0;j<n;j++){
printf("请输入矩阵A的第%d行第%d列的值:\n",i+1,j+1);
scanf("%lf",&a[i][j]);
}
for(i=0;i<n;i++)for(j=0;j<m;j++){
printf("请输入矩阵B的第%d行第%d列的值:\n",i+1,j+1);
scanf("%lf", &b[i][j]);
}
for(i=0;i<m;i++)for(k=0;k<m;k++)c[i][k]=0;//赋初值
for(i=0;i<m;i++){
for(j=0;j<n;j++){
for(k=0;k<m;k++) c[i][k] = c[i][k] + a[i][j]*b[j][k];//计算矩阵乘法
}
}
printf("C=\n");//开始打印矩阵乘积
for(i=0;i<m;i++){ for(k=0;k<m;k++){
printf("%lf ",c[i][k]);
}
printf("\n");//换行打印
}
}
请看这个页面下半部分的相关推荐。
供参考:
#include<stdio.h>
#define M 4 //第一个矩阵的行数 、第二个矩阵的列数
#define N 3 //第一个矩阵的列数 、第二个矩阵的行数
int main()
{
int a[M][N],b[N][M],c[M][M]={0};
int i,j,k;
printf("输入%d行%d列矩阵:",M,N);
for(i = 0;i<M;i++)
for(j = 0;j<N;j++)
scanf("%d",&a[i][j]);
printf("输入%d行%d列矩阵:",N,M);
for(i = 0;i<N;i++)
for(j = 0;j<M;j++)
scanf("%d",&b[i][j]);
printf("\n%d行%d列矩阵:\n",M,N);
for(i = 0;i<M;i++){
for(j = 0;j<N;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
printf("\n--------*---------\n");
printf("--------*---------\n");
printf("\n%d行%d列矩阵:\n",N,M);
for(i = 0;i<N;i++){
for(j = 0;j<M;j++)
printf("%d\t",b[i][j]);
printf("\n");
}
for(i = 0;i<M;i++)
for(j = 0;j<M;j++)
for(k = 0;k<N;k++)
c[i][j] += a[i][k]*b[k][j];//两矩阵相乘结果存入矩阵 C[][]
printf("\n两矩阵相乘得到新矩阵:\n");
for(i = 0;i<M;i++){
for(j = 0;j<M;j++)
printf("%d\t",c[i][j]);
printf("\n");
}
return 0;
}