大数相加

这是超长数的加法,以后自己这种加法自己要记住!

就是把所有的数字都移到数组右侧,再一个一个加!

My Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 char a[1000][500];
 4 int main()
 5 {
 6     int i,j,s[500],k,m; 
 7     char c;
 8     int num;
 9     while(scanf("%d",&num) != EOF)
10     {
11         num++;
12         memset(a,0,sizeof(a));
13         for(i=0;i<num;i++)
14             scanf("%s",a[i]);
15         for(i=0;i<num;i++)
16         {
17             s[i]=strlen(a[i]);
18             for(j=0;j<s[i];j++)
19             {
20                 c=a[i][j]-'0';
21                 a[i][j]=0;
22                 m=s[i];
23                 a[i][500-m+j]=c;
24             }
25         }
26         for(i=0;i<num-1;i++)
27         {
28             k=s[i]>s[i+1]?s[i]:s[i+1];
29             for(j=499;j>=0;j--)
30             {
31                 a[i+1][j]+=a[i][j];
32                 if(a[i+1][j]>=10)
33                 {
34                     a[i+1][j-1]+=1;
35                     a[i+1][j]-=10;
36                 }
37             }
38         }
39         for(i=0;i<500;i++)
40             if(a[num-1][i] != 0)
41             {
42                 j=i;
43                 break;
44             }
45             for(;j<500;j++)
46                 printf("%d",a[num-1][j]);
47             printf("\n");
48     }
49             return 0;
50 }

 

posted @ 2012-05-10 08:54  SmallMushroom  阅读(174)  评论(0编辑  收藏  举报