免费预览已结束,剩余4页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北航计算机软件基础实验报告计算机软件基础上机实验报告(一)XXXXXX班 XXX 100211891.实验目的掌握线性表在顺序分配下的插入与删除运算;掌握线性表的链式存储结构;掌握插入排序的方法;并掌握一种产生随机数的方法。2.实验内容1产生1000个0至999间的随机整数,并以产生的次序存入一个数据文件中。2编制一个程序,依次实现以下功能:(1)定义一个有序(非递减)线性表,其最大容量为1000,初始时为空。(2)从由1产生的数据文件中依次取前N个随机整数,陆续插入到此线性表中,并要求在每次插入后保持线性表的有序性。最后将此有序线性表打印输出。(3)在由(2)产生的线性表中,依在1中产生的次序逐个将元素删除,直至表空为止。3以N=100及N=400分别运行2的程序,并比较它们的运行时间。4编写一个程序,用插入排序依次将1中产生的1000个随机整数链接成有序链表(不改变原随机数在存储空间中的顺序)。3.源代码与运行结果#includestdio.h#includestdlib.h#includetime.h/*1_1产生1000个0至999间的随机整数,并以产生的次序存入一个数据文件(1_1.txt)中。*/main() FILE *fo=fopen(1_1.txt,w); int i,j; srand(unsigned)time(0); for (i=0;i=999;i+) fprintf(fo,%dn,rand()%1000); fclose(fo); printf(1000个随机数已输出至目录下1_1.txt文件n); system(pause);输出文件1_1.txt如下:(因输出文本长度缘故,此处只截了一幅图)#includestdio.h#includestdlib.h#includetime.h/*1_2从数据文件(1_1.txt)中读取数据,进行插入排序,然后屏幕输出。再依序删除。 1_3以N=100及N=400分别运行2的程序,并比较它们的运行时间。*/#define N 1000main() int aN=0; int i,j,m,w,num=0; FILE *fi=fopen(1_1.txt,r); clock_t start,finish; double duration;/Part 1 : start=clock(); m=0; fscanf(fi,%d,num); a0=num; w=m; for (j=1;j=N-1;j+) w=m; fscanf(fi,%d,num); while (awnum)(w=0) w-; w+; for(i=m;i=w;i-) ai+1=ai; aw=num; m+; finish=clock(); duration=(double)(finish - start)/CLOCKS_PER_SEC; printf(执行 %d 个数据插入操作完成!用时:%f 秒,得到线性表如下:n,m+1,duration); for (i=0;iN;i+) printf(%d ,ai); fclose(fi); /Part 2 : start=clock(); for (j=0;j=N-1;j+) w=0; fscanf(fi,%d,num); while (awnum) w+; for(i=m;im;i+) ai=ai+1; am=0; m-; finish=clock(); duration=(double)(finish - start)/CLOCKS_PER_SEC; printf(nn删除操作完成!用时:%f 秒,得到线性表如下:n,duration); for (i=0;iN;i+) printf(%d ,ai); printf(n); fclose(fi); system(pause);程序运行输出结果如下:(因输出文本长度缘故,此处只截了两幅图)#includestdio.h#includestdlib.h/*1_4编写一个程序,用插入排序依次将1_1.txt中的1000个随机整数链接成有序链表(不改变原随机数在存储空间中的顺序)*/#define N 1000main()struct dataint num;struct data *next; ; struct data *n, *head, *temp;FILE *fi=fopen(1_1.txt,rt);int i,a=0;n=(struct data*)malloc(sizeof(struct data); n-next=NULL;fscanf(fi,%d,a);n-num=a;head=n;for (i=1;i=N-1;i+)n=(struct data*)malloc(sizeof(struct data);n-next=NULL;fscanf(fi,%d,a);n-num=a;temp=head;if (n-num)=(temp-num) / n为目前最小值n-next=temp;head=n; elsewhile ( (temp-next)!=NULL) (n-num) (temp-next)-num) ) temp=temp-next;if (temp-next=NULL) temp-next=n; / n为目前最大值else / n插入链表n-next=temp-next;temp-next=n; printf(插入排序完成n); printf(数据最小元素:%dn,head-num); printf(完整数据输出:n); temp=head; while (temp-next!=NULL) printf(%d ,temp-num); temp=temp-next; fclose(fi); system(pause); 程序运行输出结果如下:(因输出文本长度缘故,此处只截了一幅图)4.实验总结通过本次试验,我熟练掌握了线性表在顺序分配下的插入与删除运算,还有链表的存储结构、插入排序的方法,并且学习了产生随机数、文件数据输入输出、取得当前系统时间的方法。 srand函数用来将系统随机种子设定为当前时间(强制转化为unsigned),否则得到的伪随机数每次都相同,而rand()%1000则用来产生1-999的伪随机数。 在添加time.h库函数后,可以使用clock_t类型变量和clock()函数获取当前时间,从而进行程序运行时间计算(但精度貌似较低)。到每过千分之一秒,clock()函数的返回值就会增加1,而常量CLOCKS_PER_SEC,它用来表示一秒钟有多少个时钟计时单元,故duration=(double)(finish - start)/CLOCKS_PER_SEC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文物保护工程从业资格真题解析(带评分标准)
- 文物保护工程从业资格真题模拟测试(含答案)
- 大班安全教案打雷时
- 酒店安全部培训
- 2026年内科主治医师(内科学)考试题库及答案
- 金属加工企业安全管理员日常检查安全操作规程
- 线上2026年防损员专项培训协议
- 建筑工地应急低温施工规程
- 学校食堂错时就餐方案
- 互联网广告数据保护合同(2026修订)
- 简单的详细房屋抵押合同模板7篇
- GJB1032A-2020 电子产品环境应力筛选方法
- 血透室水处理维护课件
- 工会经费审计条例课件
- 2025年机关事业单位工勤技能人员职业道德试题及答案
- 镀锌工安全教育培训手册
- 第三届全国技能大赛竞赛(软件测试赛项)选拔赛备考试题(附答案)
- 消化道出血的业务学习
- 代收货款合同
- JJF(皖) 223-2025 测量用电力电压互感器在线监测技术规范
- 旋挖钻机操作保养手册(已定稿)最后修改
评论
0/150
提交评论