将一个思维数组不超过50个元素中的最小元素与最大元素交换编写函数F UN输入第一行为一位数组的元素个数,第二组为数组的元素值
时间: 2024-09-15 19:04:54 浏览: 150
要实现这样一个函数,你需要先确定数组的大小和元素,然后找到最小和最大的元素,并将它们交换位置。以下是一个可能的C语言实现:
```c
#include <stdio.h>
// 函数声明
void swapMinMax(int arr[], int size);
int main() {
int size, i;
printf("请输入数组的大小:");
scanf("%d", &size);
// 动态分配数组
int *arr = (int *)malloc(size * sizeof(int));
printf("请输入数组的元素(不超过%d个):\n", size);
for (i = 0; i < size; i++) {
scanf("%d", &arr[i]);
}
// 调用函数进行最小和最大元素的交换
swapMinMax(arr, size);
// 打印交换后的数组
printf("交换后的数组元素为:\n");
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 释放动态分配的内存
free(arr);
return 0;
}
// 函数定义
void swapMinMax(int arr[], int size) {
if (size <= 1) return; // 如果数组只有一个元素或为空,则无需交换
int minIndex = 0, maxIndex = 0;
for (int i = 1; i < size; i++) {
if (arr[i] < arr[minIndex]) {
minIndex = i; // 更新最小元素索引
}
if (arr[i] > arr[maxIndex]) {
maxIndex = i; // 更新最大元素索引
}
}
// 交换最小和最大元素
int temp = arr[minIndex];
arr[minIndex] = arr[maxIndex];
arr[maxIndex] = temp;
}
```
这个程序首先从用户那里获取数组的大小和元素值,然后调用`swapMinMax`函数找到最小和最大元素的索引并交换它们的位置。请注意,这个实现假设数组中不会有重复的最小或最大值。如果有重复值,需要根据具体需求调整逻辑。
阅读全文