一组数据中最大值和次大值相等怎么列代码输出最大值和次大值

输出一组数中的最大值和次大值,但是当最大值和次大值相等时,次大值输出错误
#include

int main()
{
    int max1,max2, i, a, t;
    scanf_s("%d", &t);
    for (i = 0; i < t; i++)
    {
        int b[10];
        for (i = 0; i < t; i++)
        {
            scanf_s("%d", &a);
            b[i] = a;
        }
        max1 = b[0];
        for (i = 1; i < t; i++)
        {

            if (b[i] > max1)
            {
                max1 = b[i];
            }
        }
        for (i = 0; i < t; i++)
        {

            if (b[i] != max1)
            {
                max2 = b[i];
            }
            for (i = 0; i < t; i++)
            {
                if (b[i] < max1 && b[i] >= max2)
                {
                    max2 = b[i];
                }
            }
        }
    }
    printf("%d %d\n",max1, max2);


return 0;

}

输入:4 -5 -12 35 35时
输出值为:35 -5

注意两个地方
1,计算次大值考虑最大值一样的情况
2,保存最大值的下标

{
        int max1, max2=0, i, a, t,cnt=0;
        scanf_s("%d", &t);
        for (i = 0; i < t; i++)
        {
            int b[10];
            for (i = 0; i < t; i++)
            {
                scanf_s("%d", &a);
                b[i] = a;
            }
            max1 = b[0];
            for (i = 1; i < t; i++)
            {

                if (b[i] > max1)
                {
                    max1 = b[i];
                    cnt = i;
                }
            }
            for (i = 0; i < t; i++)
            {

                if (b[i] != max1)
                {
                    max2 = b[i];
                }
                for (i = 0; i < t; i++)
                {
                    if (b[i] <= max1 && b[i] >= max2)
                    {
                        if (i != cnt)
                        {
                            max2 = b[i];
                        }
                        
                    }
                }
            }
        }
        printf("%d %d\n", max1, max2);
    }