c语言中实现数组几个数求次大值

 更新时间:2022年12月05日 15:45:42   作者:zwmonkey  
这篇文章主要介绍了c语言中实现数组几个数求次大值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

c语言数组几个数求次大值问题

#include<stdio.h>
int main()
{
    int a[] = { 7, 4, 9, 9, 6 };
    int len = sizeof(a) / sizeof(int);//求数组元素个数
    int max_subscript = 0;//设置最大值下标为0,为数组第一个数
    int second_subscript = 1;//设置次大值下标为1,为数组第二个数
    
    while (1)
    {
    
        for (int i = 0; i < len;i++)//从下标1(即第二个元素开始遍历)开始遍历
        {
            if (max_subscript == i)
            {
                continue;//跳过原来最大值的下标,直接开始i+1的循环
            }
            
            if (a[i]>a[max_subscript])//遍历的值a[i]比最大值都大那么此时的最大值为a[i],次大值为原来的最大值即a[max_subscript]
            {            
                second_subscript = max_subscript;//先赋值次大值为原来的最大值
                max_subscript = i;//赋值现在的最大值为a[i]
            }
            else
            {
                /*即a[i]小于最大值最大值得情况,那么就有两种情况:
                 1.a[i]大于次大值,那么
                        此时最大值还是原来的最大值a[max_subscript],次大值a[second_subscript]变为a[i]
                2.a[i]小于次大值,那么 原来的最大值 和次大值都不改变
                */
                    if (a[i] > a[second_subscript])
                    {
                        second_subscript = i;
                    }
            }
 
        }
        if (a[max_subscript] != a[second_subscript])
        {
            
            break;  //最大值和次大值不相等就跳出循环,
        }
        a[second_subscript] = 0;//相等就把次大值得值重置为0
    }
    printf("最大值a[max_subscript]=%d,次大值a[second_subscript]=%d\n", a[max_subscript], a[second_subscript]);
    printf("最大值下标max_subscript=%d,次大值下标second_subscript=%d\n", max_subscript, second_subscript);
    getchar();
    return 0;
}

c语言输出数组中最大值和次大值

本题主要的得分点在怎么求数组中的最大值和次大值,方法有很多,最常见的就是对数组进行排序,可以很轻松得到最大值和次大值。本题采用另外一个思路,第一次先在数组中找到最大值,第二次查找剩下的最大值(排除掉最大值,不是删除)

另外比较困扰的一点就是怎么直接从带空格的输入中直接得到整型数字,而不是像本题一样先当字符串去接收,然后从字符串中转数字保存到另外的一个整型数组中

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <ctype.h>
 
int main()
{
    // please write your code here
    char oriInput[200] = {0};
    int inputInt[100] = {0};
    fgets(oriInput,200,stdin);
    int len = strlen(oriInput);
    int i=0,k=0;
    int fimax=0,semax=0;
    char *pStart = oriInput;
    for(i=0; i<len; i++)
    {
        if(oriInput[i] == ' ')
        {
            oriInput[i] = '\0';
            inputInt[k++] = atoi(pStart);
            pStart = &oriInput[i+1];
        }
    }
    inputInt[k] = atoi(pStart);
    for(i=0; i<=k; i++)
    {
        if(fimax < inputInt[i])
            fimax = inputInt[i];
    }
    for(i=0; i<=k; i++)
    {
        if(semax < inputInt[i] && inputInt[i] != fimax)
            semax = inputInt[i];
    }
    if(fimax == semax)
        semax = 0;
    printf("%d %d",fimax,semax);
    return 0;
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 实现Dijkstra算法最短路径问题详解

    实现Dijkstra算法最短路径问题详解

    这篇文章主要介绍了实现Dijkstra算法最短路径问题详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Opencv实现对象提取与测量

    Opencv实现对象提取与测量

    这篇文章主要为大家详细介绍了基于Opencv实现对象提取与测量,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • C++项目基于HuffmanTree实现文件的压缩与解压缩功能

    C++项目基于HuffmanTree实现文件的压缩与解压缩功能

    这篇文章主要介绍了C++项目基于HuffmanTree实现文件的压缩与解压缩功能,本文给大家提到文件压缩的概念介绍及压缩方法,通过示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • __stdcall 和 __cdecl 的区别浅析

    __stdcall 和 __cdecl 的区别浅析

    __stdcall 和 __cdecl 的区别浅析,需要的朋友可以参考一下
    2013-03-03
  • C/C++ - 从代码到可执行程序的过程详解

    C/C++ - 从代码到可执行程序的过程详解

    这篇文章主要介绍了C/C++ - 从代码到可执行程序的过程,主要有预编译和编译,汇编链接,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • 基于C++和MFC开发象棋程序

    基于C++和MFC开发象棋程序

    这篇文章主要为大家详细介绍了基于C++和MFC开发象棋程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • VS2022新建项目时没有ASP.NET Web应用程序(.NET Framework)

    VS2022新建项目时没有ASP.NET Web应用程序(.NET Framework)

    本文主要介绍了VS2022新建项目时没有ASP.NET Web应用程序的解决,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-10-10
  • C++之文件输入/输出流类解读

    C++之文件输入/输出流类解读

    这篇文章主要介绍了C++之文件输入/输出流类,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C++语言pow函数的具体使用

    C++语言pow函数的具体使用

    本文主要介绍了C++语言pow函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • C语言实现通讯管理系统设计

    C语言实现通讯管理系统设计

    这篇文章主要为大家详细介绍了C语言实现通讯管理系统设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论