码迷,mamicode.com
首页 > 其他好文 > 详细

题目1003:A+B

时间:2014-07-22 22:51:14      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   strong   数据   

题目描述:
给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号","隔开。
现在请计算A+B的结果,并以正常形式输出。

 

输入:
输入包含多组数据数据,每组数据占一行,由两个整数A和B组成(-10^9 < A,B < 10^9)。

 

输出:
请计算A+B的结果,并以正常形式输出,每组数据占一行。

 

样例输入:
-234,567,890 123,456,789
1,234 2,345,678
样例输出:
-111111101
2346912
来源:
2010年浙江大学计算机及软件工程研究生机试真题

--------------------------------------------------------------------------

思路:

  • 由字符数组输入,忽略‘,‘按权值转换成整形数据即可

----------------------------------------------------------------------

代码1

 1 #include<stdio.h>
 3 int main(int argc, char const *argv[])
 4 {
 5     int A,B;
 6     int i;
 7     char a[13],b[13];
 8     while(scanf("%s%s",a,b)!=EOF)
 9     {
10         A=0;
11         for(i=0;a[i]!=\0;i++)
12             if(a[i]>=0&&a[i]<=9)
13                 A=A*10+a[i]-0;
14         if(a[0]==-)
15             A=-A;
16         B=0;
17         for(i=0;b[i]!=\0;i++)
18             if(b[i]>=0&&b[i]<=9)
19                 B=B*10+b[i]-0;
20         if(b[0]==-)
21         B=-B;
22         printf("%d\n",A+B);
23     }
24     return 0;
25 }

代码2:(严格按照从个位开始,每三位数用逗号","隔开。代码一可以随意输入‘,’,而且输入其它字符也可以通过,而这段代码却要求输入非常严格,不能有一点错误。这段代码数组越界了~还不会改,不过在自己电脑上运行完全正确。)

  1 #include<stdio.h>
  2 #include<math.h>
  3 int input(void);
  4 void tran(char *t,int k);
  5 int A,B;
  6 int main(int argc, char const *argv[])
  7 {
  8     while(input())
  9     {
 10 //        printf("a=%d\n",A);//
 11 //        printf("b=%d\n",B);//
 12         printf("%d\n",A+B);
 13 //        getchar();
 14     }
 15     return 0;
 16 }
 17 int input(void)
 18 {
 19 
 20     char t[26];
 21     char t1[13],t2[13];
 22     int i,j,p;
 23     int flag;
 24     for(i=0;i<13;i++)
 25     {
 26         t1[i]=0;
 27         t2[i]=0;
 28     }
 29     gets(t);
 30     for(i=0;t[i]!=\0;i++)
 31         if((t[i]<0||t[i]>9)&&t[i]!=,&&t[i]!= &&t[i]!=0&&t[i]!=-)
 32             return(0);
 33     p=0; 
 34     flag=1;
 35     for(i=0;flag;i++)
 36     {
 37         if(t[i]== )
 38         {
 39             p=i;
 40             flag=0;
 41         }
 42         else
 43         {
 44             t1[i]=t[i];
 45         }
 46     }
 47     t1[p]=\0;
 48     flag=1;
 49     for(i=p+1,j=0;flag;i++,j++)
 50     {
 51         if(t[i]==0)    
 52             flag=0;
 53         else
 54             t2[j]=t[i];
 55     }
 56     t2[j-1]=\0;
 57 //    printf("t1 %s\n",t1);//
 58 //    printf("t2 %s\n",t2);//
 59     tran(t1,1);
 60     tran(t2,2);
 61     return(1);
 62 }
 63 
 64 void tran(char *t,int k)
 65 {
 66     char a[3][3],b[3][3];
 67     int C;
 68     int f,i,j,q;
 69     int flag;
 70     int cout,cout0;
 71     int c;
 72         for(i=0;i<3;i++)
 73         for(j=0;j<3;j++)
 74         {
 75             a[i][j]=0;
 76             b[i][j]=0;
 77         }
 78 
 79     if(t[0]==-)
 80         f=1;
 81     else
 82     {
 83         f=0;
 84         for(i=0,q=0;t[i]!=\0;i++,q++)
 85         {}
 86         for(i=q+1;i>0;i--)
 87             t[i]=t[i-1];
 88     }
 89     //printf("t %s\n",t);//
 90     for(i=1,cout=1;t[i]!=\0;i++)
 91         if(t[i]==,)
 92             cout++;
 93         if(cout==1)
 94         {
 95             for(i=3,cout0=3;i>0;i--,cout0--)
 96                 if(t[i]!=0)
 97                     break;
 98         }
 99         else
100         {
101             for(i=4,cout0=3;i>0;i--,cout0--)
102             {
103                 if(t[i]==,)
104                     break;
105             }
106         }
107     //printf("cout:%d %d\n",cout,cout0);//
108     switch(cout)
109     {
110         case 1:
111             switch(cout0)
112             {
113                 case 1:
114                 {
115                     a[2][2]=t[1];
116                 }
117                 break;
118                 case 2:
119                 {
120                     a[2][2]=t[2];
121                     a[2][1]=t[1];
122                 }
123                 break;
124                 case 3:
125                 {
126                     a[2][2]=t[3];
127                     a[2][1]=t[2];
128                     a[2][0]=t[1];
129                 }
130                 break;
131             }
132             break;
133             case 2:
134             {
135                 switch(cout0)
136                     {
137                         case 1:
138                             {
139                                 a[1][2]=t[1];
140                                 a[2][0]=t[3];
141                                 a[2][1]=t[4];
142                                 a[2][2]=t[5];
143                             }
144                             break;
145                         case 2:
146                             {
147                                 a[1][1]=t[1];
148                                 a[1][2]=t[2];
149                                 a[2][0]=t[4];
150                                 a[2][1]=t[5];
151                                 a[2][2]=t[6];
152 
153                             }
154                             break;
155                         case 3:
156                             {
157                                 a[1][0]=t[1];
158                                 a[1][1]=t[2];
159                                 a[1][2]=t[3];
160                                 a[2][0]=t[5];
161                                 a[2][1]=t[6];
162                                 a[2][2]=t[7];
163                             }
164                             break;
165                     }
166 
167             }
168             break;
169         case 3:
170         {
171                 switch(cout0)
172                 {
173                     case 1:
174                         {
175                             a[0][2]=t[1];
176                             a[1][0]=t[3];
177                             a[1][1]=t[4];
178                             a[1][2]=t[5];
179                             a[2][0]=t[7];
180                             a[2][1]=t[8];
181                             a[2][2]=t[9];
182                         }
183                         break;
184 
185                     case 2:
186                         {
187                             a[0][1]=t[1];
188                             a[0][2]=t[2];
189                             a[1][0]=t[4];
190                             a[1][1]=t[5];
191                             a[1][2]=t[6];
192                             a[2][0]=t[8];
193                             a[2][1]=t[9];
194                             a[2][2]=t[10];
195                         }
196                         break;
197                     case 3:
198                         {
199                             a[0][0]=t[1];
200                             a[0][1]=t[2];
201                             a[0][2]=t[3];
202                             a[1][0]=t[5];
203                             a[1][1]=t[6];
204                             a[1][2]=t[7];
205                             a[2][0]=t[9];
206                             a[2][1]=t[10];
207                             a[2][2]=t[11];
208                         }    
209                         break;
210                 }
211 
212         }
213         break;
214     }
215 //    printf("a[i][j] ");//
216 //    for(i=0;i<3;i++)//
217 //        for(j=0;j<3;j++)//
218     //        printf("%c",a[i][j]);//
219 //        printf("\n");//
220         flag=0;
221         c=0;
222     for(i=0;i<3;i++)
223     {
224         if(flag)
225             break;
226         for(j=0;j<3;j++)
227         {
228             if(a[i][j]==0)
229             {    c++;    
230             }
231             else
232             {
233                 flag=1;
234                 break;
235             }
236         }
237     }
238     c=9-c;
239         cout=0;
240     C=0;
241     for(i=2;cout<c;i--)
242     {
243         for(j=2;cout<c;j--)
244         {
245             C=C+(int)pow(10,cout)*(a[i][j]-0);
246             cout++;
247         }
248     }
249     if(f==1)
250         C=-C;
251         if(k==1)
252             A=C;
253         else if(k==2)
254             B=C;
255 }

-----------------------------------------------------------------------------------------

小结:

  • 对字符数组的操作,用‘\0‘判断数组结束
  • 在运行界面先切换成半角输入,不然输入‘,‘等一些字符会出错
  • 利用flag标志变量,来对某一些不好退出的循环就行控制
  • switch(条件)  case 条件满足的条件:语句;break
  • 数组的内容传递给形参,只要用数组名即可

----------------------------------------------------------------------------------------------

资料查询:

 

二维数组指针:http://www.cnblogs.com/carekee/articles/1948326.html

int类型长度:http://bbs.bccn.net/thread-364170-1-1.html

字符串初始化:http://blog.csdn.net/ace_fei/article/details/7448368

题目1003:A+B,布布扣,bubuko.com

题目1003:A+B

标签:style   blog   http   color   strong   数据   

原文地址:http://www.cnblogs.com/qq1029579233/p/3855570.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!