答案好简陋啊,哎,
回复 做我_女朋友:我给你讲最多也就只能给你讲懂一次,保证你下次遇到了一样是不懂的,遇到这种看不懂的最好的办法不是问,是自己代入一个数去算,不要怕麻烦:
unsigned long fun(unsigned long n)
{ unsigned long x=0, s, i; int t;
s=n;
/**********found**********/
i=1//这个i是用来控制新的数的位数的,最开始肯定是从个位开始放,所以应该1,然后是10位,所以后面红色的部分就是i=i*10;
/**********found**********/
while(s>0)//因为这个s最开始是n的值,而在循环体最后有个s=s/10我们就可以知道s是将每次判断完了奇数和偶数的位去掉,比如说12,经过除以10就变成了1,这样下一次的个位就是应该判断的位了,而当s等于零就代表所有位都判断完了,s等于零正好不满足条件逻辑值也为假也可以跳出循环了
{ t=s%10;
if(t%2==0){
/**********found**********/
x=x+t*i; i=i*10;
}
s=s/10;
}