LXMARCO 发表于 2019-12-29 23:15:03

二维数组课后习题求助

#include <stdio.h>

int main()
{
      int a = {
                {1, 2, 3, 4, 5},
                {6, 7, 8, 9, 10},
                {11, 12, 13, 14, 15},
                {16, 17, 18, 19, 20}};

      int i, j;

      for (i = 0; i < 4; i++)
      {
                for (j = 0; j < 5; j++)
                {
                        printf("%2d ", a);
                        if (i + j == 3)
                        {
                              printf("\n");
                        }
                }
      }
      printf("\n");

      return 0;
}


输出:
1   2   3   4
5   6   7   8
9 10 11 12
13 14 15 16
17 18 19 20

if这个判断设立的初衷应该是想在这里用一个if来让a这个数组以五行四列的形式来输出。这里我有一个地发不懂的是:
        a(注意这个a是要移动到下一行,所以当上面到>了a的时候就要换行。同理下面到了a,a)
a这个时候是满足if判断了键的所以换行了,但是到了后面1+3 !=3    2+3!=3这里是怎么做到换行的呢?
谢谢!

sunrise085 发表于 2019-12-30 08:52:10

这个问题很简单啊,自己将数组下标写出来不就知道了嘛~~~
相当于把四行五列的数组以五行四列的形式输出。换行的时候下标就是a,a,a,a。而不是你所想象的每行的第三个换行。你再看看是不是这么个道理~~

LXMARCO 发表于 2019-12-30 18:18:33

sunrise085 发表于 2019-12-30 08:52
这个问题很简单啊,自己将数组下标写出来不就知道了嘛~~~
相当于把四行五列的数组以五行四列的形式输出。 ...

噢!我明白了,是我想糊涂了,我从五行四列去想这个事去了,应该从四行五列的角度出发去想,这样就符合 == 3了,   谢谢你
页: [1]
查看完整版本: 二维数组课后习题求助