数据(整数)筛选,前向和后向合并问题
前向(从左到右)合并
实例1:输入一个long int 数据,调用函数fun,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。
例如,从主函数输入一个整数:27638496,函数返回值为:26846。
/*取出偶数,按原来从高位到低位的顺序组成一个新的数*/
#include <stdio.h>
unsigned long fun(unsigned long n);
int main()
{
unsigned long a,b;
printf("Input a :");scanf("%ld",&a);
printf("Output a :%ld\n",a);
b = fun(a);
printf("Output b :%ld\n",b);
}
unsigned long fun(unsigned long n)
{
unsigned long i,j=1,s=0; //27638496->64862
while (n)
{
i = n%10;
if(i%2 == 0)
{
s = s + i*j;
j = j*10;
}
n = n/10;
}
return s;
}
后向(从右到左)合并
实例2:输入一个long int 数据,调用函数fun,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。
例如,输入一个整数:27638496,函数返回值为:64862。
/*取出偶数,按原来从高位到低位相反的顺序组成一个新的数*/
#include <stdio.h>
unsigned long fun(unsigned long n);
int main()
{
unsigned long a,b;
printf("Input a :");scanf("%ld",&a);
printf("Output a :%ld\n",a);
b = fun(a);
printf("Output b :%ld\n",b);
}
unsigned long fun(unsigned long n)
{
unsigned long i,s=0; //27638496->64862
while (n)
{
i = n%10;
if(i%2 == 0) s = s*10 + i;
n = n/10;
}
return s;
}