下面是一个使用C语言编写的简单程序,它将二维数组中的数按列的顺序存储到一个一维数组中:
```c
#include
#define ROWS 3
#define COLS 4
int main() {
// 定义并初始化二维数组
int twoDArray[ROWS][COLS] = {
{11, 22, 33, 44},
{11, 22, 33, 44},
{11, 22, 33, 44}
};
// 定义一维数组
int oneDArray[ROWS * COLS];
// 将二维数组中的元素按列的顺序存储到一维数组中
for (int col = 0; col < COLS; col++) {
for (int row = 0; row < ROWS; row++) {
oneDArray[col * ROWS + row] = twoDArray[row][col];
}
}
// 打印一维数组中的元素
for (int i = 0; i < ROWS * COLS; i++) {
printf("%d ", oneDArray[i]);
}
printf("\n");
return 0;
}
```
在这个程序中,我们首先定义了二维数组`twoDArray`,并且初始化了它。接着我们定义了一个足够大的一维数组`oneDArray`来存储二维数组中的所有元素。然后我们使用两个嵌套的for循环遍历二维数组的每一列和每一行,并将元素按列的顺序存储到一维数组中。
在一维数组中存储元素的顺序是通过索引计算得出的。对于二维数组中的每个元素`twoDArray[row][col]`,我们将其存储到一维数组中的`oneDArray[col * ROWS + row]`位置。这是基于一维数组将二维数组的列“展开”为连续序列的概念。
最后,我们通过一个简单的for循环打印出一维数组中的所有元素,以验证其是否正确包含了二维数组中的元素并按列的顺序排列。
编译并运行这个程序,你将会看到以下输出:
```
11 11 11 22 22 22 33 33 33 44 44 44
```
这表示一维数组`oneDArray`已经成功地按照要求填充了元素。