指针程序最大值和最小值
时间: 2023-11-03 10:59:11 浏览: 89
指针程序可以通过遍历数组元素来获取最大值和最小值。以下是一个示例程序:
```c
#include <stdio.h>
int main() {
int arr[] = {5, 10, 3, 8, 15};
int n = sizeof(arr) / sizeof(arr[0]); // 数组长度
int *p = arr; // 指针指向数组第一个元素
int max = *p; // 最大值初始化为第一个元素
int min = *p; // 最小值初始化为第一个元素
for (int i = 1; i < n; i++) {
if (*(p + i) > max) {
max = *(p + i); // 更新最大值
}
if (*(p + i) < min) {
min = *(p + i); // 更新最小值
}
}
printf("Max: %d\n", max);
printf("Min: %d\n", min);
return 0;
}
```
该程序中,首先定义了一个数组 `arr`,并计算了它的长度 `n`。然后定义了一个指针 `p`,指向数组的第一个元素。接着初始化了最大值和最小值,均为第一个元素。然后遍历了数组中所有元素,通过指针 `p` 访问每个元素,并更新最大值和最小值。最后输出了最大值和最小值。
相关问题
c语言指针求最大值最小值
要在C语言中使用指针求最大值和最小值,可以通过遍历数组的方式进行比较。首先,需要定义一个指向数组的指针,并将其指向数组的第一个元素。然后,使用指针来遍历数组,并与当前的最大值和最小值进行比较更新。下面是一个示例代码:
```c
#include <stdio.h>
void findMinMax(int* arr, int size, int* min, int* max) {
*min = *max = arr[0]; // 初始化最小值和最大值为数组的第一个元素
for (int i = 1; i < size; i++) {
if (arr[i] < *min) {
*min = arr[i]; // 更新最小值
}
if (arr[i] > *max) {
*max = arr[i]; // 更新最大值
}
}
}
int main() {
int arr[] = {10, 5, 8, 3, 15, 20};
int size = sizeof(arr) / sizeof(arr[0]);
int minValue, maxValue;
findMinMax(arr, size, &minValue, &maxValue);
printf("最小值:%d\n", minValue);
printf("最大值:%d\n", maxValue);
return 0;
}
```
输出结果为:
```
最小值:3
最大值:20
```
用指针交换最大值最小值
好的,我可以回答这个问题。使用指针交换最大值和最小值的方法如下:
```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` 函数交换它们的值。
希望这个回答能够帮助到你!