http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2279
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 char st1[1002],st2[1002]; 6 int a[1000],b[1000],n1,n2,k,i,j,n,l; 7 scanf("%d%*c",&n); 8 for(l=1;l<=n;l++) 9 { 10 scanf("%s %s",st1,st2); 11 memset(a,0,sizeof(a)); 12 memset(b,0,sizeof(b)); 13 n1=strlen(st1); 14 n2=strlen(st2); 15 for(i=0;i<n1;i++) 16 a[n1-1-i]=st1[i]-'0'; 17 for(i=0;i<n2;i++) 18 b[n2-1-i]=st2[i]-'0'; 19 k=n1; 20 if(n1<n2) 21 k=n2; 22 for(i=0;i<k;i++) 23 a[i]=a[i]+b[i]; 24 for(i=0;i<k;i++) 25 { 26 if(a[i]>9) 27 { 28 a[i+1]=a[i+1]+a[i]/10; 29 a[i]=a[i]%10; 30 } 31 else 32 a[i]=a[i]; 33 } 34 for(j=k;j>=0;j--) 35 { 36 if(a[j])break; 37 } 38 printf("Case %d:\n%s + %s = ",l,st1,st2); 39 for(i=j;i>=0;i--) 40 { 41 printf("%d",a[i]); 42 } 43 printf("\n\n"); 44 } 45 return 0; 46 }
大数加法我在http://my.csdn.net/m12110501061发了博客。这道题变了一下形势,输出问题我想了一天,最终问了tanhehe,printf("Case %d:\n%s + %s = ",l,st1,st2);这样输出第一次用,开始也想到了,以为不行,就没试试。他的代码比我的简单,在这里给大家分享一下
1 #include<stdio.h> 2 #include<string.h> 3 int main() 4 { 5 int js,js1=0,i,la,lb,max; 6 int a[1000],b[1000],c[1000]; 7 char sa[1000],sb[1000]; 8 scanf("%d%*c",&js); 9 while(js!=0) 10 { 11 js1++; 12 js--; 13 memset(a,0,sizeof(a)); 14 memset(b,0,sizeof(b)); 15 memset(c,0,sizeof(c)); 16 scanf("%s%s",&sa,&sb); 17 la=strlen(sa); 18 lb=strlen(sb); 19 for(i=0;i<la;i++) 20 a[la-1-i]=sa[i]-48; 21 for(i=0;i<lb;i++) 22 b[lb-1-i]=sb[i]-48; 23 if(la<lb) max=lb; 24 else max=la; 25 for(i=0;i<max;i++) 26 c[i]=a[i]+b[i]; 27 for(i=0;i<max || c[i]>=10;i++) 28 { 29 c[i+1]=c[i+1]+c[i]/10; 30 c[i]%=10; 31 } 32 for(;c[i]==0;) 33 if(c[i]==0) i--; 34 else break; 35 printf("Case %d:\n%s + %s = ",js1,sa,sb); 36 for(;i>=0;i--) 37 printf("%d",c[i]); 38 if(js!=0) printf("\n\n"); 39 } 40 return 0; 41 } 42 tanhehe的代码