一般情况下我们可以用两个for循环来打印出二维数组,代码如下:
#include <stdio.h>
#define MAXX 2
#define MAXY 3
void print()
{
int i, j;
int array[MAXX][MAXY] = {1, 2, 3, 4, 5, 6};
for(i=0; i< MAXX; i++)
for(j=0; j<MAXY; j++)
printf("%d\n",array[i][j]);
}
int main(void)
{
print();
return 0;
}
不过此处题目要求只使用一个for循环,此时需要明白二维数组在内存中是按照行存储的还是列存储的(默认是列存储的),所以
可以将二维数组array看成一个一位数组,i标识该数组在一位数组中的位置,则array在二维数组中的行号和列号分别为[i/MAXY],[I%MAXY]。
具体代码如下:
#include <stdio.h>
#define MAXX 2
#define MAXY 3
void print()
{
int i;
int array[MAXX][MAXY] = {1, 2, 3, 4, 5, 6};
for(i=0; i< MAXX*MAXY; i++)
printf("%d\n",array[i/MAXY][i%MAXY]);
}
int main(void)
{
print();
return 0;
}