#include
struct student{
int c, m, e;
int num,sum;
}a[1005],b[1005];
int main()
{
int n;
while (scanf_s("%d", &n) == 1)
{
for (int i = 0; i < n; i++)
{
scanf_s("%d %d %d %d %d", &a[i].num, &a[i].c, &a[i].m, &a[i].e);
a[i].sum = a[i].c + a[i].m + a[i].e;
}
for (int i = 0; i < n; i++)
{
for(int j=i;j0, y = n-1;
while (a[x].sum == a[x + 1].sum)
{
x++;
}
for (int i = 0; i <= x; i++)
{
for (int j = i; j <= x; j++)
{
if (a[i].num < a[j].num)
{
b[i] = a[i];
a[i] = a[j];
a[j] = b[i];
}
}
}
printf("BEST\n");
for (int i = 0; i <= x; i++)
{
printf("%d %d %d %d %d\n", a[i].num, a[i].sum, a[i].c, a[i].m, a[i].e);
}
while (a[y].sum == a[y -1].sum)
{
y--;
}
for (int i = y; i "WORST\n");
for (int i = y; i "%d %d %d %d %d\n", a[i].num, a[i].sum, a[i].c, a[i].m, a[i].e);
}
}
}
一直显示访问冲突如何修改?
代码的问题是您b在排序循环中使用了未初始化的变量。这可能会导致访问冲突错误,因为您正试图读取或写入尚未分配或初始化的内存。
要解决此问题,您可以简单地删除b数组并使用临时变量来存储要交换的元素。