C语言取出一个长整型数中的偶数并构成一个新数案例讲解

 思路分析

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

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值