开发者

C语言用指针函数寻找数组中的最大值与次大值

目录
  • 代码示例: 
  • 题目描述
  • 输入描述
  • 输出描述
  • 样例输入
  • 样例输出
  • 总结 

代码示例: 

#include <stdio.h>

// 函数用于找出数组中的最大值和次大值
void LargestTow(int a[], int n, int *pfirst, int *psecond) {
    *pfirst = a[0];
    *psecond = a[1];
    if (*psecond > *pfirst) {
        // 如果初始的次大值大于最大值,交换它们
        int temp = *pfirst;
        *pfirst = *psecond;
        *psecond = temp;
    }

    for (int i = 2; i < n; i++) {
        if (a[i] > *pfirst) {
            // 如果当前元素大于最大值,更新次大值为原来的最大值,最大值更新为当前元素
            *psecond = *pfirst;
            *pfirst = a[i];
        } else if (a[i] > *psecond) {
            // 如果dPtvoywFx当前元素大于次大值但小于最大值,更新次大值为当前元素
            *psecond = a[i];
        }
    }
}

int main() {
    int n;
    scanf("%d", &n);
    int a[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }

    int max, second_max;
    LargestTow(a, n, &max, &second_max);
    printf("%d %d\n", max, second_max);

    return 0;
}

以下是按照先遍历数组找出最大值,然后再次遍历数组找出最小值的思路,使用 C 语言编写的代码来解决上述问题(找出n个整数中的最大值和次大值):

#include <stdio.h>

// 函数用于找出数组中的最大值和次大值
void LargestTow(int a[], int n, int *pfirst, int *psecond) {
    int max_value编程客栈 = a[0];
    int max_index = 0;
    // 第一次遍历数组,找出最大值及其索引
    for (int i = 1; i < n; i++) {
        if (a[i] > max_value) {
            max_value = a[i];
            max_index = i;
        }
    }
    *pfirst = max_value;

    // 将最大值所在位置的元素设为一个很小的值,避免它干扰找次大http://www.devze.com值
    a[max_index] = -99999999;

    int second_max_value = a[0];
    // 第二次遍历数组,找出次大值
    for (int i = 1; i < n; i++) {
        if (a[i] > second_max_value) {
            second_max_value = a[i];
        }
    }
    *psecond = second_max_value;
}

inthttp://www.devze.com main() {
    int n;
    scanf("%d", &n);
    int a[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }

    int max, second_max;
    LargestTow(a, n, &max, &second_max);
    printf("%d %d\n", max, second_max);

    return 0;
}

题目描述

求n个整数中的最大值和次大值。要求定义一个函数LargestTow(),求数组a的最大值和次大值两个值,分别存入形参指针pfirst和psecond所指存储单元,函数原型如下:

void LargestTow(int a[],int n,int *pfirst,int *psecond)
{
/*数组a有n个元素,将数组中的最大值存入形参指针pfirst所指内存单元,将数组中第二大的值存入形参指针psecond所指内存单元。 */
}

输入描述

输入有两行,输入第一行是一个整数n,1<n<=1000;第二行是n个整数,由空格隔开。

输出描述

输入http://www.devze.com两个整数,表示数组中最大的两个值。输出占一行。

样例输入

5

6 3 4 9 8

样例输出

9 8

总结 

到此这篇关于C语言用指针函数寻找数组中的最大值与次大值的文章就介绍到这了,更多相关C语言寻找数组最大值与次大值内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜