寒假做业三

github连接

githubgit

提交日志截图
github

文件读写学习过程与心得

c语言课本的第十章详细的介绍了c语言中如何对文件进行输入与输出,学习课本后我总结了一些要点:算法

  • stdio.h头文件中有对FILE结构体类型的声明,在程序中能够直接用FILE类型名定义变量,如FILE f1;,定义了一个结构体变量f1用来存放一个文件的有关信息,FILE * fp;定义一个指向文件类数据的指针变量。
  • fopen(“文件名”,“使用文件方式”);其返回值为指向文件的指针(文件信息区的起始地址),其中比较重要的使用文件方式有“r”只读,“w”只写,“a”追加。
  • fclose(文件指针);关闭文件使文件指针再也不指向文件。
  • 格式化的方式读写文件:
    • fprintf(文件指针,格式控制符,输出列表);
    • fscanf(文件指针,格式控制符,输入列表);
      学习完这些完成本次做业的文件输入输出绰绰有余。

git commit信息的学习心得和体会

我以为commit信息主要先掌握 : 这个最简单的说明。 框架

  • type用来表面用途/说明意图,主要有:
    • feat:新功能
    • fix:修补bug
    • docs:文档
    • style: 格式(不影响代码运行的变更)
    • refactor:重构(即不是新增功能,也不是修改bug的代码变更)
  • subject是对本次commit目的的简短描述。

编码历程

此次题目是上一次题目的升级版,因而我按照上次做业的思路开始构建框架,我先构造了两个结构体类型分别表明指令和电梯,此次学习过文件的输入输出后,我运用fprintf函数构造了一个专门用来输出的Print函数,方便在其余功能中的调用,再按照老师提示构造了一个taximode函数,这个函数的功能是用来实现电梯接到一个乘客就直接把乘客送到目的地,途中再也不响应其余乘客的需求也就是顺序执行指令,这里出现了一个bug,在该函数中我调用了Print函数,Print函数须要一个文件指针做为参数,可是我没有再taximode中定义,而是再main函数中定义,我将mian中的定义移到taximode函数中,完成了bug的修复。
  我作了一个在时间上的优化将指令按照时间排序,构造了一个Exchange函数来实现这一功能,用冒泡排序后进行了测试,而后我又进行了对重复指令过滤的优化,相同的指令若是直接使用taximode的话会被屡次处理,我设计了一个对比函数用来实现对两条指令的对比,先无条件执行排序后的第一条指令,再用循环和条件语句来一直判断该指令和后一条指令是否相同,相同则不处理后一条,不相同则处理后一条,并进行了测试,测试是出现了一个bug,经过debug,我发现我跳了一次循环,我发现我忘记了continue完,进入到下一循环for时,会先i++完再进入循环体,本身再循环体中加了i++,致使了会跳过循环的bug,修复后又进行了测试。我又想了想同一层上同一层下的优化问题,按照现实生活中的状况,他仍是要进入电梯按一下的,电梯也是会停留一秒的,因此问题不是很大。
    关于busmode和进一步的优化,我想了一些可是和个人程序的切合度不是很高就被我推翻了,到如今仍是想不出一个很好的算法来解决这个电梯难题。
代码行数 bug数 耗时
113 6 17h

相关测试与运行结果

  • 对排序函数的测试
    测试该函数是否使命令按照时间顺序执行。


第一组为五条按时间顺序的命令,第二组为前五条打乱事后的数据,输出结果比较,发现彻底相同,排序函数的功能正常。函数

  • 对过滤重复命令这一功能进行测试
    测试是否可以成功过滤相同的命令。


两次测试后重复的部分都被过滤了,过滤功能正常。学习

相关文章
相关标签/搜索