给定一个整数数组 nums,交换数组中最大值和最小值用c语言解决
时间: 2025-06-14 11:16:36 浏览: 14
在C语言中,可以使用一个简单的遍历过程找到数组中的最大值和最小值,然后通过临时变量进行交换。以下是基本的步骤:
1. 初始化两个变量 `max` 和 `min` 分别记录数组中的最大值和最小值,初始时都设为数组的第一个元素 `nums[0]`。
2. 遍历数组从第二个元素开始 (`i = 1`),如果当前元素大于 `max`,则更新 `max`;如果小于 `min`,则更新 `min`。
3. 再初始化一个临时变量 `temp` 存储最大值 `max`。
4. 找到最小值 `min` 后,将 `nums[0]` 赋值给 `min`。
5. 将临时变量 `temp` 赋值给 `nums[0]`,即交换最大值和最小值的位置。
6. 最后,数组 `nums` 的第一个元素就包含了原最大值,最后一个元素就是原最小值。
下面是一个简单的C语言代码实现这个功能:
```c
#include <stdio.h>
void swapMaxMin(int* nums, int size) {
if (size <= 1) return; // 如果数组只有一个元素或为空,无需交换
int max = nums[0], min = nums[0]; // 初始最大值和最小值
for (int i = 1; i < size; i++) {
if (nums[i] > max) {
max = nums[i];
} else if (nums[i] < min) {
min = nums[i];
}
}
// 交换最大值和最小值
int temp = max;
max = min;
min = temp;
nums[0] = min;
}
int main() {
int nums[] = {5, 2, 8, 1};
int size = sizeof(nums) / sizeof(nums[0]);
printf("Before swap: ");
for (int i = 0; i < size; i++) {
printf("%d ", nums[i]);
}
swapMaxMin(nums, size);
printf("\nAfter swap: ");
for (int i = 0; i < size; i++) {
printf("%d ", nums[i]);
}
return 0;
}
```
阅读全文
相关推荐


















