PAT A1001 A+B Format(C++)

PAT甲级目录 | PAT乙级目录

题目描述

原题地址:A1001 A+B Format

题目大意:格式化输出加法算式的结果。

解题思路

分别考虑结果为负数、0、正数三种情况:

  • 如果结果为负数,可以先输出负号,再转换成正数,按照正数处理
  • 结果为 0 输出 0.
  • 结果为正数,则先通过取余存储每一位的数字,再倒序输出结果,每三位输出一个逗号。

易错点:

  • 结果为 0 时需要特判
  • 结果为负数需要先输出负号,再转成正数计算
  • 因为每次取余得到的是个位,因此结果要逆序输出

也许陌生的知识点

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <cstdio>
#include <cstring>
using namespace std;
int main(){
int a, b, s[1001] = {0};
scanf("%d %d", &a, &b);
a = a + b;
if(a == 0) printf("0\n");
else {
if( a < 0) {
printf("-");
a = - a;
}
int cnt = 0;
do{
s[cnt++] = a % 10;
a = a / 10;
}while(a != 0);
for(int i = cnt - 1; i >= 0; i--){
printf("%d", s[i]);
if(i % 3 == 0 && i != 0) printf(",");
}
}
return 0;
}