C语言求助!关于用数组求两个3*3矩阵相乘的问题,急!!!解决问题的再追加分!

2025-05-19 21:43:28
推荐回答(2个)
回答1:

跟着步骤输入就好。可以做任两个矩阵的乘法。
#include
void main()
{
int m,n,q,i,j,k,s=0,t=0,a[9][9],b[9][9],c[9][9];
printf("请输入a矩阵的行数m和列数n以及b矩阵的行数n和列数q:\n");
scanf("%d%d%d",&m,&n,&q);
printf("请输入a矩阵的m*n个数:\n");
for(i=0;i {
for(j=0;j scanf("%d",a[i]+j);
}
printf("请输入b矩阵的n*q个数:\n");
for(i=0;i {
for(j=0;j scanf("%d",b[i]+j);
}
for(i=0;i
for(j=0;j {
for(k=0;k {

t=a[i][k]*b[k][j];
s=s+t;
}
c[i][j]=s;
s=0;
}

for(i=0;i {
for(j=0;j printf("%6d",c[i][j]);
printf("\n");
}
}

回答2:

#include
void main()
{
int i,j,k=0; //一位数组初始化
int a[9]={12,34,23,34,45,34,35,45,34};
int b[9]={45,26,34,45,87,34,98,45,90};
//输出一位数组a[9] b[9]
printf("a[9]:");
for(i=0;i<9;i++)
printf("%d ",a[i]); printf("\n\n");

printf("b[9]:");
for(i=0;i<9;i++)
printf("%d ",b[i]);
//定义3*3二维数组
int c[3][3];

//依照3*3矩阵格式打印结果
printf("\n结果为:\n\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
//两个一位数组相乘的结果存入二维数组c[3][3]
c[i][j]=a[k]*b[k];
//k的主要目的是控制a[k]*b[k],
//这样可以取出a[0]-a[8],b[0]-[8]的值相乘存入数组
k++;
// %-6d只是控制输出格式好看点,没什么作用,直接写%d就可以
printf("%-6d",c[i][j]);
}
printf("\n");
}
}