输入8个整数,将其中最大的数与第一个数对换,最小的数与最后一个数对换。用指针实现。
时间: 2023-12-04 07:24:04 浏览: 73
好的,我来解答这个问题。
首先,我们可以定义一个函数,接收一个整型数组和数组长度作为参数,并在函数内部进行交换操作。具体实现如下:
```c
void swap(int* arr, int len) {
int max = *arr, min = *arr;
int maxIndex = 0, minIndex = 0;
for (int i = 1; i < len; i++) {
if (*(arr + i) > max) {
max = *(arr + i);
maxIndex = i;
}
if (*(arr + i) < min) {
min = *(arr + i);
minIndex = i;
}
}
int temp = *(arr + maxIndex);
*(arr + maxIndex) = *arr;
*arr = temp;
if (minIndex == 0) {
minIndex = maxIndex;
}
temp = *(arr + minIndex);
*(arr + minIndex) = *(arr + len - 1);
*(arr + len - 1) = temp;
}
```
在函数内部,我们通过指针访问数组中的元素,找出最大值和最小值,并记录它们的下标。然后,我们交换最大值和第一个元素的位置,交换最小值和最后一个元素的位置。
接下来,我们可以在主函数中调用该函数,输入8个整数并打印出结果,代码如下:
```c
#include <stdio.h>
void swap(int* arr, int len);
int main() {
int arr[8];
printf("请输入8个整数:\n");
for (int i = 0; i < 8; i++) {
scanf("%d", &arr[i]);
}
swap(arr, 8);
printf("交换后的结果为:\n");
for (int i = 0; i < 8; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这样,我们就完成了题目要求,用指针实现了交换操作。
阅读全文