如何进行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时a
和i
的值列表。
学习编程最困难的部分之一不是真正学习语言;它是学习如何思考问题,以及如何将正在发生的事情可视化。或者,如果你愿意的话,如何让魔法不再是魔法。
当我在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函数。