【PAT】PAT Advance 1001 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

题目大意

将两个数字相加,用标准格式输出最终结果

思路

最容易想到的是将结果转换为字符数组然后输出,实际上只需要通过取余数和除法,将数字拆成数字数组,然后输出即可。

代码

#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;
}

猜你喜欢

转载自blog.csdn.net/a617976080/article/details/89052748