一元数组运算器试验报告_第1页
一元数组运算器试验报告_第2页
一元数组运算器试验报告_第3页
一元数组运算器试验报告_第4页
一元数组运算器试验报告_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数组运算器实验报告实验目的实现一个数组运算器实验要求一维数组的定义和使用,循环结构和分支结构函数的定义和调用数据处理技术(排序、插入、删除、查找、统计、逆置、左旋、右旋)数组作为实现算法的辅助工具(筛选法求素数、约瑟夫环)实验思路.定义一维数组首先配置数组大小,再填充数据。时间复杂度:O(n).显示一维数组输出数组每一个元素时间复杂度:O(n).数据处理调用排序函数、插入函数、删除函数、查找函数、统计函数、逆置函数、左旋函数、右旋函数对数据进行操作。时间复杂度:O(n).数组辅助工具调用筛选法求素数函数、约瑟夫环函数实现算法。时间复杂度:O(n)函数清单void p()/主菜单void p1(

2、)/配置数组大小void p2()/生成样本数据菜单void p21()/随机数填充数据void p22()/键入填充数据void p23()/填充同一数据void p24()/填充等差序列数据void p3()/显示数组void p4()/删除菜单void p41(int k)/删除指定下标的元素void p42(int k)/删除指定值的元素调用p41void p43()void p5()void p51()void p52sx()void p52jx()void p6()void p61()void p62()void p63()void p64()void p7()void p71(i

3、nt k)void p72(int k)void p8()void p81()void p82()void p83()void p9()void p91()void p911()void p912()void p913()/删除按指定下标区间的一组元素/插入菜单/按指定下标位置插入新元素/在升序数组中插入新元素/在降序数组中插入新元素/统计菜单/求最大值/求最小值/求平均值/求方差和均方差/查找菜单/普通查找/二分查找(首先保证有序)/判断菜单/是否升序排列/是否降序排列/是否全部相等/排列菜单/排序菜单/冒泡法(降序)/选择法(升序)/交换法(降序)void p92(int a,int A,

4、int B)/逆置数组void p93(int a,int top,int k)调用p92void p94(int a,int top,int k)/左旋数组/右旋数组调用p93void p10()void p101()void p102()测试数据/其他菜单/约瑟夫环/筛选法求素数具体效果由测试者体验,例如下图:调试分析调试时编写一个函数对其debug,减轻了后期调试压力。实验心得对一维数组的应用更加熟练;能加快编程速度和效率;能编写和调试 更长的程序。源程序清单#include#include#include#includeint a10000,top,i;#define FOR for(

5、i=0;itop;i+)void p()printf( -* 主菜单* -n);printf(0、退出 n);printf(1、配置系统参数n);printf(2、生成样本数据n);printf(3、显示数组 n);printf(4、删除n);printf(5、插入n);printf(6、统计 n);printf(7、查找 n);printf(8、判断n);printf(9、排列数组元素n);printf(10、数组的其他应用n);printf(请选择 0-10:);/配置系统参数生成样void p1()printf(请输入数组大小:);scanf(%d”,&top);void p2()本数据

6、printf(n1 )用指定范围的随机数填充数组n);printf(2 )键盘输入 n);printf(3 )整个数组填同一个值n);printf(4 )用等差序列填充数组(输入首项和公差)n);printf(请选择 1-4:”);)void p21()(int A,B;printf(请输入随机数的下限和上限:);scanf(%d%d”,&A,&B);srand(unsigned int)time(NULL);FOR ai=rand()%(B-A)+A;)void p22()(printf(请输入%d个数填充数组:,top);FOR scanf(%d,&ai);)void p23()(int

7、k;printf(请输入想填充的数据:);scanf(%d,&k);FOR ai=k;)void p24()int A,d;printf(请输入首项和公差:);scanf(%d%d”,&A,&d);a0=A;for(i=1;itop;i+) ai=ai-1+d;)void p3()/ 显示数组FOR printf(%-6d,ai);printf(n);)void p4()/ 删除printf(n1 )删除指定下标的元素n);printf(2 )删除指定值的元素n);printf(3)删除按指定下标区间的一组元素n);printf(请选择 1-3:);)void p41(int k)(for(i

8、=k;itop;i+) ai=ai+1;)void p42(int k)(FOR(if(ai=k) p41(i);)void p43(int A,int B)(for(i=A;ij;i-) ai=ai-1;aj=k;)void p52sx()(int k,j;printf(请输入插入值:);scanf(%d,&k);if(k0;i-) ai=ai-1;a0=k;else if(katop-1)(top+;atop-1=k;)else(FOR(if(aik)(top+;for(j=top-1;ji+1;j-) aj=aj-1;ai+1=k;)void p52jx()(int k,j;);prin

9、tf(请输入一个数,代表要插入的数:scanf(%d,&k);if(ka0)(top+;for(i=top-1;i0;i-) ai=ai-1;a0=k;else if(k=k)&(ai+1i+1;j-) aj=aj-1;ai+1=k;)/)void p6()统计printf(n1 )求最大值 n);printf(2 )求最小值 n);printf(3 )求平均值 n);printf(4 )求方差和均方差n);printf(请选择 1-4:”);)void p61()int k=0;FOR if(aiak) k=i;printf(最大值=%dn,ak);)void p62()int k=0;FO

10、R if(aiak) k=i;printf(最小值=%dn,ak);)void p63() (double s=0;FOR s+=ai;printf(平均值=%lfn,s/top);) void p64()(double v,f,t,s1=0,s2=0;FOR s1+=ai;s2+=ai*ai; v=s1/top;f=s2/top-v*v;t=sqrt(f);printf(方差=%lfn 均方差=%lfn,f,t);void p7()查找printf(n1 )普通查找 n);printf(2 )二分查找(首先保证有序)n);printf(请选择 1-2:”);)void p71(int k)(

11、int flag=0;FORif(ai=k) flag=1;if(flag=1)(FOR if(ai=k) printf(找到元素 d,下标为 %d,即 a%d=%dn ,k,i,i,k);)else printf(未找到元素 %dn,k);)void p72(int k)(int l=0,h=top-1,m;while(lam) l=m+1;else if(kam) h=m-1;else break;if(l=h)printf(找至址匕元素,下标为d,即 a%d=%d n,m,m,k);else printf(未找到此元素n);void p8()/ 判断printf(n1 )是否升序排列n)

12、;printf(2 )是否降序排列n);printf(3 )是否全部相等n);printf(请选择 1-3:);void p81()int flag=0;for(i=1;itop;i+)if(aiai -1) flag=1;if(flag=0) printf(是n);else printf(否n);void p82()int flag=0;for(i=1;iai-1) flag=1;if(flag=0) printf(是n);else printf(否n);void p83()int flag=0;for(i=1;itop;i+)if(ai!=ai-1) flag=1;if(flag=0) p

13、rintf( 是 n);else printf(否n);void p9()/排列数组元素printf(n1 )排序 n);printf(2 )逆置数组 n);printf(3 )左旋数组 n);printf(4 )右旋数组 n);printf(请选择 1-4:”);)void p91()(printf(n1,冒泡法(降序)2.选择法(升序) 3.交 换法(降 序)n);printf(请选择 1-3:);)void p911()(int j,t;for(i=0;itop-1;i+)for(j=0;jtop-i-1;j+)if(ajaj+1)(t=aj;aj=aj+1;aj+1=t;)void p

14、912()for(i=0;itop-1;i+)forQ=i+1;jaj) k=j;t=ak;ak=ai;void p913()inttj;for(i=0;itop-1;i+)for(j=i+1;jtop;j+)void p92(int a,int A,int B)int t,j;for(i=A,j=B;ij;i+,j-)t=ai;ai=aj;aj=t;void p93(int a,int top,int k)p92(a,0,k-1);p92(a,k,top-1);p92(a,0,top-1);void p94(int a,int top,int k)p93(a,top,top-k);void

15、p10()(printf(n1 )约瑟夫环 n);printf(2 )筛选法求素数n);printf(请选择 1-2:”);)void p101()(int n,m,k,pos,man10000;for(i=0;in+1;i+) mani=0;i=k=0;printf(总人数和报数间隔:n);scanf(%d%d,&n,&m);for(pos=0;kn;pos=(pos+1)%n)(if(manpos=0) i+;if(i=m)(i=0;k+;manpos=k;)printf(约瑟夫环:n);for(pos=0;posn;pos+)printf(%-6d%c,manpos,(pos+1)%10

16、=0)?n:);printf(n);)void p102()int j,n;char line10000;printf(求1-指定数之间的素数n);printf(输入一个数:);scanf(%d,&n);for(i=0;i=n;i+) linei=1;for(i=2;i=n;i+)if(linei)printf(%-6d,i);for(j=i+1;j=n;j+)if(j%i=0) linej=0;printf(n);)main()(int zhu,fu,k,A,B;while(1)(p();scanf(%d”,&zhu);if(zhu=0) return 0;if(zhu=1) p1();if

17、(zhu=2)(p2();scanf(%d,&fu);switch(fu)(case 1:p21();break;case 2:p22();break;case 3:p23();break;case 4:p24();break;)if(zhu=3) p3();if(zhu=4)p4();scanf(%d”,&fu);switch(fu)case 1:printf(请输入想删除的元素对应下标:);scanf(%d,&k);p41(k);top-;break;case 2:printf(请输入想删除的元素:);scanf(%d,&k);p42(k);top-;break;case 3:printf

18、(请输入删除的区间:);scanf(%d%d,&A,&B);p43(A,B);top=top-(B-A)-1;break;if(zhu=5)(P5();scanf(%d,&fu);switch(fu)(case 1:p51();break;case 2:if(a0=atop-1) p52sx();else p52jx();break;)if(zhu=6)(p6();scanf(%d,&fu);switch(fu)case 1:p61();break;case 2:p62();break;case 3:p63();break;case 4:p64();break;)if(zhu=7)(p7();scanf(%d”,&fu);switch(fu)(case 1:printf(请输入想查找的元素:);scanf(%d,&k);p71(k);break;case 2: printf(请输入想查找的元素:);scanf(%d,&k);p72(k);break;)if(zhu=8)(p8();scanf(%d,&fu);switch(fu)(case 1:p81();break;case 2:p82();break;case 3:p83();break;if(zhu=9)(p9();scanf(%d,&fu);switch(fu)(case 1:p91();scanf(%d,&f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论