用指针交换最大值最小值
时间: 2023-04-03 08:02:49 浏览: 192
好的,我可以回答这个问题。使用指针交换最大值和最小值的方法如下:
```c
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void swapMinMax(int arr[], int size) {
int *max = &arr[0];
int *min = &arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > *max) {
max = &arr[i];
}
if (arr[i] < *min) {
min = &arr[i];
}
}
swap(max, min);
}
```
这个函数接受一个整数数组和数组大小作为参数,然后使用指针找到数组中的最大值和最小值,并使用 `swap` 函数交换它们的值。
希望这个回答能够帮助到你!
相关问题
用指针从10个数中找出其中最大值和最小值。
以下是实现该功能的程序:
#include <stdio.h>
void findMaxMin(int *a, int *max, int *min);
void swap(int *a, int *b);
int main() {
int a[3];
int max, min;
int *p1, *p2, *p3;
printf("请输入3个整数:\n");
scanf("%d %d %d", &a[], &a[1], &a[2]);
p1 = &a[];
p2 = &a[1];
p3 = &a[2];
findMaxMin(p1, &max, &min);
printf("最大值为:%d,地址为:%p\n", max, &max);
printf("最小值为:%d,地址为:%p\n", min, &min);
swap(&max, &min);
printf("交换后,最大值为:%d,最小值为:%d\n", max, min);
return ;
}
void findMaxMin(int *a, int *max, int *min) {
*max = *min = *a;
if (*a > *(a + 1)) {
*max = *a;
*min = *(a + 1);
} else {
*max = *(a + 1);
*min = *a;
}
if (*max < *(a + 2)) {
*max = *(a + 2);
}
if (*min > *(a + 2)) {
*min = *(a + 2);
}
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
程序的思路是先通过指针运算找出最大值和最小值,并记录它们的地址。然后调用swap函数实现最大值和最小值的交换。最后输出交换后的结果。
定义一个函数,将数组中的最大值与最小值交换位置(要求用指针完成)
好的,以下是一个简单的实现:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void swap_max_min(int *arr, int size) {
// 找到最大值和最小值的下标
int max_index = 0, min_index = 0;
for (int i = 1; i < size; i++) {
if (arr[i] > arr[max_index]) {
max_index = i;
}
if (arr[i] < arr[min_index]) {
min_index = i;
}
}
// 交换最大值和最小值
swap(&arr[max_index], &arr[min_index]);
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int size = sizeof(arr) / sizeof(arr[0]);
printf("Before swapping: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
swap_max_min(arr, size);
printf("After swapping: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序定义了一个 `swap` 函数,用于交换两个整数的值。然后定义了一个 `swap_max_min` 函数,用于找到数组中的最大值和最小值的下标,并将它们交换。在 `main` 函数中,我们测试了这个函数,输出了交换前和交换后的数组。