首页 > 其他 > 详细

第二次博客作业

时间:2018-12-07 22:21:15      阅读:164      评论:0      收藏:0      [点我收藏+]

1  目前自己学习中存在的薄弱的知识点具体有哪些?每个薄弱的知识点都是如何获知的,每个薄弱的知识点需要列举具体的例子说明。(5分)

答:最薄弱的地方应该是指针这一块内容,觉得搞不懂为什么要应用指针的形式来编写代码,感觉到十分复杂,有点晕乎乎的,能弄清楚指针的大概含义但是不习惯用它,感觉在内容和地址之间绕来绕去有点懵;

对于数组名作为函数实参还不太熟练,还需要花长时间去理解代码(eg.冒泡法排序)

 

对于这些出现的问题,我觉得应该花更多的时间去理解课本上的基础内容然后自己再练习,尽量做到能熟悉掌握运用,指针是C++的一大难点,有问题应该比较正常,要慢慢去解决自己的问题,不会多问同学和老师。

 

 

2  从第五章函数到第七章数组的函数题和编程题(主要是在PTA)中选出至少一道你觉得比较有挑战的题(已解决且不是奇奇的题)。写出解题报告包括:(1)题目大意;(2)解题思路;(3)代码思路,比如画出流程图;(4)核心技术总结;(5)解题过程中存在的问题,以及如何得到解决的。(5分)

 

7-1 数组元素循环右移问题

(1)      题目大意:将数组中的元素按顺序往右移动位置,并把开始时位于移动位置之前的数顺序放到末尾

(2)      解题思路:在输入的时候就判断移动之后每个元素的位置,直接输入到指定位置之后输出

(3)      代码思路:自定义一个函数,将具有n个元素的数组元素循环右移m位。N是数组大小 ,m是循环右移的位数。将原数组看成两部分,一部分下标从0到n-m-1,进行数组元素的反转,另一部分下标从n-m到n-1,进行数组元素的反转;最后进行整个元素的反转。

 

#include <iostream>

int main(){

  int m=0,n=0,i=0,t=0,j=0;

  int a[100];                                        //定义变量,数组

 cin>>n>>m;

  for(i=0;i<n;i++){

    cin>>a[i];

  }                                                   //输入

  m=m%n;                                      //特别注意有可能有M>N的情况

 for(i=0;i<m;i++){

     t=a[n-1];                                  //把最后一位赋给t,        向后推m位就是进行m次循环

   for(j=n-m;j>=0;j--){

       a[j+1]=a[j];

   }

   a[0]=t;                                     //剩余的依次向后推以为

}

Cout<<a[0];                   //保证行末没有空格,先把a[0]输出

    for(i=1;i<n;i++)

    cout<<a[i];

  return 0;}

 

(4)      核心技术:找到元素位置对应关系

(5)      存在问题:找不到最简洁的方法,找不到移动部分位置间的关系。

解决方法:学习借鉴网络上的代码,根据结果跟自己已经写出的代码进行对比改正,特别是注意m%n这个问题,还有最后输出的空格问题,最后就是不断地编译改正,小心的写代码了。

第二次博客作业

原文:https://www.cnblogs.com/zhangling0814/p/10085539.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!