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