1001 A+B Format (20分)
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 <cstdio>
int main(){
int a, b, res, t[10];
scanf("%d %d", &a, &b);
res = a + b;
if(res < 0){
printf("-");
res = -res;
}
int num = 0;
if(res == 0){
printf("0");
}else{
while(res != 0){
t[num] = res % 10;
num++;
res /= 10;
}
int flag = 0;
int temp = num % 3;
for(int i=num-1; i>=0; i--){
printf("%d", t[i]);
flag++;
if(flag%3==temp && i!=0){
printf(",");
}
}
}
return 0;
}
有一说一我觉得这题还是挺简单的,但是因为算法笔记中分类在字符串处理那章,所以刚拿到题目不自觉的在想用字符串来解决。用字符串的话必须要能把数字给转成字符,这有点超出了我的能力范围,所以就放弃了。因为这题整数的范围在int内,所以可以直接相加出结果,然后将每一位数字保存在一个数组中,然后输出数组,隔三位输出一个逗号。
这题有两个坑,一个是结果长度小于4的时候不用输出逗号,所以要记住三位数的时候应该判断一下数组是否都输出完了。还有一个是结果为0的时候,需要特判。