C 我怎样做这个矩阵运算?
矩阵之间的#运算可定义如下: 矩阵A:维数m×n,矩阵B:维数p×q,矩阵A#B:维数mp×nq 这是我得到的输出C 我怎样做这个矩阵运算?,c,C,矩阵之间的#运算可定义如下: 矩阵A:维数m×n,矩阵B:维数p×q,矩阵A#B:维数mp×nq 这是我得到的输出 0 0 0 0 我的密码 #include <stdio.h> #include <conio.h> int multiply(int s); int row[2][2]={1,-3,-5,-7}; int row2[3][2]={0,2,4,6,8,0}; int main(void) { int result,i,j; for(
0
0
0
0
我的密码
#include <stdio.h>
#include <conio.h>
int multiply(int s);
int row[2][2]={1,-3,-5,-7};
int row2[3][2]={0,2,4,6,8,0};
int main(void) {
int result,i,j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
result=multiply(row[i][j]);
printf("%d\n",result);
}
}
return 0;
}
int multiply(int number){
int result,i,j;
for(i=0;i<3;i++){
for(j=0;j<2;j++){
result=row2[i][j]*(number);
return result;
}
}
}
#包括
#包括
整数乘法(整数s);
int行[2][2]={1,-3,-5,-7};
int row2[3][2]={0,2,4,6,8,0};
内部主(空){
int结果,i,j;
对于(i=0;i您发布的原始代码有几个问题:
multiply()不会在所有路径上返回值
当您完成内部循环的第一个过程时,您将提前退出乘法,而不是等待所有结果
您不会在循环中累积“结果”
在尝试使用“number”之前,您不会初始化它;也不会将“number”作为参数传递给“multiple()”
根据最新更新,您甚至不需要int“result”…您需要一个矩阵:int[6][4]results
请考虑以下内容:
void multiply(int ma[2][2], int mb[3][2], int result[6][4]){
int i, j, k;
//
for(i=0;i<...;i++){
...
for(j=0;j<...;j++){
...
for(k=0;k<...;k++){
...
}
}
}
}
int main (int argc, char *argv{}) {
int row[2][2]={1,-3,-5,-7};
int row2[3][2]={0,2,4,6,8,0};
int results[6][4] = {
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0},
{0,0,0,0}
};
...
multiply(row, row2, results);
...
}
void乘法(int-ma[2][2],int-mb[3][2],int-result[6][4]){
int i,j,k;
//
对于(i=0;iInmultiply
,您可以从最里面的循环无条件返回。这可能不是您想要的。另外,您不需要int结果[6][4]
metrix某处?你为什么要使用全局变量?如果我能从程序中得到结果,我可以照你说的做。现在我只从程序中得到0个输出。@M Oehmrow2[0][0]
is0
。你的乘法
行为就像它是int-multiply(int-number){返回0*number;}。您必须考虑是否要打印结果值或使用<代码>乘以<代码>,然后将其存储在更大的矩阵中,然后打印它。在任何一种情况下,必须基本上修改<代码>主< /代码>和<代码>乘以< /代码>。我想创建一个新的大矩阵,但如何做到这一点,我还没有计算出来。ut.@Bob_u_这段代码不是给我一个打印输出吗?我想要上一个矩阵中的所有结果。@PaulsM4我们不打算为您编写代码。您的函数返回一个结果,您的变量只能保存一个值,所以我试图向您展示一些您目前所做的错误。如果您想要矩阵中的结果,那么您可以我已经更新了我的回复。如果您有任何问题,请发回。请发布您所做的任何代码更改。并且请确认您是否可以根据需要使用调试器。