面向对象程序设计第二次作业(1)

1001. A+B Format(20)

  • Github 相关链接: https://github.com/H-BING/object-oriented/tree/master/1001.%20A%2BB%20Format%20(20)

1、 问题描述

面向对象程序设计第二次作业(1)_第1张图片

2、 解题的思路过程

  • 首先 A+B 并没有什么难度,重要的是输出数据的格式需要注意,题目要求输出的数字必须用逗号分隔开来。
  • 由于题目规定的 a 和 b 的范围较小,a+b 的总和在 -2,000,000 到 2,000,000 之间。我将正数输出情况分成三种:

<1> a+b < 1,000

<2> 1000 <= a+b < 1,000,000

<3> 1,000,000 <= a+b

  • 负数情况以此类推。

3、 编码过程中调试与上线测试(提交代码)后的bug发现与修改过程

  • 想好之后就写了一段代码,并且随便输了几个数试验了一下发现结果符合。代码如下:

    #include<stdio.h>
    int main() {
        int a, b;
        int sum = 0;
        int y, z;
        scanf ("%d%d", &a, &b);
        sum = a + b;
    
        z = sum % 1000; sum /= 1000;
        if (sum == 0) printf("%d\n", z);// sum < 1,000
        else {
            y = sum % 1000; sum /= 1000;
            if (sum == 0) printf("%d,%d\n", y, z);// 1,000 <= sum < 1,000,000
            else printf("%d,%d,%d\n", sum, y, z);//sum >= 1,000,000
        }
    
    return 0;
    }
  • sum<0 的情况最开始是傻傻的判断sum的正负情况,if(sum>0) 用上面的代码,else 的时候把原先的代码复制一遍,然后在每个 printf 的 “ ” 最前面一个个添 - 号 ((# ̄~ ̄#)真是要被自己蠢哭了) 。自己输数据的时候还发现输出了-0 这个错误。

  • 当我很愉快的去提交的时候,没有注意到编译器不对。测试结果“返回非零”,真是百思不得其解。结果抬头一看,发现编译器不对……

    面向对象程序设计第二次作业(1)_第2张图片

  • 改好编译器再次上交的时候发现只有“部分正确”。自己又去跑去测了几组数据,发现当sum大于1,000的时候,被“,”分隔开的部分会出现不足三位的情况,这种情况下应当补零。改了一下输出的格式说明就愉快的对啦~

    不算优化的优化

    • 总觉得这样的题目写出来的代码不应该太长,特别是正负那边应该用点什么一下子就能搞定了。
    • 脑袋灵光一现,大笔一挥把原来加的if和else都删掉。在求出sum之后添加了如下代码:

        if (sum < 0) { printf("-"); sum = -sum; }
    • 改完之后果然整个页面比原来清楚了好多!!

  • 最终代码

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

4、 在PAT上的提交记录列表截图

面向对象程序设计第二次作业(1)_第3张图片

5、 作业小结

  • 题目不算难,不过刚开始做题的时候考虑的还是不够周到,没有考虑到需要补零的情况。以后做题的时候会尽量多测试一些数据,尽可能考虑到多方面的可能。
  • 把文件上传到github用的时间比写代码的时间翻了不知道多少倍 (# ̄~ ̄#) ,然而最后还是没怎么搞懂git。虽然最后用了别的方法上传了文件,但是还是会再花点时间研究研究git。
  • 看到markdown可以兼容html就顺便复习复习之前学过的一点点html和css, o(一︿一+)o 果然太久没有用,有的都忘记掉了。花了点时间找到以前学的东西再看了看,还是有点收获的。

你可能感兴趣的:(面向对象程序设计第二次作业(1))