美文网首页
1001. A+B Format

1001. A+B Format

作者: Mapoos | 来源:发表于2017-04-05 10:40 被阅读0次

    题目

    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

    Each input file contains one test case. Each case contains a pair of integers a and b where -1000000 <= a, b <= 1000000. The numbers are separated by a space.

    Output

    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
    

    题目大意

    求a和b的和,并输出,每三位输出一个逗号。

    思路

    一看到题目就想到把和的每一位拆分存进数组,再按序进行判断输出,负号的情况要单独讨论。结果做出来是可行的,要注意的是要考虑sum=0的特殊情况。
      后来觉得题目这么短,怎么代码这么长,很难受,就网上查了一下,果不其然,和别人的一比自己写的真的是low B······主要还是C基础没学好,对输出的格式语句没有深入研究过,下简要记录一下权当学习了:
      %d 正常输出
      %3d 指定宽度,不足的左边补空格
      %-3d 左对齐输出
      %03d 指定宽度,不足的左边补0


    代码实现Ⅰ

    #include <stdio.h>
    #include <math.h>
    
    int main(void)
    {
        int a, b, sum; 
        int flag = 0;       // flag用来判断sum是否为负数 
        int arr[10];    // 存放各位数字及逗号
        int count = 0;  // 位数计数
        int i = -1;     // 数组下标及长度
        
        scanf("%d %d", &a, &b);
        sum = a + b;
        if (sum < 0)
        {
            flag = 1;
            sum = abs(sum);
        }
        
        /*sum = 0特殊情况*/
        if(sum == 0)
        {
            printf("0");
            return 0;
        }
        
        /*数组创建*/
        while (sum != 0)
        {
            if (count == 3)
            {
                arr[++i] = -1;  // 若为逗号存-1
                count = 0;
            }
            else
            {
                arr[++i] = sum % 10;
                ++count;
                sum /= 10;
            }
        }
    
        /*输出*/
        if (flag)
        {
            printf("-");
            flag = 0;
        }
        for (int j = i; j >= 0; --j)
        {
            if (arr[j] == -1)
            {
                printf(",");
                continue;
            }
            else
                printf("%d", arr[j]); 
        }
        return 0;
    }
    

    代码实现Ⅱ

    #include <stdio.h>
    int main()
    {
      int a, b;
      int sum;
      while (scanf("%d%d\n", &a, &b) != EOF) {
            sum = a + b;
        if (sum < 0) {
          printf("-");
          sum = -sum;
        }
        if (sum >= 1000000){
            printf("%d, %03d, %03d\n", sum / 1000000, (sum / 1000) % 1000, sum % 1000);
        }
        else if (sum >= 1000) {
            printf("%d, %03d\n", sum / 1000, sum % 1000);
        } else {
            printf("%d\n", sum);
        }
      }
      return 0;
    }
    

    参考

    ITEYE博客 - wq611403

    相关文章

      网友评论

          本文标题:1001. A+B Format

          本文链接:https://www.haomeiwen.com/subject/jyytattx.html