自己搓的代码一直提示WA不知是怎么回事,求解

如题,自己搓的代码一直提示WA不知是怎么回事,求解答!
题目如下
给定某次考试全班同学的成绩,结束标志为 −1 或 −2,表示路哥在本次考试中的排名(倒数第一/倒数第二),请你输出路哥的分数。
输入
若干整数非负的 int 范围内的整数,全班同学的成绩;
全班同学的人数 n 满足 3≤n≤1000;
最后以 −1 或 −2结尾,表示路哥的排名。
输出
一行,一个整数,表示路哥的分数。
输入样例1
100 99 50 60 -1
输出样例1
50
输入样例2
100 100 99 99 98 98 99 -2
输出样例2
98

#include 
int main()
{
    int min, max,decide;
    int n = 0;
    scanf("%d%d", &min,&max);
    while (scanf("%d", &decide) != EOF)
    {
        if (min=decide && decide>=0)
        {
            max = decide;
        }
        else if (min >= decide&&decide>=0)
        {
            min = decide;
            n = n + 1;
        }
        else if (max < decide && decide>=0)
        {
            ; 
        }
        else if (decide<0)
        {
            if (decide == -1)
                printf("%d", min);
            else
                if (n==1)
                {
                    printf("%d", max);
                }
                else
                {
                    printf("%d", min);
                }
                    return 0;
        }
        else
        {
            ;
        }
    }   
}

这么写,供参考:

#include <stdio.h>
#define N 1001
int main()
{
    int a[N], n = 0, score, i, j, t;
    while (scanf("%d", &score) == 1 && score != -1 && score != -2) 
        a[n++] = score;
    if (n < 3 || n > 1000)  return 1;
    for (i = n - 1; i > 0; i--) {
        for (j = 0; j < i; j++) {
            if (a[j] < a[j + 1])
                t = a[j], a[j] = a[j + 1], a[j + 1] = t;
        }
    }
    printf("%d", a[n + score]);
    return 0;
}

“Devil组”引证GPT后的撰写:
你的代码缺少一个循环,需要一直读取输入直到读到 -1 或 -2 结束,你可以使用一个 while 循环并检查输入的值是否等于 -1 或 -2。此外,你需要在循环结束时输出路哥的分数。以下是修改后的代码:


#include <stdio.h>

int main()
{
    int min, max, decide;
    int n = 0;
    scanf("%d%d", &min, &max);

    while (1) // 使用一个无限循环
    {
        scanf("%d", &decide);
        if (decide == -1 || decide == -2) // 如果读到 -1 或 -2 结束循环
        {
            break;
        }

        if (min < decide && max >= decide && decide >= 0)
        {
            max = decide;
        }
        else if (min >= decide && decide >= 0)
        {
            min = decide;
            n = n + 1;
        }
        else if (max < decide && decide >= 0)
        {
            ;
        }
        else
        {
            ;
        }
    }

    if (decide == -1) // 根据输入的值输出路哥的分数
    {
        printf("%d", min);
    }
    else if (decide == -2)
    {
        if (n == 1)
        {
            printf("%d", max);
        }
        else
        {
            printf("%d", min);
        }
    }

    return 0;
}

img

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^