首页 > 编程语言 > 详细

hdoj1002(C语言)

时间:2021-07-13 14:57:37      阅读:27      评论:0      收藏:0      [点我收藏+]

题目链接:https://acm.dingbacode.com/showproblem.php?pid=1002

大数加法题,不能直接用int或者longlong,要用数组存储每一位

这题最离谱的就是最后一个case后面只有一个回车,wa了好几次都因为这个

 

 1 #include<stdio.h>
 2 #include<string.h>
 3 int main(){
 4     int n,count=1;
 5     scanf("%d",&n);
 6     
 7     while(n--){
 8         char s1[1005],s2[1005],s4[1005],s5[1005];
 9         int s3[1005]={0};
10         int l1,l2,len,max;
11         scanf("%s%s",s1,s2);
12         strcpy(s4,s1);
13         strcpy(s5,s2);
14         
15         l1=strlen(s1);
16         l2=strlen(s2);
17         
18         if(l1>l2){
19             len=l1;
20             for(int i=l2-1;i>=0;i--){
21                 s2[i+l1-l2]=s2[i];
22             }
23             for(int i=0;i<l1-l2;i++){
24                 s2[i]=0;
25             }
26         }else if(l1<l2){
27             len=l2;
28             for(int i=l1-1;i>=0;i--){
29                 s1[i+l2-l1]=s1[i];
30             }
31             for(int i=0;i<l2-l1;i++){
32                 s1[i]=0; 
33             }
34         }else{
35             len=l1;
36         }
37         
38         max=len;
39         
40         int flag=0; //进位标志符
41         
42         for(int i=len-1;i>=0;i--){
43             if(flag){
44                 if((s1[i]-0)+(s2[i]-0)+1>9){
45                     flag=1;
46                     s3[--len]=((s1[i]-0)+(s2[i]-0)+1)%10;
47                 }else{
48                     flag=0;
49                     s3[--len]=(s1[i]-0)+(s2[i]-0)+1;
50                 }
51             }else{
52                 if((s1[i]-0)+(s2[i]-0)>9){
53                     flag=1;
54                     s3[--len]=((s1[i]-0)+(s2[i]-0))%10;
55                 }else{
56                     flag=0;
57                     s3[--len]=(s1[i]-0)+(s2[i]-0);
58                 }
59             }    
60         }
61         
62         if(flag){
63             printf("Case %d:\n%s + %s = 1",count++,s4,s5);
64             
65         }else{
66             printf("Case %d:\n%s + %s = ",count++,s4,s5);
67         }
68         for(int i=0;i<max;i++){
69             printf("%d",s3[i]);
70         }
71         
72         if(n==0){
73             printf("\n");
74         }else{
75             printf("\n\n");
76         }
77         
78     }
79     
80     return 0;
81 }

 

hdoj1002(C语言)

原文:https://www.cnblogs.com/ocodehoney/p/15006163.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!