功能:将长整型数中每一位上为偶数的数依次取出,构成一个新

     数放在t中。高位仍在高位,低位仍在低位。

例如:当s中的数为:87654时,t中的数为:864。

整体思路:   毋庸置疑,我们一般先从s的最低位数入手,但是一般当我们把它拿出来之后一般会将它放于第一位,所以有一步非常关键,那就是正确处理好算法关系。下面我会在代码中添加注释供大家理解,也请大家指正。

#include<stdio.h>
#include<string.h>
void fun(long s,long *t)
{
int d=0;//d的意思是记录原数的末尾数字,下面有体现
long sl=1;//使用sl的目的是将原来高位数字继续置于高位,低位数字置于低位
*t=0;//*t的作用尤为关键,
while(s>0)
{
d=s%10;//d用来记录s的低位余数(一次记录一个数字)
if(d%2==0)//判断是否为偶数
{
*t=d*sl+*t;//拿上面例子来说,d=4,*t=4
sl*=10;//此时的sl=10
}
s/=10;//原来的数字现变为8765,之后再去执行循环
}
}
int main()
{
long s,t;
scanf("%ld",&s);//这里往往出现在程序改错中,注意取地址以及s得类型
fun(s,&t);//调用函数,传s的值和t的地址
printf("%ld\n",t);
return 0;
}