求c语峰值,找出里面最大峰值

c语言中,输入任意一组数,找出里面所有最大峰值。有帮忙解解吗

你可以使用C语言编写一个函数来找出一组数中的所有最大峰值。下面是一个示例代码:

#include <stdio.h>

void findPeak(int arr[], int size) {
    if (size < 3) {
        printf("输入的数组长度必须大于等于3\n");
        return;
    }

    // 判断第一个元素是否为峰值
    if (arr[0] >= arr[1]) {
        printf("%d ", arr[0]);
    }

    // 查找中间元素是否为峰值
    for (int i = 1; i < size - 1; i++) {
        if (arr[i] >= arr[i-1] && arr[i] >= arr[i+1]) {
            printf("%d ", arr[i]);
        }
    }

    // 判断最后一个元素是否为峰值
    if (arr[size-1] >= arr[size-2]) {
        printf("%d ", arr[size-1]);
    }
}

int main() {
    int arr[] = {1, 3, 2, 4, 1, 5, 6};
    int size = sizeof(arr) / sizeof(arr[0]);

    printf("数组中的最大峰值为: ");
    findPeak(arr, size);

    return 0;
}

这个示例代码使用了一个简单的算法来找出最大峰值。它首先判断第一个元素和最后一个元素是否为峰值,然后遍历中间的元素,通过比较当前元素和相邻元素的大小来确定是否为峰值。如果一个元素既大于或等于其前一个元素,又大于或等于其后一个元素,则被视为峰值。

在上面的示例中,输入的一组数字是{1, 3, 2, 4, 1, 5, 6},输出结果为:6 4 5。

你可以根据需要修改输入数组和调用函数的方式来适应不同的场景。这只是一个简单的实现示例,你可以根据具体需求进行进一步扩展和优化。

可采纳


#include <stdio.h>
#include <stdlib.h>
int main() {

    int n, i, j, max_peak = 0;

    printf("请输入数组长度:");

    scanf("%d", &n);

    vector<int>arr(n);

    printf("请输入数组元素:");

    for (i = 0; i < n; i++) 
        scanf("%d", &arr[i]);

    for (i = 0; i < n-1; i++) 
    {
        for (j = i + 1; j < n; j++) 
                max_peak = max(max_peak,abs(arr[i] - arr[j]));

    }

    printf("最大峰值为:%d\n", max_peak);

    return 0;

}


供参考:

#include <stdio.h>
#include <limits.h>
int main()
{
    int n, max = INT_MIN;
    while (scanf("%d", &n) == 1 && n != 0)  // 输入 n = 0 时,结束输入
        if (n > max) max = n;
    printf("max:%d", max);
    return 0;
}