zoukankan      html  css  js  c++  java
  • 1001. A+B Format

    Github_link

    • 解题思路

    题目要求将两个数之和输出为国际形式的数字显示,如100000#==> 100,000 。首先本想着不用数组直接用循环把a+b(-1000000<=a,b<=1000000)的代数和result%10输出再result/=10,其中每输出三个插入一个',',循环结束即可。但是逗比地忘了这样实现的是逆序输出,所以就又蛋疼的尝试把逆序改为顺序输出,结果发现越弄越复杂,于是就又回到了用数组实现的想法......

    首先先判断result的正负flag,之后把result绝对值化,再将至多拆分成7个数字的result分别赋给 char类型的Array(ps:赋值时对应加上48),循环中的条件判断语句为 if(count%3==0)arr[i++]=','; ,同时需要在输出前判断flag来检查是否需要输出负号,最后输出Array即可。

    [Original source code is available on Github](https://github.com/F0UR3r/object-oriented)
    
    • DEBUG

      测试数据:

        - 1000 1000    	      #==> 2,000       |AC
        - 100000 100000       #==> ,200,000    |WA
        - -1 1                #==>(null)       |WA
      

      本地测试三组数据结果分析:

        - 第二组数据在第十行处的循环中,当第6次temp!=0后 (temp/=10)==0 但是count++使得count从5变为6,从而导致条件为真条件语句执行 arr[i++]=','; ,故最后输出时出现 ,200,000。
        
        - 代码中缺少对result==0的判断
      

      代码修改

        - 将第13行的条件判断修改为if(count%3==0&&temp!=0)...
        - 在第14行插入if(result==0)printf("0");
      

      测试数据:

        - 1000 -1000          #==> 0         |AC
        - 100000 100000       #==> 200,000   |AC
        - 1000000 1000000     #==> 2,000,000 |AC
        - -1000000 -1000000   #==> -2,000,000|AC
      

      尝试了几组典型数据以及代码审计后未发现算法和逻辑错误,尝试提交。

    • PAT提交

      • attempt-1 PAT
  • 相关阅读:
    write to logfile
    open and read a file content to a variable
    strategy
    Android 开机启动程序
    消息队列
    卡机音乐功能实现
    Android 2.0 开机动画文件分析
    多线程实例
    消息队列
    多线程实例
  • 原文地址:https://www.cnblogs.com/tr3e/p/5160783.html
Copyright © 2011-2022 走看看