6.28日开始,进入小学期,也就是在10天十天时间内集中练习,以提高编程能力。此次小学期的作业共有十道题,其中分为四大类,系统类,数学类,游戏类,链表类。

       我开始的时候面对第一,二题,系统类,因为当时感觉难度有一些高,而且当时对系统并没有什么概念,就跳过了这两道题,然后感觉第三题空间点线面也有一点复杂,就直接先写了第四题,三角形类别的判断,因为以前做的题有些类似,就用点点之间的距离判断三角形的类别,也是没有太高的难度,于是就写出了这道题。然后就到了游戏类,就先挑了其中难度最小的石头剪刀布,理解题意之后发现完成它需要一个随机函数rand(),但是后来发现每次电脑所给出的结果都是固定的,之后在网上搜索发现要实现真正的随机要在头文件中添加ctime,然后还要在随机函数rand()之前加上srand(time (0))才会实现真正的随机函数。完成之后就开始写猜数字,猜数字这道题,共需要两个主题的函数,其中一个就是刚才说到的随机函数,还有一个就是计时函数,之后我就在网上花了一段时间去学习理解计时函数的原理。计时要现在头文件添加time.h,C++中的计时函数是clock(),而与其相关的数据类型是clock_t  。函数定义原型为:clock_t clock(void) ,其中计算的时间是以系统的时间的为准,系统时间是以毫秒来计算的,所以要换算成我们平时所常用的时间单位,秒,还要运用自带的转换公式 :clock() - now)/CLOCKS_PER_SEC,其中clock_t now = clock();表示的是当前时间,而CLOCKS_PER_SEC是一个换算大小,具体意义,并不了解。计时与随机都完成之后两者结合就完成了。

      我也不知道究竟过了多久,也不知道要有多才能睁开入门的双眼。这几天一直在正慢慢挣扎。人机下棋,这道题考虑的条件比较多,其中影响深刻的是两个选项,先后下,用什么其中,我在主程序运行开始输入两个数字来选,来确定循序,避免麻烦;之后就是怎么让电脑下之前没下过的,我就为每个棋格做了标记,解决了这个问题。之后我就开始进入链表类,因为之前只在上个学期接触链表的表面只是,于是我花了半个下午的时间的学习了链表的知识,原理,结构,创建,删除,添加,同时也完成了整数链表,还了解到动态内存的使用和动态内存的删除。之后就写约瑟夫退圈问题,与之前的区别就是从单向链表变成环状链表,没有指针指向null,因此循环的结束条件也就有了变化,但是通过努力解决了。之后就是通讯录信息管理,通过前两道题链表知识的积累,只要将创建,删除,添加等知识,运用到实际情况就可以了。到了这个时候,渐渐有了编程的感觉。

      然后我又回过头来看前两道相似的题,这是我发现都可以用结构体解决,但是用链表也可以。因为结构体还是用数组,我就想试试不用数组,用链表,我那个是解决将原链表排序,并生成新链表,并且不毁坏的问题,于是我又使用了链表的方法,我也学会了链表排序换数据不换p->next指针指向的方法技巧。最后就剩空间点线面的问题,其实本质并不难,只是数据有一些多,而且复杂,但是只要耐心写下去就可,共有15个小分支,但最后还是写出来了。

      这次小学期的收获还是有不少的,学习了链表,计时,随机,类与主函数的结构,最重要的还是有了编程的概念。

     收获不少,继续努力。

                                                                                                                                                                       

posted on 2019-07-07 15:33  迎新  阅读(244)  评论(0编辑  收藏  举报