大数的加法函数--c语言

浏览网站http://paste.ubuntu.com/23687758/

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

char * largeAdd(char a[],char b[]){

/*

//传进来两个个字符串,返回结果为字符串 错误字符返回NULL

大位数的加法函数 ,位数不能超过1000

要加头文件<string.h>

*/

int a_num[1000]={0},b_num[1000]={0};

int a_len,b_len,i,j,len,sum;

char result[1001];

a_len=strlen(a);

b_len=strlen(b);

len=a_len>b_len?a_len:b_len;//返回较大的值

for(i=0;i<a_len;i++){

if(a[i]<'0'||a[i]>'9') return NULL;

a_num[a_len-i-1]=a[i]-'0';

}

for(i=0;i<b_len;i++){

if(b[i]<'0'||b[i]>'9') return NULL;

b_num[b_len-i-1]=b[i]-'0';

}

for(i=0;i<len;i++){

sum=a_num[i]+b_num[i];

a_num[i]=sum%10;

a_num[i+1]=a_num[i+1]+sum/10;

}

if(a_num[len]>0){

for(i=len;i>=0;i--){

result[len-i]=a_num[i]+'0';

}

result[len+1]='\0';

}else{

for(i=len-1;i>=0;i--){

result[len-i-1]=a_num[i]+'0';

}

result[len]='\0';

}

return result;

}

int main(){

char a[1000],b[1000];

char *result;

gets(a);

gets(b);

result=largeAdd(a,b);

printf("%s",result);

return 0;

}

//编程爱好者 QQ群 248351598