C语言指针求数组最小值
时间: 2023-07-20 16:20:24 浏览: 51
可以使用指针来求解数组中的最小值,代码如下:
```c
#include <stdio.h>
int main() {
int arr[] = { 3, 5, 1, 7, 2 };
int n = sizeof(arr) / sizeof(int);
int *p = arr;
int min = *p;
for (int i = 1; i < n; i++) {
if (*(p + i) < min) {
min = *(p + i);
}
}
printf("The minimum value is %d", min);
return 0;
}
```
在上面的代码中,我们首先定义了一个整型数组 `arr`,并且使用了 `sizeof` 运算符求出了数组的长度。然后我们定义了一个指向数组首元素的指针 `p`,并且初始化了最小值 `min` 为 `*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语言求数组区段的最大最小值
以下是用C语言实现求解数组区段最大最小值的示例代码:
```c
#include <stdio.h>
void findMinMax(int arr[], int n, int start, int end, int *min, int *max) {
*min = arr[start];
*max = arr[start];
for (int i = start + 1; i <= end; i++) {
if (arr[i] < *min) {
*min = arr[i];
} else if (arr[i] > *max) {
*max = arr[i];
}
}
}
int main() {
int arr[] = {7, 3, 9, 5, 1, 8, 4};
int n = sizeof(arr) / sizeof(arr[0]);
int start = 1, end = 5;
int min, max;
findMinMax(arr, n, start, end, &min, &max);
printf("The minimum value in the array segment is %d\n", min);
printf("The maximum value in the array segment is %d\n", max);
return 0;
}
```
在上述代码中,我们使用 `findMinMax` 函数来查找数组 `arr` 中指定区段 `[start, end]` 的最小值和最大值。该函数使用指针来返回最小值和最大值,以避免返回多个值的问题。
在 `main` 函数中,我们定义了一个数组 `arr`,以及数组的长度 `n` 和要查找的区段 `[start, end]`。使用 `findMinMax` 函数来查找数组区段的最小值和最大值,并将其存储在 `min` 和 `max` 变量中。最后,我们将结果打印到控制台上。