这个破题因为数组的边界问题花了我很长时间,也怪自己没有投入里面去
大数加法:
大数加法
1#include<stdio.h>
2#include<cstring>
3char ans[10005];
4char a[105];
5int max=0;
6void add(char *ans,char *a)
7{
8 int n=strlen(a),i,j,t,s; //a 反向
9 for(i=0,j=n-1;i<j;i++,j--)
10 {
11 t=a[i]; a[i]=a[j]; a[j]=t;
12 }
13 for(i=0,t=0;i<n;i++)
14 {
15 s=ans[i]-'0'+a[i]-'0'+t;
16 ans[i]=s%10+'0';
17 t=s/10;
18 }
19 while(t)
20 {
21 s=ans[i]-'0'+t;
22 ans[i]=s%10+'0';
23 t=s/10;
24 i++;
25 }
26 if(i>max) max=i;
27}
28int main()
29{
30 int n,i;
31 memset(ans,'0',sizeof(ans));
32 while(scanf("%s",a),strcmp(a,"0"))
33 {
34 add(ans,a);
35 }
36
37 n=strlen(ans);
38 for(i=max-1;i>=0;i--)
39 {
40 putchar(ans[i]);
41 }
42 putchar('\n');
43 scanf("%d",&n);
44 return 0;
45}