weixin_45467244 2022-02-13 07:47 采纳率: 33.3%
浏览 140
已结题

C语言 整数分离并排序

C 语言问题
怎么将一个int 整数里面的数字拆开,然后根据奇偶数排序呢
比如231840 让偶数在前面要输出成 284031
考虑过用 两个for循环依次往下换位

  • 写回答

6条回答 默认 最新

  • 关注

    逐位分离后,分别存入两个数组,再输出就可以了。
    如果分离后不再排序,代码如下:

    img

    #include <stdio.h>
    
    
    int main()
    {
        int a[20],b[20],na=0,nb=0;
        int n,t,i;
        scanf("%d",&n);
        while(n)
        {
            t = n%10;
            if(t%2==0)
                a[na++]=t;
            else
                b[nb++]=t;
            n/=10;
        }
        
        //输出
        for (i=na-1;i>=0;i--)
            printf("%d",a[i]);
        for(i=nb-1;i>=0;i--)
            printf("%d",b[i]);
        
        return 0;
    }
    
    

    如果分离后,奇数偶数分别按照从大到小的顺序排序,代码如下:

    img

    #include <stdio.h>
    
    //冒泡排序,flag=0表示从小到大,flag=1表示从大到小
    void bubble_sort(int a[],int n,int flag)
    {
        int i,j,t;
        for (i=0;i<n-1;i++)
        {
            for (j=0;j<n-1-i;j++)
            {
                if(flag ==0 && a[j] > a[j+1])  //从小到大,升序
                {
                    t = a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                }else if (flag==1 && a[j]<a[j+1])
                {
                    t = a[j];
                    a[j]=a[j+1];
                    a[j+1]=t;
                }
            }
        }
    }
    
    int main()
    {
        int a[20],b[20],na=0,nb=0;
        int n,t,i;
        scanf("%d",&n);
        while(n)
        {
            t = n%10;
            if(t%2==0)
                a[na++]=t;
            else
                b[nb++]=t;
            n/=10;
        }
        bubble_sort(a,na,1);//偶数从大到小
        bubble_sort(b,nb,1);//奇数从大到小
        //输出
        for (i=0;i<na;i++)
            printf("%d",a[i]);
        for(i=0;i<nb;i++)
            printf("%d",b[i]);
        
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 2月23日
  • 已采纳回答 2月15日
  • 创建了问题 2月13日

悬赏问题

  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)