acm HDU 1084 报错为Runtime Error(ACCESS_VIOLATION)

acm HDU 1084 报错为Runtime Error(ACCESS_VIOLATION)
#include
#include
#include
#include
#define N 100+10
using namespace std;
struct student
{
int slove;
string time;
int idx;
int score;
};
struct student a[N];
bool cmp1(student a,student b)
{
if (a.slove = b.slove)
return a.slove > b.slove;
else
a.time < b.time;
}
bool cmp2(student a,student b)
{
return a.idx < b.idx;
}
int main()
{
int n,i,slovenum[6];
int p1 = 0,p2 = 0,p3 = 0,p4 = 0;
while (cin>> n&&n = -1)
{
memset(slovenum,0,sizeof(slovenum));
for (i = 0;i < n;i++)
{
cin >> a[i].slove >> a[i].time;
a[i].idx = i + 1;
slovenum[a[i].slove]++;
}
sort(a,a + n,cmp1);
for (i = 0;i
坤坤821225 1年前 已收到1个回答 举报

心里的鼠标 幼苗

共回答了19个问题采纳率:89.5% 举报

有几个隐蔽的小错误:
一是,没有写return
bool cmp1(student a,student b)
{
if (a.slove != b.slove)
return a.slove > b.slove;
else
a.time < b.time; <- 这里
}
二是,题目中只说了负数,没说是-1结束

while (cin>> n&&n != -1) 改为 n >= 0
三是,pX没有初始化:
memset(slovenum, 0, sizeof(slovenum));
这里应把p1,p2,p3,p4也初始化为0.

1年前 追问

10

坤坤821225 举报

那请问这种报错的话一般是因为什么
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.307 s. - webmaster@yulucn.com