当打印10列和10行时,我如何获得所有的数组编号



如何进行printf("%d,veck[i]);打印出数组的所有100个数字,而不是只有1-10个?

int vek[100];
    for(int a=0;a<10;a++){
        for(int i=0;i<10;i++){
                printf("%d ", vek[i]); //only shows numbers 1-10
        }
     printf("n");
     }

您应该更改vek的索引。

printf("%d ", vek[10* a + i]);

这里的问题是你的数组是一条线,但你想打印一个正方形。

数组的索引可能如下所示:

0  1  2  3  4  5 ...

但你希望所说的索引像这样打印到屏幕上:

 0  1  2  3  4  5  6  7  8  9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
.
.
.

请注意,每行向下一列之间的差值是10。i需要处理0-9,所以a需要处理0,10,20,。。。正在下降。

等一下,这是乘法。假定a具有值0,1,2,3。。。,a*10给出了0、10、20、30。。。

如果您仍然感到困惑,请尝试在打印每个数字时减去i的值。或者,写出每次执行printf时ai的值列表。

学习编程最困难的部分之一不是真正学习语言;它是学习如何思考问题,以及如何将正在发生的事情可视化。或者,如果你愿意的话,如何让魔法不再是魔法。

当我在C中玩多维数组时,我喜欢添加一个实用函数。因此,我有一个函数,它可以获取行数以及感兴趣的x和y坐标。所以,我得到了这样的东西:

int get_item(int *matrix, int num_rows, int x, int y)
{
    return matrix[num_rows * x + y];
}

在你的情况下,你会这样称呼它:

printf("%d ", get_item(vek, 10, a, i));

您也可以使用类似的put_item函数。

最新更新