帮我用C语言编辑一个程序,可以实现查找输入一个数组中的最大值或最小值,并移至数组首位
时间: 2024-09-19 08:15:21 浏览: 43
当然,我可以帮你编写一个简单的C语言程序,这个程序会找到输入数组中的最大值和最小值,并将它们交换到数组的起始位置。这里是一个基本的实现:
```c
#include <stdio.h>
// 函数声明
void findMinMax(int arr[], int n, int *min, int *max);
void swap(int *a, int *b);
int main() {
int arr[] = {5, 2, 9, 1, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int min, max;
// 找出并存储最小值和最大值
findMinMax(arr, n, &min, &max);
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
// 移动最小值到数组的第一个元素
swap(&arr[0], &arr[min]);
printf("\nArray after swapping min to first position: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
// 查找并返回最小值和最大值
void findMinMax(int arr[], int n, int *min, int *max) {
*min = *max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] < *min) {
*min = arr[i];
}
if (arr[i] > *max) {
*max = arr[i];
}
}
}
// 交换两个整数
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
在这个程序中,`findMinMax`函数遍历数组找出最小值和最大值,然后`main`函数中先打印原始数组,接着调用`swap`函数将最小值移动到第一个位置,最后再次打印结果。