大数的加法函数--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
posted @ 2016-12-26 21:36  半臻  阅读(3159)  评论(0编辑  收藏  举报