输入一组负数,求其中最小的两个数

循环遍历可以找出最小值,最小的两个怎么查找呢,有没有什么好方法

仍然是循环遍历,只是记录两个最小的就好了,找到比最小值小的,就替代最小值,然后跟第二小的比较,比第二小的,就替代第二小的。或者先跟第二小的比较也可以。参考如下:

#include <iostream>
using namespace std;
int main()
{
    int n,m=0;
    int min1 = 1,min2 = 1;//min1是最小值,min2是次小值
    int flag = 0;
    cout << "请输入一组数";
    while(1)
    {
        cin >> n;
        if(n < 0) //统计负数个数,不能<=0
        {
            m++;
            if(flag == 0)
            {
                min1 = n;
                flag = 1;

            }else if (flag ==1)
            {
                flag = 2;
                if(n < min1)
                {
                    min2 = min1;
                    min1 = n;

                }else
                    min2 = n;
            }
            else
            {
                if(n < min1) 
                {
                    min2 = min1;
                    min1 = n;
                }else if(n>min1 && n<min2)
                {
                    min2 = n;
                }
            }
        }else
            break;
    }
    cout << "这些数中负数的个数为:" << m<<endl;
    cout << "最小的两个数为:" << min1 << "," << min2 << endl;
    return 0;
}

最简单的方法,先排序,再查找

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632