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).
Input Specification:
Each input file contains one test case. Each case contains a pair of integers a and b where −10
6
≤a,b≤10
6
. The numbers are separated by a space.
Output Specification:
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
题目大意
将两个数字相加,用标准格式输出最终结果
思路
最容易想到的是将结果转换为字符数组然后输出,实际上只需要通过取余数和除法,将数字拆成数字数组,然后输出即可。
代码
#include <stdio.h>
int main() {
int a, b, ans, k = 0, symbol = 1;
// a,b的上限是1e6,所以和的范围是[-1e7, 1e7], 数组开3个足够
int group[3];
scanf("%d", &a);
scanf("%d", &b);
ans = a + b;
// 每三个数作为一组存在数组中
// 将结果转换为整数,用symbol记录转换前的符号
if(ans < 0){
ans = -ans;
symbol = -1;
}
do{
group[k++] = ans % 1000;
ans /= 1000;
}while (ans);
// 小于0则先输出一个负号
if(symbol == -1)printf("%c", '-');
// 输出头部
printf("%d", group[--k]);
// 输出余下部分
while (k > 0) {
// 记得补0
printf(",%03d", group[--k]);
}
return 0;
}