如题,自己搓的代码一直提示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;
}