c语言2、在一个一维数组中存储的n个互不相同的整数中找出最小值和最大值,将最小值移到第一个数之前,将最大值移到最后一个数之后,其他数保持相对位置不变。
时间: 2023-05-21 15:00:37 浏览: 83
以下是C语言的代码实现:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void moveMinMax(int arr[], int n) {
int minIndex = 0, maxIndex = 0;
int i;
for (i = 1; i < n; i++) {
if (arr[i] < arr[minIndex]) {
minIndex = i;
}
if (arr[i] > arr[maxIndex]) {
maxIndex = i;
}
}
swap(&arr[0], &arr[minIndex]);
if (maxIndex == 0) {
maxIndex = minIndex;
}
swap(&arr[n-1], &arr[maxIndex]);
}
int main() {
int arr[] = {3, 7, 1, 9, 4, 6, 8, 2, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int i;
printf("Original array: ");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
moveMinMax(arr, n);
printf("Modified array: ");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
Original array: 3 7 1 9 4 6 8 2 5
Modified array: 1 7 3 5 4 6 2 8 9
```
这个程序首先遍历一遍数组,找到最小值和最大值的下标,然后将最小值和第一个数交换,将最大值和最后一个数交换。
阅读全文