编写C程序求含有N个元素一维数组的最大值、最小值及它们的下标。要求:数组元素的输入、求最大值最小值及它们的下标通过函数实现,结果在主函数中输出。
时间: 2024-12-17 21:37:06 浏览: 13
C语言程序设计-输入一维数组的8个元素,并将最大值与最后一个数交换
5星 · 资源好评率100%
在C语言中,你可以编写如下的函数来完成这个任务:
```c
#include <stdio.h>
// 定义一个结构体来存储数组元素及其下标
typedef struct {
int value;
int index;
} ArrayValue;
// 函数用于获取数组的最大值和最小值以及对应的下标
ArrayValue findMinMax(int arr[], int n) {
// 初始化最大值和最小值,以及它们的下标为0
ArrayValue max = {arr[0], 0};
ArrayValue min = {arr[0], 0};
// 遍历数组,更新最大值和最小值
for (int i = 1; i < n; i++) {
if (arr[i] > max.value) {
max.value = arr[i];
max.index = i;
} else if (arr[i] < min.value) {
min.value = arr[i];
min.index = i;
}
}
return max; // 返回最大值及其下标
}
// 主函数
int main() {
int N;
printf("请输入数组的长度(N): ");
scanf("%d", &N);
int arr[N]; // 创建一个大小为N的一维数组
printf("请输入数组元素: ");
for (int i = 0; i < N; i++) {
scanf("%d", &arr[i]);
}
ArrayValue maxInfo = findMinMax(arr, N); // 调用findMinMax函数
printf("最大值: %d, 下标: %d\n", maxInfo.value, maxInfo.index);
ArrayValue minInfo = findMinMax(arr, N); // 由于已经找到最大值,这里再次调用获取最小值
printf("最小值: %d, 下标: %d\n", minInfo.value, minInfo.index);
return 0;
}
```
在这个程序中,`findMinMax`函数接收一个整型数组和其长度作为参数,遍历数组找出最大值和最小值并返回相应的结构体。在`main`函数中,用户会被提示输入数组长度和元素,然后分别计算最大值和最小值,并打印出它们的值和下标。
阅读全文