C语言关于矩阵乘法的函数,,

这是输入矩阵的程序,,voidmain(){intm,n,l,h;inti,j,g,k;int*p,*q;charx;printf("请输入a矩阵行数和列数,以空格分开,... 这是输入矩阵的程序,,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;i<m;i++) for(j=0;j<n;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;g<l;g++) for(k=0;k<h;k++) { printf("请输入b矩阵%d行%d列的数,,",(g+1),(k+1)); scanf("%d",(q+l*g+k));}这是我写的乘法函数,帮我看看怎么计算结果不对,,void multiplication(int a,int b,int c,int *p,int *q){ int i,j; int k; int sum; for(i=0;i<a;i++) { for(j=0;j<c;j++) { sum=0; for(k=0;k<b;k++){ sum=sum+(*(p+a*i+k))*(*(q+b*k+j)); } printf("%d ",sum);} printf("\n"); }} 展开
 我来答
匿名用户
2013-07-07
展开全部
童鞋,不知道你是用的什么测试数据,在我的机器上测试了几组数据,结果都是正确的。
重复下我的测试代码。

#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;i<m;i++)
for(j=0;j<n;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;g<l;g++)
for(k=0;k<h;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;i<a;i++)
{
for(j=0;j<c;j++)
{
sum=0;
for(k=0;k<b;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
结果正确。
北京网络营销
2015-10-23 · 一起交流学习,共同发展进步
北京网络营销
采纳数:393 获赞数:5830

向TA提问 私信TA
展开全部
#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;i<m;i++)
for(j=0;j<n;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;g<l;g++)
for(k=0;k<h;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;i<a;i++)
{
for(j=0;j<c;j++)
{
sum=0;
for(k=0;k<b;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
结果正确。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式