学不死就死里xue 发表于 2022-10-25 19:21:33

二维数组的嵌套

#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);\\这里的2d是什么作用呀
                        if (i + j == 3)      \\这里的i+j==3是啥操作 表示看不懂有没有大佬解释一下呀 我比较蠢 得简单易懂才能理解
                        {
                              printf("\n");
                        }
                }
      }
      printf("\n");

      return 0;
}



jackz007 发表于 2022-10-25 20:02:49

本帖最后由 jackz007 于 2022-10-25 20:03 编辑

      for (i = 0; i < 4; i++)
      {
                for (j = 0; j < 5; j++)
                {
                        printf("%2d ", a) ; // %2d 的意思是以十进制整数按 2 个字符宽度打印输出变量 a 的值
                        if (i + j == 3)         // 把二维数组切分成一维数组打印,每打印 4 个元素就打印一个回车换行符。
                        {
                              printf("\n");
                        }

Freedy_S 发表于 2022-10-25 21:11:48

2d指的是这位数字占两个位置
i + j == 3指的是每4个元素就换行一次。

桃花飞舞 发表于 2022-10-25 22:52:36

本帖最后由 桃花飞舞 于 2022-10-25 22:54 编辑

2d是位宽就是说占用了两位数字的宽度,i+j == 3 是指二维数组元素下标之和等于3的时候就执行printf("\n");   这可以自己计算下,什么情况执行换行,不赞同楼上的每4个元素就换行

两手空空儿 发表于 2022-10-26 10:05:06

同意4楼的说法,这里只适用于这段代码,我感觉通用一些的写法应该是
if( (i != 0 && j != 0)&&( (i+j)%3 == 0) )

学不死就死里xue 发表于 2022-10-26 13:43:27

谢谢各位 我算着算着懂了 有多了一个新思路
页: [1]
查看完整版本: 二维数组的嵌套