zoukankan      html  css  js  c++  java
  • 学号20175313 《程序设计中临时变量的使用》第八周

    程序设计中临时变量的使用

    一、题目要求

      //定义一个数组,比如
      int arr[] = {1,2,3,4,5,6,7,8};
     
      //打印原始数组的值
      for(int i:arr){
          System.out.print(i + " ");
      }
      System.out.println();
      
      // 添加代码删除上面数组中的5
      ...
      
      //打印出 1 2 3 4 6 7 8 0
      for(int i:arr){
          System.out.print(i + " ");
      }
      System.out.println();
     
      // 添加代码再在4后面5
      ...
      
      //打印出 1 2 3 4 5 6 7 8
      for(int i:arr){
          System.out.print(i + " ");
      }
      System.out.println();
    

    二、运行结果截图

    • 原结果截图:

    输入图片说明

    • 由于屏幕原因,为了更清楚、直观的呈现运行结果,我对输出的结果格式进行了一些修改,修改后运行结果如下:

    输入图片说明

    三、遇到的问题及其解决方法

    • 问题1:对于ArrayInsect这个类中的Insect函数的实现,出现了如下问题:

    输入图片说明

    • 解决方法:对于为什么输出到后面变成了“666”,起初我查看了上面删除输出的结果,是正确的;那么出现这个问题的原因只能是出在Insect这个方法上,我查看了我的Insect方法,在对它进行调试,终于找到了问题的所在。原因是因为对index后面的元素进行移位时,应该先从最后一个开始移,否则就会被覆盖,出现输出全是同一个数的情况。所以我对代码进行如下修改:

    输入图片说明

    • 问题2:针对问题1,对代码进行修改后,又出现了溢出的问题。
    • 解决方法:仔细分析我新改的那几条语句,发现下标是i+1,那么当i=length-1时,i+1=length,但是该数组下标最大为length-1,所以会出现溢出,应该把i的初值改为length-2。
    • 修改后运行结果截图:

    输入图片说明

    四、代码链接

    五、心得体会

    • 认真审题很重要。起初我没有认真看题目要求的输出结果,以为删除完“5”后,输出的结果应该是“1 2 3 4 6 7 8”,所以就一直在想要怎么改变一个静态数组的长度,结果毫无疑问是失败。后来我又认真进行比对,才发现要求的输出是“1 2 3 4 6 7 8 0”。
    • 不要太自负。刚开始看到这道题,我感觉这种题应该很简单,半个小时肯定能做完。然而这种自负的后果就是:首先看错题,其次又不注意细节,产生多次溢出,浪费了大量的时间。
  • 相关阅读:
    Select与Epoll的区别
    C++ 多态详解及常见面试题
    Linux进程状态详解及状态转换
    C++ 设计模式之单例模式
    DS 图解归并排序
    TCP三次握手,四次挥手详解及常见面试题
    Linux 进程间通信(管道、共享内存、消息队列、信号量)
    # maven
    # select sort 选择排序
    # gitlab与git私钥公钥
  • 原文地址:https://www.cnblogs.com/xiannvyeye/p/10738246.html
Copyright © 2011-2022 走看看