C 语言问题
怎么将一个int 整数里面的数字拆开,然后根据奇偶数排序呢
比如231840 让偶数在前面要输出成 284031
考虑过用 两个for循环依次往下换位
C语言 整数分离并排序
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
- 技术专家团-小桥流水 2022-02-13 08:55关注
逐位分离后,分别存入两个数组,再输出就可以了。
如果分离后不再排序,代码如下:#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; }
如果分离后,奇数偶数分别按照从大到小的顺序排序,代码如下:
#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥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显示?(语言-开发语言)