Hik021 2021-07-24 17:36 采纳率: 77.8%
浏览 31
已结题

为什么qsrot函数执行后,a1[0]的id--10000011后带有一个U?

这是函数执行前:

img

这是函数执行后:

img

问题:

为什么qsrot函数执行后,a1[0]的id--10000011后带有一个U?a1[0]中的cai变成了
-84215这类乱码?

原码:

img

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;
}
  • 写回答

2条回答 默认 最新

  • Soda Wang 2021-07-24 17:52
    关注

    这么说可能是qsort的原因,把sizeof(int)改成sizeof(*a)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月2日
  • 已采纳回答 7月25日
  • 创建了问题 7月24日

悬赏问题

  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作