《北方工业大学C语言实验实验一排序查表程序设计.docx》由会员分享,可在线阅读,更多相关《北方工业大学C语言实验实验一排序查表程序设计.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验一排序查表程序设计总分班级:姓名:序号:日期:地点:【实验内容】-将Sin定义成一个双字节表(定义方式可参考实验指导书),用查表方式编程实现将所有位数存入以 newSin数据表中,将用冒泡法对学号数据进行按从大到小进行排序,然后排序后的数据存入片外RAM 区域。1预习(共30分)出勤情况(5分)注:迟到扣2分,无故缺席不请假补做实验的实验成绩按80%计算参考实验指导书填写表2.1(5分)表2.1位数与数字对应表X020406080100Sin (x)00.342020143 0.64278761 0.866025404 0.984807753 0.984807753给出根据上表中数据用的u
2、nsigned char数据表(5分)float mySin = 0,0. 342020143,0. 64278761,0. 866025404,0. 984807753,0. 984807753,0. 866025404,0. 64278761,0. 342020143,0;(4)参考指导书中图2绘制预编程序流程图(10分)根据数组下标,进行查表外循环i (0n-1)外循环i (0n-1)结束预编源程序(5分)#includeftinclude float mySin = 0, 0. 342020143, 0. 64278761, 0. 866025404, 0. 984807753,0.
3、984807753, 0. 866025404, 0. 64278761, 0. 342020143, 0):float data char newSin10=0;void main ()unsigned char i=0,j=0;for (i=0;i10;i+)newSini=mySini;for (i=0;i10;i+)(for(j=i+l;j10;j+)if (newSininewSinj)float temp;temp= newSini;newSini=newSinj;newSinj=temp;while (1);2 .操作(共40分)注意所填数据的进制标记要写全,只有十进制数标记可省
4、略。实验记录1( 10分)运行查表程序,翻开数据存储器窗口,将查表结果记录于表2.2。表2.2查表结果变量mySinnewSin*1* J地址0x08X:000x300x31实验记录2(20分)运用* *等操作命令记录排序前、一次冒泡后和最后排序完成数据,一次冒泡数据是指内循环 结束时的数据(即最小数排到最后一个单元时的数据),记录于表2.3。表2.3学号排序表表2.3数字排序表mySin地址0x080x0c0x100x140x18Ox 1c0x200x240x280x2c排序前00.3420201430.642787610.866 0254 040.984 8077 530.98480775
5、30.866 0254 040.642787610.342 0201 430一次冒泡0.984 8077 5300.342 0201 430.642787610.866 0254 040.984 8077 530.866 0254 040.642787610.342 0201 430排序完成0.9848077530.9848077530.866 0254 040.866 0254 040.642787610.6427876 10.3420201430.34202014300(3)实验记录3( 10分)翻开程序存储器窗口,找到本人学号各位数据所在单元地址填于表2.4中。2.4数字NewSin单元
6、地址NewSin地址X:0x 00X:0x 04X:0x 08X:0x 0cX:0x10X:0x14X:0x18X:0x1cX:0x20X:0x 240.9840.9840.8660.8660.6420.6420.3420.342数据8077807702540254787678760201020100535304041143433 .报告(共30分)(1)运行正确的源程序(10分)注:假设源程序流程图与预习报告中流程图不对应,那么还要给出与之对应新的程序流程图;假设源程序与预习程序完全相同可不用重写,但此页应需标注,否那么不予给分;写不下可另行附页或写在此页反面,写在反面请进行标注提示。源程序
7、与预习程序完全相同实验所使用的仪器设备和软件调试工具(5分)本次实验硬件用到了实验室内电脑,软件那么为keil C51(3)假设将本实验中将排序按从小到大排序,程序将如何修改?只写出(1)中修改局部即可不用写完整程序,重复语句可用省略号代替。注意数据相等的情况。(5分)#includeftinclude float mySin = 0, 0. 342020143, 0. 64278761, 0. 866025404, 0. 984807753, 0. 984807753, 0. 866025404, 0. 64278761, 0. 342020143,0;float data char new
8、Sin10=0;void main ()unsigned char i=0,j=0;for (i=0;i10;i+)newSini=mySini;for (i=0;i10;i+)(for(j=i+l;jnewSinj)(float temp;temp= newSini;newSini=newSinj;newSinj=temp;)while (1);)(4)实验心得(5分)经过本次实验首先老师进行了相关方法的演示,然后更改了例行程序中的错误。我了解并 学习了 C语言排序查表的程序框架,以及动手实践了在运行查表程序的情况下记录相关数 据。使用了一次冒泡的方法记录程序。(5)书写工整(5分)本实验非手写备注:内容写不下可另行附页