这是函数执行前:
这是函数执行后:
问题:
为什么qsrot函数执行后,a1[0]的id--10000011后带有一个U?a1[0]中的cai变成了
-84215这类乱码?
原码:
int cmp1(const void* a, const void* b)
{
Person* a1 = (Person )a;
Person a2 = (Person *)b;
if (a1->all != a2->all) return (a1->all > a2->all ? 1 : -1);
else if (a1->de != a2->de) return (a1->de > a2->de ? 1 : -1);
else if (strcmp(a1->id, a2->id) != 0) return -(strcmp(a1->id, a2->id));
}
int num,L,H;
cin >> num;
getchar();
cin >> L;
getchar();
cin >> H;
Person<int>* a,*a1,*a2,*a3,*a4;
int i1, i2, i3, i4;
i1 = i2 = i3 = i4 = 0;
a = new Person<int>[num];
a1 = new Person<int>[num];
a2 = new Person<int>[num];
a3 = new Person<int>[num];
a4 = new Person<int>[num];
for (int i = 0; i < num; i++)
{
cin>>a[i].id;
getchar();
cin >> a[i].de;
getchar();
cin >> a[i].cai;
if (a[i].cai >= L && a[i].de >= L)
{
if (a[i].de >= H && a[i].cai >= H)
{
a1[i1] = a[i];
i1++;
}
else if (a[i].de >= H && a[i].cai < H)
{
a2[i2] = a[i];
i2++;
}
else if (a[i].de < H && a[i].cai < H&&a[i].de>a[i].cai)
{
a3[i3] = a[i];
i3++;
}
else
{
a2[i4] = a[i];
i4++;
}
}
}
qsort(a1, i1, sizeof(int), cmp1);
qsort(a2, i2, sizeof(int), cmp1);
qsort(a3, i3, sizeof(int), cmp1);
qsort(a4, i4, sizeof(int), cmp1);
cout << i1 + i2 + i3 + i4<<endl;
for (int i = 0; i < i1; i++)
{
cout << a1[i].id << " " << a1[i].de << " " << a1[i].cai << endl;
}
for (int i = 0; i < i2; i++)
{
cout << a2[i].id << " " << a2[i].de << " " << a2[i].cai << endl;
}
for (int i = 0; i < i3; i++)
{
cout << a3[i].id << " " << a3[i].de << " " << a3[i].cai << endl;
}