题目描述
给定两个整数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 <cstdio>
#include <cstring>
#define maxn 15 //字符串最长不超过15
int change (char C[maxn]) { //将字符串C转化成整型数字num
int num = 0, length ; //length表示字符串长度
length = strlen (C) ;
if (C[0] == '-') { //第一为为'-'负号 转换完毕要乘以 -1
for (int i=1; i<length; i++) {
if (C[i] == ',') continue ; //if continue balabala... 跳过',' 实现数字往最低位增加的操作
num = num *10 + C[i]-'0' ; //注意此处进行将字符串某位的数字转为整型数字进行运算 要使用 C[i]-'0'
}
num *= -1 ; //因为第一位是负号
} else { //若不为负号 最后也就不用乘以-1
for (int i=0; i<length; i++) { //第一为不是负号要从第一位开始
if (C[i] == ',') continue ;
num = num *10 + C[i]-'0' ; //注意此处如上 进行将字符串某位的数字转为整型数字进行运算 要使用 C[i]-'0'
}
}
return num; //实现将字符串形式转化成整型num
}
int main () {
int a=0, b=0 ;
char A[maxn] = {0}, B[maxn] = {0} ;
while (scanf ("%s %s", A, B) != EOF){ //有多组数据要读入
a = change (A) ;
b = change (B) ;
printf ("%d\n", a+b) ; //注意结果要求多组且多组结果分行显示 因此此处要加上转置符号跳到下一行
}
return 0;
}