阿心2 2021-11-30 21:51 采纳率: 66.7%
浏览 17

这段代码能否在您的环境运行?

img



#include <stdio.h>

int cmp_intup(void*b,void*a)
{
    return(int)*(int*)a-*(int*)b;
}


int cmp_intdown(void*a,void*b)
{
    return(int)*(int*)a-*(int*)b;
}

//  这里只是排序,这几个参数分别是  开始排序的位置,排几个,每一个元素占几个字节,升序函数还是降序函数
unsigned int Bubble_sort(\
    void*a,\
    const int num,\
    const int sz,int(*cmp)(void*,void*))// \  太长了,换多行显示
{
    int flag = 0;
    unsigned int swap_count = 0;
    for(int i = 0;i<num-1;i++)
    {
        flag = 0;
        for(int j = 0;j<num-1-i;j++)
        {
            if(cmp(a+j*sz,a+(j+1)*sz)<0)
            {
                char*ptra = (char*)(a+j*sz);
                char*ptrb = (char*)(a+(j+1)*sz);
                for(int k = 0;k<sz;k++)
                {
                    ptra[k] = (ptra[k])^(ptrb[k]);
                    ptrb[k] = (ptra[k])^(ptrb[k]);
                    ptra[k] = (ptra[k])^(ptrb[k]);
                    flag = 1;
                    swap_count++;
                }
            }
        }
        if(!flag)
        {
            break;
        }
    }
    return swap_count;
}
int main()
{
    int n,arr[100],i = 0,j = 0;
    int count = 0;
    scanf("%d",&n);
    // 录入n个数据
    for(i = 0;i<n;i++)
        scanf("%d",&arr[i]);
    //  冒泡排序升序
    Bubble_sort(arr,n,sizeof(arr[0]),cmp_intup);
    
    while(count<n)
    {
        //-5 -3 -1 0 1 2 3
        // 0  1  2 3 4 5 6
        // 找出大于零的数的下标
        if(arr[count]>0)
            break;
        count++;
    }
    // 冒泡排序,降序
    // 从大于零的位置到达结尾 倒过来,再排一遍
    Bubble_sort(arr+count,n-count,sizeof(arr[0]),cmp_intdown);
    
    //  最后输出打印
    for(j = 0;j<n;j++)
        printf("%d ",arr[j]);
    
    return 0;
}

请帮我测试一下,这段代码能否在您的机器上运行, 如果代码有错误,请指出

img


这段代码好像在电脑上,尤其是VS环境报错void* 未知大小

  • 写回答

1条回答 默认 最新

  • 南七灵 2021-11-30 21:57
    关注

    可以的

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 11月30日

悬赏问题

  • ¥15 神经网络模型一直不能上GPU
  • ¥15 苍穹外卖拦截器token为null
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响