#include<stdio.h>
#include<string.h>
//gets() , 按回车可以什么也不输入, scanf("%s") ,不可以,要过滤回车*
//字符比较 如:num[ 1 ][ k ] - '0' ‘0’千万别多加空格 *
char num[2][120] ;
long result [120] ;
long n0 , n1 , k ,len ;
char table [ 30] ={"0123456789abcdefghij"} ;
int main()
{
long i , j ;
memset( num , '/0' , sizeof( num ) ) ;
memset( result , 0 , sizeof( result)) ;
while(gets( num[0] ) && strcmp( num[0] , ""))
{
gets( num[ 1 ] ) ;
n0 =strlen( num[ 0 ]) -1 ;
n1 =strlen( num[ 1 ]) -1 ;
if( n0 > n1 )
len = n0 ;
else
len = n1 ;
//process
i = 119 ;
for( j = n0 , k = n1 ; i&&( k>=0 || j>=0 ) ; k-- ,j-- , i--)
{
if( num[ 0 ][ j ] >= '0' && num[ 0 ][ j ] <= '9')
result[ i ] += num[ 0 ][ j ] - '0';
else if( num[ 0 ][ j ] >= 'a' && num[ 0 ][ j ] <= 'j')
result[ i ] += num[ 0 ][ j ] - 'a' + 10 ;
if( num[ 1 ][ k ] >='0' && num[ 1 ][ k ] <= '9')
result[ i ] += num[ 1 ][ k ] - '0';
else if( num[ 1 ][ k ] >= 'a' && num[ 1 ][ k ] <= 'j')
result[ i ] += num[ 1 ][ k ] - 'a' + 10 ;
if( result[ i ] > 19 )
{
result[ i - 1 ] += result[ i ] / 20 ;
result[ i ] = result[ i ] % 20 ;
}
}
//output
//i = 0;
//while( !result[ i ] ) i++ ;
/*for( i++ ; i<=119 ; i++ )
if( result[ i ] >=10 )
printf("%c" ,( result[ i ] - 10 + 'a') ) ;
else
printf( "%ld" , result[ i ] ) ;
printf("/n" ) ;
*/
for( ; i<119 ; i++ )
if( result[ i ])
break;
for( i; i<= 119 ; i++ )
printf("%c" , table[ result[ i ] ] ) ;
printf("/n") ;
//clear
memset( num , '/0' , sizeof( num ) ) ;
memset( result ,0 , sizeof( result)) ;
}
return 0 ;
}
---------------------------------------------------------------------------------------------------------------------------------------------
跟阿牛的比,代码果然很烂 !更可恨的是原来输出是这样的, 原来是错的,输出一个是数字一个是字符,虽然看起来一样,其实不一样。调死都不知道啊 !火
for( i++ ; i<=119 ; i++ )
if( result[ i ] >=10 )
printf("%c" ,( result[ i ] - 10 + 'a') ) ;
else
printf( "%ld" , result[ i ] ) ;
printf("/n" ) ;