浏览网站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
原文:http://www.cnblogs.com/banzhen/p/6224040.html