实验报告1约瑟夫环(2)

2019-03-21 16:23

郭艳慧 实验一 线性表 08-10-20

同样的,对于m的输入,这里也有两种情况,只是在程序中表现为,无论你是否输入,m先都已经随机产生,当你自己输时,它就被覆盖掉了,感觉还是很优化的。毕竟,当我们用电脑产生随机数时,它的位数将达到五位,这对于程序的代码测试,几乎不可能!这里,我们手动输入(当然,只有1才行)!

这个是结果,界面还算整齐!经检验,正确!

3.接下来,让电脑产生数据试试。

最终结果如下:

6

郭艳慧 实验一 线性表 08-10-20

一样的界面,只是随机产生的数所比较大而矣!

另外,不知道大家是否注意到了,结果中的屏幕已经被刷新过了,这就是system(“cls”);的功劳,通常一屏显示不下时就可以调用这个函数进行刷屏!还有,最后那句press any key return!这个是getchar();导致的,因为这样才能保留结果,不必再调用user screen命令查看结果!。

4.对于所有的运行状况这里都进行了讨论,程序个人感觉还算完善!至于其他的问题,将在下面得到讨论。另外,我用vc跑过这个程序,这样得到了一个可执行文件,运行起来跟真的一样,不妨双击试试!

五、调试和运行程序过程中产生的问题及采取的措施:

问题1:环境的使用,这个,因为TC环境对于很多快捷键乃至修改、撤消的限制,所以用起来相当困难,也不喜欢它。

解决:这个就得益于平时对其他工具的使用了,比如,用记事本打开,就可以方便的复制粘贴,查找替换;用VC编辑代码就更容易保持其格式化,而且,理所当然的,更容易发现问题所在!还有,对于注释的编写,因为在TC中,是无法实现汉字输入的,所以,没有记事本和其他工具的帮助,真的可以说是困难重重!

问题2:typedef使用时CLinklist H;这句始终都得不到通过。

解决:查了好多资料,也试了好多方法,结果,居然发现是Lnode拼成了Londe,唉,不该??

问题3:对于函数*crt_CLinkList的报警,更是让我好一阵子百思不得其解。 解决:尝试很多改法,居然发现问题是CLinklist中的l打成了I,又是一阵汗??

问题4:数据分布问题,这个主要是表现在界面没有滚动条,以致大部分数据不得见!

解决:一方面调用system(“cls”);函数,进行刷屏,这样,就可以把没必要的内容提前清掉;另一方面,我对界面布局进行改造,正如上面的结果所示,由原来的一行一个改成了一行5个,这样,至少可以做到一屏之内装下所有的数据。

问题5:有返回与无返回的区别。这个确实给我的调试带来了相当大的阻力。因为对于链表的定义,一开始就定义为全局的,所以在函数中修改后,自然的,我们会认为它已经实现了更改,再传回去根本多此一举。所以,对于,最终的传参,我用crt_CLinkList(H,n);结果,报警不断!

解决:对于指针函数,有返回就一定有接收,跟无返回的有本质的区别,你即然是有返回的函数,对传递过去的参数不接收就一定有问题。最后,我改成了H=crt_CLinkList(H,n);

问题6:对于老师关于“主程序处理参数输入与显示”的说法,我觉得可能有手动输入的意思!我当时的程序,所有的数据都是电脑random出来的。

7

郭艳慧 实验一 线性表 08-10-20

解决:加入一个j变量,让用户进行选择,是否手动输入,若为1即手动,此时再建一个手动输入的语句段;若为0,由电脑自动生成,结果,运行良好!

问题7:因为VC跟TC的区别,每次运行完后,TC自动关闭窗口,看不到结果!

解决:这个最终用getchar();实现了!当然,后来还发现问题依旧在,这是因为,最后输入数据的同时,按了enter键,这个对于getchar()来说,一样截获,换言之,getchar就无效了。最后用了两个getchar();终于达到了效果!

问题8:模块抽象问题,主要是一开始编时并没有看提示,以至于结果只有一个函数(不包括main),当然,为了满足老师的要求,必须改动。

解决:从原函数中抽象出void locfor(CLinklist H,int m)模块,这样一来,整个程序感觉工整得多,当然,模块化的诸多好处这里就不再赘述了!

问题9:测试时,突然发现有的时候运行结果出现了不完整的现象,当时我还真是费解!

解决:后来发现m=1的时候就会出现问题,算是个BUG了,当m=1时,相当于是极值状况,即要进行自身结点删除,这个,在程序中表现为死循环,相当离谱!后来,我把m=1这个情况拿出来单独讨论!

六、对算法的程序的讨论、分析,改进设想,其它经验教训:

未解决的问题:

1. 未实现二进制文件的输入与输出设计,这个,确实感觉有些难。

2. 这个算是程序的BUG吧,就是每次要求输入数字进行选择时,如果输入其他字符就会出现死循环,这

个跟我设计的程序结构及变量类型有着莫大的关系,并不是不能实现。尝试过,感觉不容易。

改进设想:

在解决以上两个未解决的问题的前提下,我觉得如果可以的话,我们还可以进一步将这个程序做大,功能做全。比如说,data的总数多少之类的,我们都可以做到手动。这样,整个程序才会有较高的适应性!至于模块话问题的话,感觉只有在程序大的时候才会体会其优越性。

经验教训:

经过这次的实验学习,个人觉得对数据结构,算法学习方法又上了一个台阶。详细经验教训罗列如下: 1. 尤为重要的,代码编写时一定要小心手写之类的错误,可能你一个字母的问题就会无故导致程序

运行时的几十个error!这次,我算是做了“反面教材”了!

2. 对于程序的模块话,我们之前就应该设计好,尽量让自己的代码达到较高的复用性! 3. VC、TC、记事本等工具的灵活运用。个人觉得是工具的话,都该为我们服务,哪个方便就用哪个。

工具是死的,人才是活的。

4. 真正开始后才会发现编码工作其实没自己之前想的那么难,正所谓万事开头难。 5. 界面美观,代码条理,注释清晰??细节决定成败!

8


实验报告1约瑟夫环(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:句式变换考点知识清单

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: