骄傲的代价

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的代码

 

posted @ 2013-03-13 20:37  海东青飞吧!  阅读(154)  评论(0编辑  收藏  举报