矩阵a是2*4矩阵,矩阵b是4*2矩阵,用c语言编程实现c=a*b

此问题急需解答,希望高手帮忙!谢谢!急!急!急!

第1个回答  2007-01-20
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
//矩阵a是2*4矩阵,矩阵b是4*2矩阵,用c语言编程实现c=a*b
void main()
{
int a[2][4],b[4][2],c[2][2],i,j,k;
srand(time(0));
for(i=0;i<4;i++)
for(j=0;j<2;j++)
{
b[i][j]=rand()%10;//给a,b数组赋值
a[j][i]=rand()%10;
}
printf("a数组为:\n");
for(i=0;i<2;i++)
{
for(j=0;j<4;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("b数组为:\n");
for(i=0;i<4;i++)
{
for(j=0;j<2;j++)
printf("%d ",b[i][j]);
printf("\n");
}
for(i=0;i<2;i++) //这个循环体是本程序的关键:主要用来实现数组 //组相乘
for(j=0;j<2;j++)
{
for(k=0;k<4;++k)
c[i][j]=a[i][j]*b[j][i];
}
printf("结果为:\n");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
printf("%2d ",c[i][j]);
printf("\n");
}

}
第2个回答  2007-01-16
下面是并不通用的代码,通用的代码输入 **二级指针,即相应的行列数

#include <stdio.h>

Multi(double a[][4], double b[][2], double c[][2])
{
int i, j, l;
for(i = 0; i < 2; i++)
for(j = 0; j < 2; j++)
{
for(l = 0; l < 4; ++l)
c[i][j] = a[i][j] * b[j][i];
}
}

int main()
{
double a[2][4]; /* 给具体值 */
double b[4][2]; /* 具体值 */
double c[2][2];
Multi(a, b, c);
return 0;
}本回答被提问者采纳