首页 > 代码库 > 题目1003:A+B

题目1003:A+B

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

 

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

 

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

 

样例输入:
-234,567,890 123,456,7891,234 2,345,678
样例输出:
-1111111012346912
来源:
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         else100         {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             else232             {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