例4006 A+B问题
(来源:acm.hdu.edu.cn 3787)
问题描述:
给定两个整数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
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int i;
long int a,b;//c中可以用 __int64 a,b;
char s1[20],s2[20];
while(scanf("%s %s",s1,s2)!=EOF) {//每两个数作为一组输入,并判断是否到文件尾
a = b = 0;
for(i=0;i<strlen(s1);i++) {
if(s1[i]>='0'&&s1[i]<='9') {//这里把'-'与','都排除,只使用数字字符
a = a*10 + s1[i] - '0';//这里其实有一个递推,每次执行,a都会乘10,这样就确定了每一位数字的位权
}
}
if(s1[0]=='-')//如果字符串的第一个符号为'-'则给a取负
a = -a;
//b的计算同理
for(i=0;i<strlen(s2);i++) {
if(s2[i]>='0'&&s2[i]<='9') {
b = b*10 + s2[i] - '0';
}
}
if(s2[0]=='-')
b = -b;
cout<<a+b<<"\n";
}
return 0;
}