)输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。使用指针写以下函数:(1)求最小数、最大数的位置;(2)进行对换处理
时间: 2023-12-04 21:16:38 浏览: 61
好的,以下是使用指针写的函数代码:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void min_max_pos(int arr[], int len, int *min_pos, int *max_pos) {
*min_pos = 0;
*max_pos = len - 1;
for (int i = 1; i < len; i++) {
if (arr[i] < arr[*min_pos]) {
*min_pos = i;
}
if (arr[i] > arr[*max_pos]) {
*max_pos = i;
}
}
}
void exchange(int arr[], int len) {
int min_pos, max_pos;
min_max_pos(arr, len, &min_pos, &max_pos);
swap(&arr[0], &arr[min_pos]);
if (max_pos == 0) {
max_pos = min_pos;
}
swap(&arr[len-1], &arr[max_pos]);
}
int main() {
int arr[10];
printf("Please input 10 integers:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
exchange(arr, 10);
printf("After exchange:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
函数 `swap` 用于交换两个整数的值,函数 `min_max_pos` 用于找到数组中最小数和最大数的位置,函数 `exchange` 则是按照题目要求进行对换处理的函数。在 `exchange` 函数中,首先通过调用 `min_max_pos` 函数找到最小数和最大数的位置,然后使用 `swap` 函数进行对换处理。由于题目要求最小的数与第一个数对换,最大的数与最后一个数对换,因此还需要对特殊情况进行处理,比如当最大的数在第一个位置时,需要将其与最小的数对换。
阅读全文