Calculate a + b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less than four digits).
InputEach input file contains one test case. Each case contains a pair of integers a and b where -1000000 <= a, b <= 1000000. The numbers are separated by a space.
Output
For each test case, you should output the sum of a and b in one line. The sum must be written in the standard format.
Sample Input
-1000000 9
Sample Output
-999,991
题目的意思:给出两个数(-1000000到1000000之间),求它们的和,并按照隔3个输出一个逗号的形式输出。
思路:根据题目意思求出两个数的和,flag来标记正负,将数从个位往前按位转换为char类型的数组,并且每隔三位加入一个逗号。
注意:数字的位数正好是3的整数倍时,第一位上会多出一个逗号。
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
int c = a + b;
char num[15];
int index = 0, time = 0;
int flag = 1;
if (c < 0) { //如果和是负数,flag记录下,并将它取反
flag = 0;
c = -c;
} else if (c == 0) { //和为0的情况,直接输出并返回
cout << "0" << endl;
return 0;
}
while (c > 0) {
//index表示要插入的char类型数组的位置
num[index++] = '0' + (char)(c % 10);
//time用来记录数字的个数
time++;
c /= 10;
//每隔3个数字就加入一个逗号
if (time % 3 == 0) num[index++] = ',';
}
//3个数字加1个逗号,一共4位,index如果是4的整数倍,说明第一位上多了一个逗号
if (index % 4 == 0) index--;
if (!flag) cout << '-';
for (int i = index - 1; i >= 0; i--)
cout << num[i];
cout << endl;
return 0;
}