lingshuijushi
lingshuijushi
采纳率0%
2013-11-12 07:18 阅读 3.7k

C语言调用函数实现矩阵自乘

各位前辈,小弟新学C语言,怎么也调试不过,不知道哪里出了问题,请问我该怎么调试?
调用void SelfMul(int A1[][3],int A2[][3],int n)实现3阶矩阵的乘法

#include
//void SelfMul(int A1[][maxSize],int A2[][maxSize],int n)
void SelfMul(int A1[][3],int A2[][3],int n)
{
int s=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
A2[i][j]=0;
for(int k=0;k<n;k++)
A2[i][j]=A2[i][j]+A1[i][k]*A1[k][j];
printf("%d ",A2[i][j]);
if(++s%3==0)printf("\n");
}
}
int main()
{
int A1[][3]={{0,1,0},{0,0,1},{1,1,0}};
int A2[3][3];
// int s=0;
SelfMul(A1[][3],A2[][3],3); //编译问题出错提示所在行
/*
for(int m=0;m<3;m++)
for(int b=0;b<3;b++)
{
printf("%d ",A2[m][b]);
if(++s%3==0)printf("\n");
}
*/
return 0;
}

编译不通过,提示error C2059: syntax error : ']'

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • u012730315 韦轩 2013-12-21 10:51

    标准的[]里面应该是有值的
    你试试这个编译应该不会出错,但是运行就不知道了

    enter code here  #include <stdio.h>
    

    void SelfMul(int A1[][3],int A2[][3],int n);
    void SelfMul(int A1[][3],int A2[][3],int n)
    {
    int s=0;
    for(int i=0; i<n; i++)
    for(int j=0; j<n; j++)
    {
    A2[i][j]=0;
    for(int k=0; k<n; k++)
    A2[i][j]=A2[i][j]+A1[i][k]*A1[k][j];
    printf("%d ",A2[i][j]);
    if(++s%3==0)printf("\n");
    }
    }
    int main()
    {
    int A1[][3]= {{0,1,0},{0,0,1},{1,1,0}};
    int A2[3][3];
    int s = 0;
    SelfMul(A1[3][3],A2[3][3],3);
    for(int m=0; m<3; m++)
    for(int b=0; b<3; b++)
    {
    printf("%d ",A2[m][b]);
    if(++s%3==0)printf("\n");
    }

    return 0;
    

    }

    点赞 1 评论 复制链接分享
  • u011421573 追逐星空下的美 2014-01-08 12:00

    你好,如上面那面仁兄所回!
    就是在调用函数的时候,只需要调用SelfMul(A1, A2, 3);就可以了
    解释:
    若传递进去的参数为A1[3][3],根据数组的规则,
    那么这只是这个数组中的一个元素
    而且已经越界了(数组下标从0开始)

    而函数只希望传进一个n行3列的二给数组,
    所以此时只需传递这两个二维数组的数组名就可以了!

    其它并没有检查!

    对您的建议,注意缩进和空格!

    void SelfMul(int A1[][3], int A2[][3], int n)
    {
    for(int i = 0; i < n; i++)
    {
    for(int j = 0; j < n; j++)
    {
    A2[i][j] = 0;
    for(int k = 0; k < n; k++)
    A2[i][j] = A2[i][j] + A1[i][k] * A1[k][j];
    printf("%d ", A2[i][j]);
    }
    printf("\n");
    }
    }
    int main()
    {
    int A1[][3]= {{0, 1, 0}, {0, 0, 1}, {1, 1, 0}};
    int A2[3][3];
    SelfMul(A1, A2, 3);
    /*
    for(int m = 0; m < 3; m++)
    {
    for(int b = 0; b < 3; b++)
    {
    printf("%d ", A2[m][b]);
    }
    printf("\n");
    }
    */
    return 0;
    }

    代码格式已经改变了!

    点赞 1 评论 复制链接分享
  • bdyz1016 Tony_zcq 2013-11-12 14:01

    SelfMul(A1,A2,3);

    点赞 评论 复制链接分享

相关推荐