用指针从10个数中找出其中最大值和最小值。
时间: 2024-04-08 09:31:36 浏览: 93
以下是实现该功能的程序:
#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函数实现最大值和最小值的交换。最后输出交换后的结果。
阅读全文