大数相加
这是超长数的加法,以后自己这种加法自己要记住!
就是把所有的数字都移到数组右侧,再一个一个加!
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }