八块腹肌的胖子 发表于 2020-4-10 17:15:00

C语言 二维数组

求助 为什么i+j=3时换行,没想明白

#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;
}

sunrise085 发表于 2020-4-10 17:27:45

你都没有说这段程序的作用目的是什么。谁知道为什么是i+j==3的时候换行啊。

猜测可能是要把一个4×5的数组,以5×4的形式显示吧。

kalakala 发表于 2020-4-10 17:30:19

#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;
      int count=0;

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

      return 0;
}

Draem 发表于 2020-4-11 09:17:57

针对4*5——5*4数组转换的小技巧,和为3,下标从零开始,也就是四个元素一行,最后一个自动归入下一行与i增加一个抵消,下一行满足条件的时候行尾剩下两个元素自动归入第三行,同理以此类推;
满足条件是行尾剩下一个元素
页: [1]
查看完整版本: C语言 二维数组