doodleyy 2020-08-04 15:51 采纳率: 0%
浏览 590
已结题

字母与数字相结合的字符串如何排序?

各位老师,现在开发遇到了一个排序问题:
有一串字母与数字相结合的编号,需要给它们进行排序。
排序的规则为先按字母顺序排列,再按数字大小排列。
举个例子:
zk1 zk2 zk3 dk1 dt1 dk2
排序后为
dk1 dk2 dt1 zk1 zk2 zk3

提前感谢!

  • 写回答

4条回答 默认 最新

  • threenewbee 2020-08-04 16:10
    关注
    void sep(char * s, char * ch, int * num)
    {
    *num = 0;
    
    for (int i = 0; s[i]; i++)
    {
    if ((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z'))
    {
    *ch = s[i];
    ch++;
    }
    else if (s[i] >= '0' && s[i] <= '9')
    {
    *num = *num * 10;
    *num = *num + s[i] - '0';
    }
    }
    * ch = '\0';
    }
    void cmp(void * a, void * b)
    {
    char *aa = *((char **)a);
    char *bb = *((char **)b);
    int ai;
    int bi;
    char as[100];
    char bs[100];
    sep(aa, as, &ai);
    sep(bb, bs, &bi);
    if (strcmp(as, bs) == 0)
    return ai - bi;
    else
    return strcmp(as, bs);
    }
    主程序
    char * arr[] = {"zk1","zk2","zk3","dk1","dj2", "dk3"};
    qsort(arr, 6, sizeof(char *), cmp);
    
    评论

报告相同问题?

悬赏问题

  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 opencv 无法读取视频