当前位置: 代码迷 >> C语言 >> [求助]一个矩阵相乘出错原因
  详细解决方案

[求助]一个矩阵相乘出错原因

热度:181   发布时间:2005-12-09 01:00:00.0
[求助]一个矩阵相乘出错原因
main()
{
int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2]={{1,2},{3,4},{5,6}};
int c[2][2],i,j,k;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{
c[i][j]=0;
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
printf("%5d",c[i][j]);
printf("\n");
}
}
这个程序运行没问题,但是如果把for 语句的起始值该为1,即for(i=1;i<=2;i++)就会出错,或显示对话框:

请各位给看看,多谢了!!
搜索更多相关的解决方案: 矩阵  相乘  

----------------解决方案--------------------------------------------------------
这是当然得了,当i发生变化的时候,下面的程序也会跟着变化的呀!
不出错是偶然,出错是必然!
----------------解决方案--------------------------------------------------------

我的意思是说for语句从几开始很重要吗?
例如:for(i=1;i<=2;i++) 和for(i=0;i<3;i++)一样吗?都是循环两个数啊。


----------------解决方案--------------------------------------------------------
数组的第一个值是a[0][0]吧~
----------------解决方案--------------------------------------------------------
。。。。。。。。这个问题是不是太幼稚了啊,你想想,数组的运算是从第一位开始的,你的i和j是数组的行列下标。你改了i,j的初始值当然运算的次数没有变,但是明显的,和数组的定义就不负了
----------------解决方案--------------------------------------------------------
哎,就是就是,前几天我自己也找到答案了。比如,当定义一个数组a[10],那么就不能使用数组元素a[10],只可以使用a[0]到a[9]。所以for 语句就不能从1循环到10了,只可以从0到9。
----------------解决方案--------------------------------------------------------
因为你定义二维数组时,下标是从a[0][0]开始的,上界是a[1][2],这样才表示为你定义a[2][3]时的数组啊.所以i 的初值要严格从0开始的,否则就会出现漏数和数组越界的情况,当然会出错的
----------------解决方案--------------------------------------------------------
  相关解决方案