思路分析
1 本题的难点在于:如何把一个长整型数中每一位上的数依次取出。
可以使用while循环对整数中的每一位进行取模操作,取出最后一位数,然后把这个数保存到一个数组中,并用除法去掉最后一位数,循环遍历直到一个整数中的每一位都被取出并依次保存到一个数组中。
2 使用for循环遍历保存在数组中的所有数,依次对2取模判断是不是偶数,然后留下偶数。
3 把留下的偶数按从小到大排序,然后组成一个新数。
例子;
一个长整型数:5789621
他每一位上的数依次为5,7,8,9,6,2,1;
保留偶数:8,6,2;
把保留的偶数按从小到大排序:2,6,8;
组成一个新数:862;
案例全部代码如下
#include <stdio.h>
void main(){
int i,j=0,a=0,b,temp,sum=0,d=1;
int arr[10];
scanf("%d",&i);
while(i!=0){
a=i%10;
if(a%2==0){
arr[j]=a;
j++;
}
i=i/10;
}//取出偶数,并依次保存到一个数组中
for(i=0;i<j-1;i++){
for(b=0;b<j-1-i;b++){
if(arr[b]>arr[b+1]){
temp=arr[b];
arr[b]=arr[b+1];
arr[b+1]=temp;
}
}
}//取出的偶数按从小到大排序,使用冒泡排序法
for(i=0;i<j;i++){
sum+=arr[i]*d;
d=d*10;
}//把偶数组合成一个新数
printf("%d",sum);//打印输出组合成的新数
}
代码运行结果如下
说明:有小伙伴在评论区留言说不理解把偶数构成一个新数的代码原理,所以今天特意写了一个博客就是分析这个原理,解释为什么要这样写。
博客链接:https://blog.csdn.net/weixin_63279307/article/details/129799395?spm=1001.2014.3001.5502
版权声明:本文为weixin_63279307原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。