#include<stdio.h> #include<string.h> #include<stdlib.h> //两个大数相加 char* add(char *s1,char *s2,char *c) { char *s=c; int i=strlen(s1)-1,j=strlen(s2)-1,k=0; int flag=0; int sum; for(;i>=0&&j>=0;i--,j--,k++) { sum=(s1[i]-'0')+(s2[j]-'0')+flag; (flag=sum>9)?(c[k]=sum%10+'0'):(c[k]=sum+'0'); } for(;i>=0;i--,k++) { sum=(s1[i]-'0')+flag; (flag=sum>9)?(c[k]=sum%10+'0'):(c[k]=sum+'0'); } for(;j>=0;j--,k++) { sum=(s2[j]-'0')+flag; (flag=sum>9)?(c[k]=sum%10+'0'):(c[k]=sum+'0'); } if(flag) c[k++]='1'; c[k]=0; strrev(s); return s; } void main() { char *s1="66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666"; char *s2="545986525889653998568835585599721202580552058888505568798314255555000555878943698741230254612887896124674758"; char sum[1000]; add(s1,s2,sum); puts(sum); }