如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
学号:1108000251姓名:蔡福平班级:11网络2班时间:2012.9.14成绩实验一实验题目:数组的循环移位****一、实验目的(1)回顾C++的基本知识(2)理解并分析不同算法的时间和复杂度二、实验内容对于一个给定的字符型数组循环左移i位,要求尽量不要申请空间,实现“原地”操作。三、设计与编码1、基本思想把字符数组看成数组ab转换成数组ba(a代表数组的前i个元素,b代表数组中余下的n-i个元素),先将a逆置得到a~rb,,再将b逆置得到a~rb~r,最后将整个a~rb~r逆置得到(a~rb~r)~r=ba。2、C++代码:#include<iostream>#include<string>#include<sys/timeb.h>usingnamespacestd;voidreverse(inti,intj,charch[]){charx;while(i<j){x=ch[i];ch[i]=ch[j];ch[j]=x;i++;j--;}}intmain(){timebt1,t2;longt;ftime(&t1);intn,m,k;charch[20];cin>>n;while(n--){cin>>m>>ch>>k;cout<<"请输入数组的长度(1~20):"<<m<<endl;cout<<"请输入"<<m<<"个字符数组元素:"<<ch<<endl;cout<<"请输入数组左移循环的位数(1~"<<m<<"):"<<k<<endl;cout<<"原字符数组:"<<ch<<endl;reverse(0,k-1,ch);reverse(k,m-1,ch);reverse(0,m-1,ch);cout<<"循环左移后的字符数组为:"<<ch<<endl;}ftime(&t2);t=(t2.time-t1.time)*1000+(t2.millitm-t1.millitm);cout<<t<<"毫秒"<<endl;return0;}四、调试与运行1、调试时遇到的主要问题及解决运行时间会一直的变动,基本上是16,31,32这几个数变动,不解,应该没有什么太大关系吧!!2、运行结果(输入及输出,可以截取运行窗体的界面)输入18abcdefgh3输出五、实验心得通过这次实验,我认识到了我的不足,也懂得了很多。在之前,只是一直盲目的跟着书本上的东西打,就像打字一样,不用思考,也不会实际应用。通过这次实验,让我们有了实践的机会。同时也复习了一些C++的知识,让我更加熟悉这些简单语句,也通过书上的很多错误来敲醒我的盲从,学习必须脚踏实地,多写程序,多实践,才是进步的法门。从一次次实验的失败到一次次找办法解决冲突,让我更加学会如何借助帮助文件以及和同学交流来解决问题。这次实验我受益匪浅啊!谢谢学校给我提供了这么好的环境,也谢谢老师对我们的细心指导,老师您辛苦了!