如何用C语言实现一个函数,接收一个二维整数数组a,返回每个行中最小元素的下标并存储到一维数组b中?
时间: 2024-11-05 20:29:08 浏览: 16
c语言基础-c语言编程基础之二维数组操作-两地调度.zip
在C语言中,你可以创建一个函数来实现这个功能。下面是一个简单的示例,该函数接受一个二维数组`a`和它的行数`rows`作为输入,然后返回一个一维数组`b`,其中包含每行的最小元素的下标:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数声明
int* find_min_indices(int** a, int rows, int cols, int* b);
// 主函数
int main() {
// 初始化一个二维数组和一维结果数组
int a[3][4] = {{5, 2, 9, 1},
{7, 8, 3, 6},
{4, 0, 12, 5}};
int rows = sizeof(a) / sizeof(a[0]);
int cols = sizeof(a[0]) / sizeof(a[0][0]);
// 获取最小下标数组大小
int min_indices_size = rows;
int* b = malloc(min_indices_size * sizeof(int));
// 调用函数获取最小值下标
for (int i = 0; i < rows; ++i) {
b[i] = find_min_indices(&a[i], 1, cols, &b[i]);
}
// 打印结果
printf("最小元素下标:\n");
for (int i = 0; i < rows; ++i) {
printf("第%d行的最小元素下标: %d\n", i+1, b[i]);
}
// 清理内存
free(b);
return 0;
}
// 实现find_min_indices函数
int* find_min_indices(int** a, int rows, int cols, int* result) {
for (int i = 0; i < rows; ++i) {
*result = 0; // 假设第一个元素是最小的
for (int j = 1; j < cols; ++j) {
if (a[i][j] < a[i][*result]) {
*result = j;
}
}
}
return result;
}
阅读全文