zoukankan      html  css  js  c++  java
  • 任意长度正整数相加

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    
    char* addBigInt(char* num1,char* num2)
    {
        int c=0;//保存进位
        int i=strlen(num1)-1;
        int j=strlen(num2)-1;
        int maxLength=(strlen(num1))>=(strlen(num2))?(strlen(num1)+1):(strlen(num2)+1);    
         char *rst=(char*)malloc(maxLength+1);
         if(rst==NULL)
         {
             printf("malloc error!
    ");
             exit(1);
         }
         
         rst[maxLength]='';
         int k=maxLength-1;
             printf("k=%d
    ",k);
         while((i>=0)&&(j>=0))
         {
             rst[k]=((num1[i]-'0')+(num2[j]-'0')+c)%10+'0';
             c=((num1[i]-'0')+(num2[j]-'0')+c)/10;
             i--;j--;k--;
             printf("rst[%d]=%s
    ",k,rst);
         }
         
         while(i>=0)
         {
             rst[k]=((num1[i]-'0')+c)%10+'0';
             c=((num1[i]-'0')+c)/10;
             i--;k--;
         }
         
         while(j>=0)
         {
             rst[k]=((num2[j]-'0')+c)%10+'0';
             c=((num2[j]-'0')+c)/10;
             j--;k--;
         }
         
         rst[0]=c+'0';
         
         if(rst[0]!='0')
         {
             return rst;
         }else{
             return rst+1;//指针右移一单位 
         }
    }
         
         int main()
         {
             char num1[]="123456789323";
             char num2[]="45671254563123";
             char *result=NULL;
             
             result=addBigInt(num1,num2);
             printf("%s+%s=%s
    ",num1,num2,result);
             
             return 0;
         }
    不犯罪盗版→提高自我技术
  • 相关阅读:
    用价值链分析软件开发及杂感
    《恰如其分的软件架构》笔记摘要
    观察者模式
    Js中Date对象
    Js中Currying的应用
    read命令
    模板方法模式
    两两交换链表中的节点
    享元模式
    Js中Array对象
  • 原文地址:https://www.cnblogs.com/zoudajia/p/6272952.html
Copyright © 2011-2022 走看看