微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数加法

思想:用数组来代替基本类型 来实现大数加法

代码实现

// main.c
// 大数加法
//
// Created by devilthrone on 16/3/13.
// copyright (c) 2016年 devilthrone. All rights reserved.
//

#include <stdio.h>
void add(char a[],char b[],char d[])
 {
         char c[10001];
     int lengthA = strlen(a);
     int lengthB =strlen(b);
     int len = lengthA>lengthB?lengthA:lengthB;
     len++;
     int i ;
     c[0] = '\0';
     for (i=1; i<=len; i++) {
         c[i]='0';
     }
     //将A和B中的元素逆序输入C中并相加
     //0对应ASCII码 48 9对应ASCII码57
     for(i = 1 ; i <= lengthA ; i++)
         c[i]+=a[lengthA-i] - 48;
     for(i = 1; i <= lengthB ;i++)
         c[i]+=b[lengthB-i] - 48;
     //某一位上数字大于9 则进位
     for( i = 0 ; i<=len ; i++){
         if(c[i]>57){
             c[i]-=10;
             c[i+1]++;
         }
     }
     //剔除首部的0
     for(i = len;i>1;i--)
         if(c[i]==48)len--;
         else
             break;
     for(i = 0 ; i <= len;i++)
         d[i] = c[len-i];
 }
int main(int argc,const char * argv[]) {
    // insert code here...
    char a1[] ="1234567811";
    char a2[] ="2345678901";
    char d[]={0};
    add(a1,a2,d);
    printf("%s",d);

    return 0;
}

输出结果

3580246712

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐