| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 807 人关注过本帖
标题:[求助]一个矩阵相乘出错原因
只看楼主 加入收藏
bc2004
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2005-12-8
收藏
 问题点数:0 回复次数:6 
[求助]一个矩阵相乘出错原因
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++)就会出错,或显示对话框:

请各位给看看,多谢了!!
搜索更多相关主题的帖子: 矩阵 相乘 
2005-12-09 01:00
xinlingwuyu
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2005-12-7
收藏
得分:0 
这是当然得了,当i发生变化的时候,下面的程序也会跟着变化的呀!
不出错是偶然,出错是必然!
2005-12-09 08:37
bc2004
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2005-12-8
收藏
得分:0 

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

2005-12-10 00:59
otiantiano
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-12-14
收藏
得分:0 
数组的第一个值是a[0][0]吧~
2005-12-14 21:20
大水牛
Rank: 1
等 级:新手上路
威 望:1
帖 子:233
专家分:0
注 册:2005-11-21
收藏
得分:0 
。。。。。。。。这个问题是不是太幼稚了啊,你想想,数组的运算是从第一位开始的,你的i和j是数组的行列下标。你改了i,j的初始值当然运算的次数没有变,但是明显的,和数组的定义就不负了

虽然现在的我什么都不明白,但总有一天,我将包容一切,让优秀变成一种习惯。。。。。。。。。。。。
2005-12-14 22:15
bc2004
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2005-12-8
收藏
得分:0 
哎,就是就是,前几天我自己也找到答案了。比如,当定义一个数组a[10],那么就不能使用数组元素a[10],只可以使用a[0]到a[9]。所以for 语句就不能从1循环到10了,只可以从0到9。
2005-12-15 23:55
编程浪子
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-7-22
收藏
得分:0 
因为你定义二维数组时,下标是从a[0][0]开始的,上界是a[1][2],这样才表示为你定义a[2][3]时的数组啊.所以i 的初值要严格从0开始的,否则就会出现漏数和数组越界的情况,当然会出错的

喜欢IT技术的人士欢迎来到《IT精英族》QQ群作客:4135806
2005-12-16 09:24
快速回复:[求助]一个矩阵相乘出错原因
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033207 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved