C程序中怎么把一个二维数组每一列算出最小值并把最小值对应的行数组成一个新的一维数组
时间: 2024-03-09 17:45:30 浏览: 20
可以按照以下步骤实现:
1. 定义一个一维数组,长度为二维数组的列数,用于存储每列最小值所在的行号。
2. 使用双重循环遍历二维数组,分别找出每一列的最小值及其所在的行号,并将行号存入第一步定义的一维数组中。
3. 返回第一步定义的一维数组,即为每列最小值所在的行数组成的新一维数组。
以下是示例代码:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 4
int* getMinRows(int arr[ROWS][COLS]) {
static int minRows[COLS]; // 静态数组,用于存储每列最小值所在的行号
int i, j;
for (j = 0; j < COLS; j++) {
int min = arr[0][j];
int minRow = 0;
for (i = 1; i < ROWS; i++) {
if (arr[i][j] < min) {
min = arr[i][j];
minRow = i;
}
}
minRows[j] = minRow;
}
return minRows;
}
int main() {
int arr[ROWS][COLS] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
int* minRows = getMinRows(arr);
int j;
for (j = 0; j < COLS; j++) {
printf("%d ", minRows[j]);
}
printf("\n");
return 0;
}
```
输出结果为:`0 0 0 0`,表示每列最小值所在的行号分别为 0。