帮忙看看为什么程序运行不出结果
#include"stdio.h"intr[6][6];voidmult(inta[6][6],intb[6][6]){inti,j,k;for(i=1;i<=6;i++...
#include "stdio.h"
int r[6][6];
void mult(int a[6][6] , int b[6][6])
{ int i,j,k;
for(i=1;i<=6;i++)
for(j=1;j<=6;j++) c[i][j]=0;
for(i=1;i<=6;i++)
for(j=1;j<=6;j++)
for(k=1;k<=6;k++)
r[i][j+=a[i][k]*b[k][j];
}
void main()
{
int i,j;
int num1[6][6],num2[6][6];
printf("请输入第一个矩阵的值:");
for(i=1;i<=6;i++)
for(j=1;j<=6;j++)
scanf("%d",&num1[i][j]);
printf("请输入第二个矩阵的值:");
for(i=1;i<=6;i++)
for(j=1;j<=6;j++)
scanf("%d",&num2[i][j]);
mult(num1,num2);
printf("\n两个矩阵相乘后的结果为:");
for(i=1;i<=6;i++)
{for(j=1;j<=6;j++)
printf("%4d",r[i][j]);
printf("\n");
}
} 展开
int r[6][6];
void mult(int a[6][6] , int b[6][6])
{ int i,j,k;
for(i=1;i<=6;i++)
for(j=1;j<=6;j++) c[i][j]=0;
for(i=1;i<=6;i++)
for(j=1;j<=6;j++)
for(k=1;k<=6;k++)
r[i][j+=a[i][k]*b[k][j];
}
void main()
{
int i,j;
int num1[6][6],num2[6][6];
printf("请输入第一个矩阵的值:");
for(i=1;i<=6;i++)
for(j=1;j<=6;j++)
scanf("%d",&num1[i][j]);
printf("请输入第二个矩阵的值:");
for(i=1;i<=6;i++)
for(j=1;j<=6;j++)
scanf("%d",&num2[i][j]);
mult(num1,num2);
printf("\n两个矩阵相乘后的结果为:");
for(i=1;i<=6;i++)
{for(j=1;j<=6;j++)
printf("%4d",r[i][j]);
printf("\n");
}
} 展开
展开全部
错误地方太多了,
1 c[i][j]应该改成r[i][j]
2 循环变量应该改成0到5
其他可能还有错。
1 c[i][j]应该改成r[i][j]
2 循环变量应该改成0到5
其他可能还有错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先来说你的算法没有问题,只是你可能在参数传递上出了问题。你的mult函数是无返回值的。你在主函数中调用了它,然后你要打印出第三个的矩阵,但是在mult函数中r[6][6]并没有传递到主函数中去。虽然在主函数和mult函数中都有矩阵r[6][6],但他们是不同的。解决方法是:
1、你可以把打印矩阵的语句放到mult函数中去。这样就不用把r[][]这个二维数组传递到主函数中去。
2、用指针,这样可以在r主函数中使用r[][]的地址,即可想你现在这样写。
我给你第一种方法的代码 在你的基础之上改的。
#include<stdio.h>
int r[6][6];
void mult(int a[6][6] , int b[6][6])
{
int i,j,k;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
r[i][j]=0;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
for(k=0;k<6;k++)
r[i][j]+=a[i][k]*b[k][j];
printf("\n两个矩阵相乘后的结果为:\n");
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
printf("%4d",r[i][j]);
printf("\n");
}
}
void main()
{
int i,j;
int num1[6][6],num2[6][6];
printf("请输入第一个矩阵的值:");
for(i=0;i<6;i++)
for(j=0;j<6;j++)
scanf("%d",&num1[i][j]);
printf("请输入第二个矩阵的值:");
for(i=0;i<6;i++)
for(j=0;j<6;j++)
scanf("%d",&num2[i][j]);
mult(num1,num2);
}
1、你可以把打印矩阵的语句放到mult函数中去。这样就不用把r[][]这个二维数组传递到主函数中去。
2、用指针,这样可以在r主函数中使用r[][]的地址,即可想你现在这样写。
我给你第一种方法的代码 在你的基础之上改的。
#include<stdio.h>
int r[6][6];
void mult(int a[6][6] , int b[6][6])
{
int i,j,k;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
r[i][j]=0;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
for(k=0;k<6;k++)
r[i][j]+=a[i][k]*b[k][j];
printf("\n两个矩阵相乘后的结果为:\n");
for(i=0;i<6;i++)
{
for(j=0;j<6;j++)
printf("%4d",r[i][j]);
printf("\n");
}
}
void main()
{
int i,j;
int num1[6][6],num2[6][6];
printf("请输入第一个矩阵的值:");
for(i=0;i<6;i++)
for(j=0;j<6;j++)
scanf("%d",&num1[i][j]);
printf("请输入第二个矩阵的值:");
for(i=0;i<6;i++)
for(j=0;j<6;j++)
scanf("%d",&num2[i][j]);
mult(num1,num2);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for(j=1;j<=6;j++) c[i][j]=0;这里应该是r[i][j]=0;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询