题目:A+B
/*
题目描述:
给定两个整数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 <math.h>
using namespace std;
//初始化字符数组,所有字符赋NULL
void input_initialize(char a[])
{
for (int i = 0; i < 12; i++)
a[i] = NULL;
}
//字符数组转成long
long chars2long(char input[])
{
long a = 0;
int x;
int i, j;
//从右侧扫描数组,找到最后一位数字
for (i = 11; i >= 0; i--)
if (input[i]) break;
//自末位数字开始
for (j = 0; i >= 0; i--, j++)
{
//若为负号,则取相反数,结束
if (input[i] == '-')
{
a = a * (-1);
break;
}
//若为逗号,j减一,应对每次循环里j的自增,不做其他处理
if (input[i] == ',')
{
j--;
continue;
}
//若为数字,乘以10的j次方,加到结果中
x = input[i] - '0';
a = a + x * pow(10, j);
}
return a;
}
int main()
{
char o1[12], o2[12];
//清空o1,o2
input_initialize(o1);
input_initialize(o2);
while (cin >> o1 >> o2)
{
//输出结果
cout << chars2long(o1) + chars2long(o2) << endl;
//清空o1,o2,准备下次输入
input_initialize(o1);
input_initialize(o2);
}
return 0;
}