数组运算器实验报告.docx
《数组运算器实验报告.docx》由会员分享,可在线阅读,更多相关《数组运算器实验报告.docx(29页珍藏版)》请在课桌文档上搜索。
1、数组运算器上机实验报告一,问题的描述1,一维数组的定义和使用2,循环结构和分支结构3,函数的定义和函数的调用4,数组作为函数的参数5,局部变量和全局变量6,数组处理技术(排序,插入,删除,查找,统计,逆置)7,数组作为实现算法的辅助工具(筛法求素数,约瑟夫环等)二,算法描述及分析0、退出:退出程序1、配置系统参数:确定数组长度12、生成样本数据1)用指定范围的随机数填充数组:调用库函数rand()实现随机数填充2)键盘输入:循环遍历数组赋值3)整个数组填同一个值:循环遍历数组赋值4)用等差序列填充数组:循环遍历数组赋值3、显示数组:循环遍历数组打印4、删除1)删除指定下标的元素:把指定下标后元
2、素挨次前移2)删除指定值的元素:先确定指定值元素下标,调用删除制定下标函数3)删除按指定下标区间的一组元素:把区间后元素挨次前移区间长度,并调整数组长度5、插入1)按指定下标位置插入新元素:先将指定下标后元素从后往前挨次后移,再更改指定下标处的值2)在有序数组中插入新元素:确定新元素应在位置,调用指定下标插入函数6、统计D求最大值:挨次比较2)求最小值:挨次比较3)求平均值:累加法4)求方差和均方差:调用平均值函数,利用方差和均方差公式7、查找1)普通查找:挨次与要查找元素比较2)二分查找:排序,利用二分法查找8、判断1)是否升序罗列:前项是否大于后项2)是否降序罗列:前项是否小于后项3)是否
3、全部相等:前项是否恒等于后项9、罗列数组元素1)排序:a.冒泡法b.选择法c.交换法2)逆置数组:先后对称交换数组值3)左旋数组:每次向左挪移一位,并将第一个值放置于数组尾4)右旋数组:每次向右挪移一位,并将末尾值放置于数组头10、数组的其他应用1)约瑟夫环:通过求余数循环遍历数组,挨次标记间隔的倍数下标的数组位置2)筛法求素数:判断2Jk间是否存在整除k的数三,程序结构的描述函数的描述voidprintarr(inta,intn);打印数组voidFillArray(int*a,intm,intn,int1);生成数组的随机样本数据voidConfigO;/S己置系统参数:数组元素个数、一行
4、打印元素个数、每一个元素的打印宽度等voidReverse(inta,intn);逆置数组voidinsert(inta,intn,intpos,intval);在数组中POS下标处插入新元素voidiDelete(inta,int1,intid);删除指定下标的元素voidvDelete(inta,int1,intid);删除指定值voidDeleteRange(inta,int1,ints,intt);删除s.t下标区间的元素intSearch(inta,intn,intval);查找值为VaI的元素,找到返回其下标,找不到返回Tinttsearch(intr,intn,intkey);i
5、ntisAsc(inta,intn);判断数组是否升序罗列intisDesc(inta,intn);判断数组是否降序罗列intisEqual(inta,intn);判断数组是否全相等intmmax(inta,intn);返回数组最大值的下标intmmin(inta,intn);返回数组最小值的下标voidfangcha(inta,intn);floataverage(inta,intn);计算数组的平均值voidInsert(int*r,intm,intn,int1);voidOrderinsert(inta,intn,intval);在有序数组中插入新元素保持有序性voidbubblesor
6、t(intr,intn);冒泡排序voidselectsort(intr,intn);选择排序voidexchangesort(inta,intn);交换排序intSearch(inta,intn,intval);普通查找voidnizhi(inta,intn);逆置数组voidLeftRotate(inta,intn,intm);左旋m位voidRightRotate(inta,intn,intm);右旋m位voidjosephus(intman,intn,intc,intm);约瑟夫环voidjuzhen(intc100);自选功能矩阵乘法voidsushu(inta,intn);筛法求素
7、数函数间调用关系的描述voidvDelete(inta,int1,intid)inti;for(i=0;il;i+)if(ai=id)iDelete(a,1,i);调用删除指定下标函数i;1一;)printf(改变后数组为:n);printarr(a,1);)voidfangcha(inta,int1)inti;doublef,b;floatm-0,x;x=average(a,1);调用average函数for(i=0;iai;i+);k=i+l;Insert(a,val,k,1);)if(isDesc(a,I)=I)调用是否降序罗列函数(for(i-0;valai;i+);k=i+l;Ins
8、ert(a,val,k,1);调用插入函数)inttsearch(intr,intn,intkey)intlow,mid,high,i0;Iow=O;highn1;if(isAsc(r,n)=l)调用是否升序罗列函数(while(lowrmid)IOW=Inid+1;elseif(key=rmid)return(mid);)elsehigh二mid1;)return(-1);)if(isDesc(r,n)=l)调用是否降序罗列函数(while(low-high)mid=(low+high)/2;if(keyrmid)low-mid+1;elseif(key=-rmid)return(mid);
9、)elsehigh=mid1;)return(-1);)四,调试分析1,tsearch函数中的if语句不能涵盖所有情况,会浮现warning2,存在隐式类型转换,可能丢失数据3,删除和查找指定值函数在存在相同数组值时不能全部识别4,其他一些问题五,测试数据及结果分析数组运算器的分级菜单:0,退出0.退出L配置系统参数2.生成样本数据*3.显示数组4*除5,插入*6.统计*7.查找*B.判断*9.排列数组元系*10歌组的其他应用11.自选应用*请选择O-Tl:0Pressanykeytocontinue1、配置系统参数2、生成样本数据1)用指定范围的随机数填充数组谓选择(ATi:2D用指定范围的
10、随机数填充数组2)键盘输入3)整个数组填同一个值4)用等差序歹IJji充数组i怪1)4)1般人随机数范围:1100选搔5-11:3268351702)键盘输入旌搽1)-4)P13457恸选捺011:313457ltetS全部蹄选探1)7)%相等(重置数组为44444)选择1)7)3全部晦9、罗列数组元素1)排序每次均重置数组为(14273)a.冒泡法请选择0-11:91排序2)逆度黔组3)左族数组4)右旋的组选择I)Y)1D泡法2)选择法3)交换法选择A3)改变后数组为:74321b.选择法法法法3)泡择换)-官选交Il2改变后数蛆为:74321c.父换法选择1)-4)去去去3)海能撼)-30
11、1送交513改变后数组为:743212)逆置数组请选择1)排序2)逆凿数组3)左旋数组4)右旋数组选揖)-4)2改变后数组为:123473)左旋数组请选捺O11:9D排序2)逆更拊组3)左旋数组4)右旋数组选捺1)-4)左旋位教:3改变后数嵬为:471231)约瑟夫环请选择071: 10D约新夫环2)施法求素数选择1)2)3788682387597383995960409774114161128342138962144375l9344166384174576186446199990I4765217748228566234996247850I679426518627685228799129536
12、915431907032658733总人数,起始位置和报数间隔:1823约慈天环:9856341718123557392364725852)筛法求素数重置数组为(71234)者选径O-11;101.)约赫夫环O的法求素数班1)-2)Ik其他自选功能矩阵乘法请选择H:11矩阵乘法临入相乘矩阵的行列数(如3*2与2*4数组相篥愉A“324):323输入第一个数组:输入第1行元素:1,谕入第2行元素:3涌入第学亍元素:5除入第二个数组:菌入第1行元装1瑞入笫2行元素;2结果为;555111111171717六,实验体味,心得和意见1程序结构要清晰。2函数的参数表和返回值设计要合理3要养成良好的编程风
13、格和习惯4掌握大型程序的调试和测试方法5要学会分段调试程序6要学会选择不同的样本数据检测软件中可能存在的问题。七,改进空间1交互界面和用户体验还需要改进2程序兼容性不强3查找、删除函数可以采用更高级算法减少计算量八,源程序代码菜单框架#includestdio.h#includezztime.h#includestdlib.h#includemath,h”voidprintarr(inta,intn);打印数组voidFillArray(int*a,intm,intn,int1);生成数组的随机样本数据voidConfigO;配置系统参数:数组元素个数、一行打印元素个数、每一个元素的打印宽度等
14、voidReverse(inta,intn);逆置数组voidinsert(inta,intn,intpos,intval);在数组中PoS下标处插入新元素voidiDelete(inta,int1,intid);删除指定下标的元素voidvDelete(inta,int1,intid);删除指定值voidDeleteRange(inta,int1,ints,intt);删除s.t下标区间的元素intSearch(inta,intn,intval);查找值为Val的元素,找到返回其下标,找不到返回7inttsearch(intr,intn,intkey);intisAsc(inta,intn)
15、;判断数组是否升序罗列intisDesc(inta,intn);判断数组是否降序罗列intisEqual(inta,intn);判断数组是否全相等intmmax(inta,intn);返回数组最大值的下标intmmin(inta,intn);返回数组最小值的下标voidfangcha(inta,intn);floataverage(inta,intn);计算数组的平均值voidInsert(int*r,intm,intn,int1);voidOrderinsert(inta,intn,intval);在有序数组中插入新元素保持有序性voidbubblesort(intr,intn);冒泡排序v
16、oidselectsort(intr,intn);/选择排序voidexchangesort(inta,intn);交换排序intSearch(inta,intn,intval);普通查找voidnizhi(inta,intn);逆置数组voidLeftRotate(inta,intn,intm);左旋m位voidRightRotate(inta,intn,intm);右旋m位voidjosephus(intman,intn,intc,intm);约瑟夫环voidjuzhen(intc100);voidsushu(inta,intn);intmain()(int1,n,i;intal,d;数值
17、输入inta100=0;intb1000=0;intc100100;while(l)Printf(n*n)printf(0.退出*n);Printf(1.配置系统参数*n,z)printf(z,2.生成样本数据*n)printf(zz3.显示数组*11/z)Printf(4.删除*n)printf(5.插入*n,z)printf(6.统计*n)printf(7.查找*nzz)printf(8.判断*n)Printf(9.罗列数组元素*n,z)printf(zz10.数组的其他应用*n)printf(,11.自选应用*n);Printf(*n);printf(请选择O11:);scanf(%c,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 运算器 实验 报告

链接地址:https://www.desk33.com/p-558760.html