第二次作业

Github上仓库链接:

https://github.com/MeKChen2/object-oriented.git

1.解题思路:

看到题目时,首先想到的是需要得到A+B之和sum的位数,而且又必须在数中间插入逗号,那么就必须先把sum转换成字符串,由strlen函数得到字符串长度。
定义一个字符串数组用来存放字符,题目要求从右往左每三位用一个逗号隔开,而这个字符串是从左往右,所以一开始想到将字符串倒置,但是在后面遇到困难。
我想到新的方法,当从左往右数第n个数除以3的余数等于该字符串长度除以3的余数时,需要多输出一个逗号,不等时则只输出该字符。利用循环和条件语句就可以实现上述方法。

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

  问题①:最开始的输出语句为printf("%c,",&str[i]);和printf("%c",&str[i]);调试后发现输出的数字变成了大于号,小于号等符号。
  -修改:将输出语句改成putchar函数。
  -结果:问题得到解决。
  
  问题②:提交代码后发现编译错误,“error: 'itoa' was not declared in this scope”,在查询后得知itoa函数与ANSI标准是不兼容的。将整数转换为字符串而且与ANSI标准兼容的方法是使用sprintf()函数。
  -修改:将itoa函数改成sprintf函数。
  -结果:部分正确,测试点0不正确。

  问题③:经过代入多组数据发现,当输入负数,且位数正好为3的倍数时,负号后会插入一个逗号。
  -修改:在循环前添加一个条件语句,如果sum值为负,输出一个“-”,并将sum值变为正。
  -结果:答案完全正确。

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

原文地址:https://www.cnblogs.com/kurisu/p/5162516.html