Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        11天前关闭。
                                                                                            
                
        
编写一个递归函数evenDigits,该函数接受整数参数n,并以相同顺序返回仅包含n中偶数位的新整数。如果n不包含任何偶数,则返回0。

例如,evenDigits(8342116)的调用应返回8426,evenDigits(35179)的调用应返回0。

最佳答案

这是我的五分钱。

#include <stdio.h>

int evenDigits( int n )
{
    const int Base = 10;

    int digit = n % Base;

    int even = digit % 2 == 0;

    if ( !even ) digit = 0;

    return ( n /= Base ) == 0 ? digit
                              : ( even ? Base : 1 ) * evenDigits( n ) + digit;
}

int main(void)
{
    printf( "evenDigits( 8342116 ) = %d\n", evenDigits( 8342116 ) );
    printf( "evenDigits( -8342116 ) = %d\n", evenDigits( -8342116 ) );
    printf( "evenDigits( 35179 ) = %d\n", evenDigits( 35179 ) );
    printf( "evenDigits( -35179 ) = %d\n", evenDigits( -35179 ) );

    return 0;
}


程序输出为

evenDigits( 8342116 ) = 8426
evenDigits( -8342116 ) = -8426
evenDigits( 35179 ) = 0
evenDigits( -35179 ) = 0

07-24 17:55