C 我怎样做这个矩阵运算?

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(

矩阵之间的#运算可定义如下:

矩阵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(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;iIn
    multiply
    ,您可以从最里面的循环无条件返回。这可能不是您想要的。另外,您不需要
    int结果[6][4]
    metrix某处?你为什么要使用全局变量?如果我能从程序中得到结果,我可以照你说的做。现在我只从程序中得到0个输出。@M Oehm
    row2[0][0]
    is
    0
    。你的
    乘法
    行为就像它是
    int-multiply(int-number){返回0*number;}。您必须考虑是否要打印结果值或使用<代码>乘以<代码>,然后将其存储在更大的矩阵中,然后打印它。在任何一种情况下,必须基本上修改<代码>主< /代码>和<代码>乘以< /代码>。我想创建一个新的大矩阵,但如何做到这一点,我还没有计算出来。ut.@Bob_u_这段代码不是给我一个打印输出吗?我想要上一个矩阵中的所有结果。@PaulsM4我们不打算为您编写代码。您的函数返回一个结果,您的变量只能保存一个值,所以我试图向您展示一些您目前所做的错误。如果您想要矩阵中的结果,那么您可以我已经更新了我的回复。如果您有任何问题,请发回。请发布您所做的任何代码更改。并且请确认您是否可以根据需要使用调试器。