编程题1001.A+B Format (20)

GitHub/object-oriented

【解题思路】

本题的解题要点在于输出格式。由于输出要求每三位数字一逗号,且最多存在两个逗号,所以可将逗号分隔的三个部分取为三组数d、e、f,分别输出,中间用逗号隔开。其中存在三种输出情况,需注意每个区间数的位数规定。

【编码过程】

共提交6次,其中3次是提交着玩的(请忽视)。

  • 第一次提交结果部分正确,重新理清思路,发现问题在于我忽视了负数情形,将判断条件d>0e>0改为了d!=0e!=0,此处还考虑到一旦输入数字为负,则d、e、f全为负数,最后的输出结果就会含有多个负号,于是又引入<cmath>函数库,在输出部分规定正负。
  • 第二次提交结果编译错误,猜测问题在于头文件,尝试着将<cmath>改为<math.h>并将编译器改为C提交。
  • 第三次提交结果答案正确。
  • 尽管最终答案正确,但仍存在一些疑惑,<cmath>是标准的C++库函数,为什么代码在C++编译器条件下提交会显示编译错误?我在这个网站发现了和我类似的问题及其解答:
    alt text
    alt text
    结合上图与PAT的错误分析之后发现:类似于pow()的,abs()<camth>中也没有定义,要在C++中使用绝对值函数用法应该是std::abs()或者#include<cmath>using namespace std;int main(){abs();return 0;}(该知识点似乎与命名空间相关,感觉自己的解答还不够正确,可能需要C++后面学到命名空间了才能理解)
    alt text

【代码变更历史】

  • alt text
  • alt text
  • alt text

alt text

posted @ 2016-01-29 00:39  雨勤未晴丶  Views(233)  Comments(1Edit  收藏  举报