c语言for循环中i,C语言for循环语句中a[i][j]和a[j][i]有什么区别

匿名用户

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的位置不一样。。。

501f87ad18a1909cb9e7cc401648997e.png

2da02fe71fd75f9c3c7edf7ab821f4bc.png

254a0e2d801613c0b7b54e9d5085daba.png

b12d65b80c703f399ca9ec5184ee1876.png

追答:

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

如果你的程序不输出过程值,只是输出最后结果的话,全部数据加和,结果肯定是一样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值