-234,567,890 123,456,789 1,234 2,345,678
-111111101 2346912
很水的一道题,但是我还是陷进去了,一开始我想到的是以前自己做过的一道题,是每个位都加起来然后判断。可是这道题不用了。有两种方法:
1.把用字符串表示的转化为数字然后直接进行加法操作。
2.用一个叫atoi的函数,听说好像可以把字符串转换为数字,然后直接进行操作。
#include<iostream> #include<string.h> #include<stdio.h> #include<ctype.h> using namespace std; int main() { char s1[20]; char s2[20]; char s3[20]; char s4[20]; while(cin>>s1) { int k1=0,k2=0,i; scanf("%s",s2); int l1= strlen(s1); for(i=0;i<l1;i++) if(s1[i]!=',') s3[k1++]=s1[i]; s3[k1]='\0'; int l2= strlen(s2); for(i=0;i<l2;i++) if(s2[i]!=',') s4[k2++]=s2[i]; s4[k2]='\0'; //两个字符串转换成数字来进行加法,直接就会进行的,不用分类。 int ans = atoi(s3)+atoi(s4); printf("%d\n",ans); } return 0; }
#include<stdio.h> #include<string.h> int main(){ char a[100],b[100]; int len1,len2,i,j; while(~scanf("%s",a)){ scanf("%s",b); len1=strlen(a); len2=strlen(b); j=1; int ans1=0,ans2=0,flag1=0,flag2=0; if(a[0]=='-') flag1=1; for(i=len1-1;i>=0;i--){ if(a[i]!=',' && a[i]!='-'){ ans1+=(a[i]-'0')*j; j=j*10; } } if(flag1) ans1=-ans1; j=1; if(b[0]=='-') flag2=1; for(i=len2-1;i>=0;i--){ if(b[i]!=',' && b[i]!='-'){ ans2+=(b[i]-'0')*j; j=j*10; } } if(flag2) ans2=-ans2; printf("%d\n",ans1+ans2); } }
原文地址:http://blog.csdn.net/acmer_hades/article/details/44461887