1205_Martian Addition

#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"  ) ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值