匿名用户
1级
2014-04-27 回答
可以将i 理解成行,j 理解成列,a[i][j]和a[j][i]取值不同
比如,假设一个3维数组(你的是5x5),数值分别为:
1 2 3
4 5 6
7 8 9
循环中,当i=0时,a[i][j]取值为1 2 3,a[j][i]取值为1 4 7,根据这个来理解结果的不同吧
追问:
意思是i与j在括号中的位置变了,但表示的意义还是不变,依旧代表行和列,对吗?
追答:
你这里是2重循环
for ()
for()
这里你可以将外循环理解成行,内循环理解成列
追问:
恩,我知道,我的意思是a[i][j]和a[j][i]中i和j的位置调换了,可二重循环并没有变,但却输出了行和列的和,这就意味着二维数组的维度是由i,j所表示的意义决定的,对吧?!系统是怎么识别i表示行,j表示列的呢
追答:
行和列是我们用来还理解的,比如一个数组a[3][4],
计算机内存储数组数据的时候,是连续存放的,依次是:
a[0][0],a[0][1],a[0][2],a[0][3],a[1][0],……
也就是说对a[i][j]来说,每个i的值(比如i=0时),都有j个数,也就是可以理解为每一行,都有j个数据,按循环顺利排队取值而已
for (i。。。)
for(j。。。)
中a[i][j],和
for (j。。。)
for(i。。。)
中a[j][i],是一样的
系统是按照数组的取值来判断的,其实计算机内就是一个连续的数据存储,行和列是为了我们方便理解而拿来说的,并不存在行和列
追问:
可是按你写出来的循环,结果是一样的。。。他两次for循环是一样的应该,只是求和时i,j的位置不一样。。。
追答:
for (i。。。)
for(j。。。)
中a[i][j],和
for (j。。。)
for(i。。。)
中a[j][i],是一样的
你如果用同一个循环
for (i。。。)
for(j。。。)
每次循环求和a[i][j]和a[j][i]就不同了,
追问:
【原来你一直不懂我的问题】额,是呀,问题就是同一个循环只变换了ij的位置结果怎么就不同了?。。。。。。
追答:
你上面的截图程序,两段根本就是一样的程序
n求和的时候,你的循环换成了
for (j=0;j<5;j++)
for (i=0;i<5;i++)
按照你的说法,这里应该是:
for (i=0;i<5;i++)
for (j=0;j<5;j++)
追问:
是的。 重看了你的回答,原来刚看回答的时候会错意了,抱歉。问题依旧没解决。。。我依旧不懂他怎么循环的。。。
追答:
假设一个3维数组(你的是5x5),数值分别为:
1 2 3
4 5 6
7 8 9
循环中,
当i=0时,a[i][j]取值为1 2 3,a[j][i]取值为1 4 7
当i=1时,a[i][j]取值为4 5 6,a[j][i]取值为2 5 8
当i=2时,a[i][j]取值为7 8 9,a[j][i]取值为3 6 9
如果你的程序不输出过程值,只是输出最后结果的话,全部数据加和,结果肯定是一样的