题目描述
给定两个整数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
起初拿到这一题,我的思路就是,设置两个数组,用来存放这两个数字,然后从最后一位开始,不断利用sum+=str[i]*q,q=q*10;来取出数字,如果遇见“,”则跳过,但是最初计算出的结果是很奇怪的数,后来调试发现,str[i]中不断累加的是数字的ASCII码,而不是真正的数字,于是改进,将sum+=str[i]*q改为sum+=(str[i]-'0')*q,便可以得到想要的数字。
具体代码如下:
#include <cstdio>
#include <cstring>
int main()
{
char str1[12],str2[12];
while(scanf("%s %s",&str1,&str2)!=EOF)
{
int n1,n2;
int i,q=1,sum1=0,sum2=0,temp1=0,temp2=0;
int result;
n1=strlen(str1);
n2=strlen(str2);
for(i=n1-1;i>0;i--)
{
if(str1[i]==',')
continue;
else
{
sum1+=(str1[i]-'0')*q;
q*=10;
}
}
if(str1[0]=='-')
temp1=-1;
else
sum1+=(str1[i]-'0')*q;
q=1;
for(i=n2-1;i>0;i--)
{
if(str2[i]==',')
continue;
else
{
sum2+=(str2[i]-'0')*q;
q*=10;
}
}
if(str2[0]=='-')
temp2=-1;
else
sum2+=(str2[i]-'0')*q;
if(temp1==-1&&temp2==-1)
result=-(sum1+sum2);
else if(temp1==-1&&temp2==0)
result=(sum2-sum1);
else if(temp2==-1&&temp1==0)
result=(sum1-sum2);
else
result=(sum1+sum2);
printf("%d\n",result);
}
return 0;
}