A1001 A+B Format 数字相加格式化输出
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
题目大意
将两个数字相加,用标准格式输出最终结果
思路1
最容易想到的是将结果转换为字符数组然后输出,实际上只需要通过取余数和除法,将数字拆成数字数组,然后输出即可。下面代码使用ans来存储计算结果的绝对值,symbol来存储计算结果的符号(1代表非负数,-1代表负数)。
#include <stdio.h>
#include <stdlib.h>
//以-1 10000=9999为例
void shuchu(int n, int cnt) {
if (n == 0) return;//如果记录到最高位前一位了,退出递归,堆栈弹出
shuchu(n / 10, ++cnt);
//cnt记录最后一位数从个位开始的位数
if (n >= 10 && cnt % 3 == 0) putchar(',');
printf("%d", n%10); //9,1 9,2 9,3 9,4 0,5进栈,到0时出栈
}
int main() {
int a, b, n;
scanf("%d %d", &a, &b);
n = a + b;
int i = -1;
if (n < 0) {
n = -n;
putchar('-');
}
else if (n == 0) putchar('n');
int group[100000];
do {
group[++i] = n % 10;
n /= 10;
} while (n > 0);
for (int k = i; k >= 0; k--) {
printf("%d", group[k]);
if (k > 0 && k % 3 == 0) putchar(',');
}
return 0;
}