函数类型是根据有无返回值判断的,无返回值就把函数定义为void类型
为云浮等地区用户提供了全套网页设计制作服务,及云浮网站建设行业解决方案。主营业务为网站设计制作、成都网站设计、云浮网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
如果是单纯输出矩阵那就不用返回了,如果还要传回主函数有其它应用那就返回吧
1、程序运行输入数据时,第一行为A矩阵的行列数和B矩阵的行列数,接着分别输入A、B两个矩阵的值。
2、首先,定义6个整型变量,保存A、B矩阵的行和列,以及控制循环的变量,k则用于实现矩阵的乘法。
3、接着,定义三个整型二维数组,保存A、B和C矩阵的各元素。
4、输入三个矩阵的行数和列数,保存在变量a、b、c中。
5、输入矩阵A的各元素,保存在数组X中。
6、输入矩阵B的各元素,保存在数组Y中。
7、将二维数组Z的各元素,初始化为0。
8、用两层for循环,控制矩阵的乘法,并输出乘法所得的结果。
9、计算A矩阵和B矩阵的乘法,结果保存在数组Z中。
10、最后,输出乘法所得的结果,即输出Z数组中的所有元素。
11、运行程序,输入矩阵A和B的行数和列数,以及A矩阵和B矩阵的所有元素,电脑就会计算出乘积C矩阵的所有元素,并输出C矩阵。
如果确定距阵的大小长度,定义两个二维数组,用两个for循环两数据输入到内存,是每两个for输入一个数组,然后定义另外一个数组,用来得到结果距阵,再用三个嵌套的for将结果放入第三个数组当中,即c[i][j]=a[i][k]+b[k][j],k是在第三重循环,这样就可以得到要求的距阵,如果不确定大小长度就在输入语句的每个for循环的辖区内加一个变量作为标记程序运行时求出距阵的大小
童鞋,不知道你是用的什么测试数据,在我的机器上测试了几组数据,结果都是正确的。
重复下我的测试代码。
#include
"stdio.h"
#include
"stdlib.h"
#include
"malloc.h"
void
multiplication(int
a,int
b,int
c,int
*p,int
*q);
void
main()
{
int
m,n,l,h;
int
i,j,g,k;
int
*p,*q;
char
x;
printf("请输入a矩阵行数和列数,以空格分开,,,");
scanf("%d
%d",m,n);
p=(int
*)malloc(sizeof(int)*m*n);
for(i=0;im;i++)
for(j=0;jn;j++)
{
printf("请输入a矩阵%d行%d列的数,,",(i+1),(j+1));
scanf("%d",(p+m*i+j));
}
printf("请输入b矩阵行数和列数,以空格分开,,,");
scanf("%d
%d",l,h);
q=(int
*)malloc(sizeof(int)*l*h);
for(g=0;gl;g++)
for(k=0;kh;k++)
{
printf("请输入b矩阵%d行%d列的数,,",(g+1),(k+1));
scanf("%d",(q+l*g+k));
}
multiplication(
m,
n,
h,
p,
q);
}
void
multiplication(int
a,int
b,int
c,int
*p,int
*q)
{
int
i,j;
int
k;
int
sum;
for(i=0;ia;i++)
{
for(j=0;jc;j++)
{
sum=0;
for(k=0;kb;k++)
{
sum=sum+(*(p+a*i+k))*(*(q+b*k+j));
}
printf("%d
",sum);
}
printf("\n");
}
}
附带一组测试数据
A
3
4
2
1
B
3
4
Result
25
10
结果正确。
#include stdio.h
void main()
{
int a[4][4],b[4][4],c[4][4];
int i,j,k;int s[4][4]={0};
printf("请输入矩阵A:\n");
for(i=0;i=3;i++)
{
for(j=0;j=3;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",a[i][j]);
}
}
printf("\n");
printf("请输入矩阵B:\n");
for(i=0;i=3;i++)
{
for(j=0;j=3;j++)
{
printf("a[%d][%d]=",i,j);
scanf("%d",b[i][j]);
}
}
printf("矩阵A:\n");
for(i=0;i=3;i++)
{
for(j=0;j4;j++)
{
printf("%d ",a[i][j]);
if(j==3)
printf("\n");
}
}
printf("\n");
printf("矩阵B:\n");
for(i=0;i4;i++)
{
for(j=0;j4;j++)
{
printf("%d ",b[i][j]);
if(j==3)
printf("\n");
}
}
printf("\n");
printf("矩阵C=A*B:\n");
for(i=0;i4;i++)
{
for(j=0;j4;j++)
{
for(k=0;k4;k++)
{
s[i][j]+=a[i][k]*b[k][j];
}
c[i][j]=s[i][j];
printf("%d ",c[i][j]);
if(j==3)
printf("\n");
}
}
}