Github地址:https://github.com/Wjianting/object-oriented
题目:1001.A+B Format (20)
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.
解题思路
- 刚看上去是一道简单的加法题,仔细阅读题目后发现对输出有要求,当输出数字超过三位时,需要用逗号进行分割
- 思考过后决定根据数字的长度分不同情况考虑
编码过程中调试与上线测试(提交代码)后的bug发现与修改过程
-
第一次上交的代码,根据和的长度分类,决定应该分为三个部分还是两个部分。考虑到如果和为负数,在每个逗号之后的数字也是负数,所以将其变号。
-
上交之后只有少部分正确,说明也许漏掉了重要的部分没有考虑,在梳理了代码之后发现少了和小于四位数的情况,以至于这个部分完全没有输出。于是在原本的代码之后补充了直接输出不到四位数和的部分
-
第二次上交的结果
-
结果有了很明显的改善,但还是有部分报错。在与同学的交流之后我知道了在输出时使用%03d可以直接用0将不足3位的数字补充至三位,我也感到很羞愧因为这是课本中的内容。
-
再一次修改之后的代码
-
比起之前我的代码显得简洁了不少,再一次提交。
-
这时还有一个错误,我开始思考我的代码中哪一个部分还不够严谨,我觉得也许是我在符号的处理上出了问题但我没有发现。于是我重新思考了一种处理符号的方式,就是对和为负数的情况先输出负号,在把它化作正数处理,就省去了对多个部分变号的繁杂。
-
将修改后的代码上交之后显示答案正确,说明我先前在负号的处理过程中确实有纰漏。
收获
- 很多时候最快想出来的解法不是最简洁最严谨的,很多问题需要技巧与方法,应该培养自己思维,尝试多方面考虑问题,尽量找到最佳方案。
- 课本中的许多内容也十分重要,平时要多啃书,将书中的内容吃透,基础打牢才有上层建筑。