c语言交换最大值、最小值的位置 分数 10 作者 吴光生 单位 新余学院 找出含有10个元素的一维数组中的最大值和最小值,并互换这两个数的位置。(最大值、最小值如果存在多个相同元素,只考虑下标最小的那个元素)、
时间: 2024-09-30 16:08:04 浏览: 49
在C语言中,你可以通过遍历数组并维护两个变量分别记录当前找到的最大值和最小值,同时存储它们的索引来实现这个功能。以下是一个简单的示例程序:
```c
#include <stdio.h>
// 定义函数用于交换数组中的最大值和最小值
void swapMaxMin(int arr[], int n) {
int max = arr[0]; // 假设第一个元素是最小值
int min = arr[0];
int max_index = 0;
int min_index = 0;
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
max_index = i;
}
if (arr[i] < min) {
min = arr[i];
min_index = i;
}
}
// 如果找到了新的最小值或最大值,更新对应的索引位置
if (max_index != 0 || min_index != 0) {
if (min_index == 0) { // 最小值已经在第一个位置,无需交换
printf("最小值 %d 的位置未变\n", min);
} else {
int temp = arr[max_index];
arr[max_index] = arr[min_index];
arr[min_index] = temp;
printf("交换了最大值 %d 和最小值 %d 的位置\n", max, min);
}
} else {
printf("数组中没有不同的最大值和最小值\n");
}
}
int main() {
int arr[10] = {5, 2, 8, 1, 9, 4, 6, 7, 3, 10}; // 示例数组
int n = sizeof(arr) / sizeof(arr[0]);
printf("原始数组: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
swapMaxMin(arr, n);
printf("交换后的数组: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
当你运行这个程序时,它会找出数组中最大的值和最小值,并将它们交换位置,如果原始数组中有相同的最大值或最小值,则仅保留下标较小的那个。
阅读全文