思想:用数组来代替基本类型 来实现大数加法
代码实现
// 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 举报,一经查实,本站将立刻删除。