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

1001. A+B Format(20)


1、 问题描述

885954-20160203010534194-1754820741.png


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 这个错误。

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

    885954-20160203010625210-908221949.png

  • 改好编译器再次上交的时候发现只有“部分正确”。自己又去跑去测了几组数据,发现当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上的提交记录列表截图

885954-20160203010653100-769786403.png


5、 作业小结

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

转载于:https://www.cnblogs.com/HBING/p/5170931.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值