版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计与实践实验部分成绩评定 2实践与提高部分 2实验一:随机数及其应用 2实验二:个人资金账户管理 3实验三 自动售货机 7实验四:自动寄存柜 8实验五:停车场管理 9实验六;学生成绩管理 9实验思考题 1:完美的代价 10实验思考题 2:值班安排 11文档命名格式 12实验报告模板: 13成绩评定本课程的总评成绩评定标准为:总评成绩 =60%实习课程成绩 +40%上海市二级考成绩一般上海市二级考成绩不低于45分才能总评合格,该最低成绩视当年上海市二级考合格率做调整(上海市二级考合格率在50~60%波动)。关于不及格学生的成绩处理:本课程没有补考。不及格学生需重修获得总评合格成绩。重修成绩按以上评定标准,其中原计算机二级考成绩不及格的,需再次参加上海市高等学校计算机二级考(C语言),获得考证成绩,进行总评成绩评定。实践与提高部分实验一:随机数及其应用① 设计一“真随机数”函数:intMyRandom(intn,intm);功能:n<m,随机产生n~m之间的整数,要求每次调用返回一随机数,均匀分布在n~m之间,注意程序每次运行,其产生的随机数是不同的。注:真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。而C语言中的随机函数rand()是按照一定算法模拟产生的,其结果是确定的,是可见的。我们可以这样认为这个可预见的结果其出现的概率是100%。所以用计算机随机函数所产生的“随机数”并不随机,是伪随机数。而本题要求为不可预见的真随机数。可参阅网络或图书参考资料,并在实验报告中列出参阅资料原文。②主程序中循环调用 10000次MyRandom(1,100),求随机数分布情况。如:1:102次2:95次3:98次100:94次并输出随机数落在1-50区间和51-100区间的次数。如:1-50:5010次51-100:4990次③制作一“35选7”福利彩券摇奖器,即:每次运行,随机产生7个1~35的不重复的整数。第2页④制作一“x选y”通用福利彩券摇奖器,即:每次运行,随机产生y个1~x的不重复的整数。要求交互良好,使用方便。附:随机函数实例#include<stdio.h>#include<time.h>#include<stdlib.h>intmain(){srand(time(NULL)); //随机函数初始化printf("%d\n",rand()%100);//产生一个0-99的随机数return0;}实验二:个人资金账户管理阅读下列“资金账户的管理”程序,对程序进行调试、改错,并增加函数,使之符合如下具体功能。2017-09-09①资金账户的信息统一放在随机文件中,该随机文件包括的数据项有记录 ID、发生日期、发生事件、发生金额(正的表示收入,负的表示支出)和金额。每发生一笔收支,文件要增加一条记录,并计算一次余额。,②程序实现3个功能,包括:(1),能创建资金账户文件并添加收入或支出信息记录;(2),能显示所有记录,得知资金账户的收支流水账;(3),能查询最后一条记录,获知账户最后的余额。账户文件名命名为cashbox.dat,文件部分内容如下;③增加修改资金账户的功能。输入一个记录ID,如果文件中已存在该记录,则输入新的记录信息并更新资金账户文件中相应记录的信息。要求定义和调用函数UpdateLog(),其功能是修改资金账户记录。LongIDCreateDateNoteChargeBalance12006-06-01alimony500.00500.0022006-06-08shopping-300.00200.0032006-06-15shopping-60.00140.0042006-06-20workingpay200.00340.0052006-08-01scholarship1000.001340.00部分参考源代码:/*crashbox.dat是随机文件,记录资金帐户消费流水帐记录信息 */第3页/*程序的功能:添加新流水帐记录,查询资金帐户最后记录*/#include"stdio.h"#include"stdlib.h"longsize; /*当前最近一次的流水号*/structLogData{ /*记录的结构*/longlogid; /*记录ID*/charlogdate[11]; /*记录发生日期*/charlognote[15]; /*记录事件说明*/doublecharge; /*发生费用:负表示支出,正表示收入 */doublebalance; /*余额*/};intinputchoice() /*选择操作参数*/{intmychoice;printf("\nEnteryourchoice:\n");printf("1-AddanewcashLOG.\n2-ListAllCashLOG.\n");printf("3-QueryLastCashLOG.\n0-Endprogram.\n");scanf("%d",&mychoice);returnmychoice;}longgetLogcount(FILE*cfptr) /*获取文件记录总数*/{longbegin,end,logcount;fseek(cfptr,0L,SEEK_SET);begin=ftell(cfptr);fseek(cfptr,size,SEEK_END);end=ftell(cfptr);logcount=(end-begin)/size-1;returnlogcount;}voidListAllLog(FILE*cfptr) /*列出所有收支流水帐*/{structLogDatalog;fseek(cfptr,0L,SEEK_SET); /*定位指针到文件开始位置 */fread(&log,size,1,cfptr);printf("logid logdatalognotechargebalance\n");while(!feof(cfptr)){printf("%6ld%-11s%-15s%10.2lf%10.2lf\n",log.logid,log.logdata,log.lognote,log.chargge,log.balance);fread(&log.size,1,cfptr);};第4页}voidQueryLastLog(FILE*cfptr) /*查询显示最后一条记录*/{structLogDatalog;longlogcount;logcount=getLogcount(cfptr);if(logcount>0) /*表示有记录存在*/{fseek(cfptr,size*(logcount-1),SEEK_SET); /*定位最后记录*/fread(&log,size,1,cfptr); /*读取最后记录*/printf("Thelastlogis:\n");printf("logid:%-6ld\nlogdata:%-11s\nlognote:%-15s\n",log.logid,log.logdata,log.lognote);printf("charge:%-10.2lf\nbalance:%-10.2lf\n",log.charge,log.balance); /*显示最后记录内容*/}else printf("nologsinfile!\n");}voidAddNewLog(FILE*cfptr) /*添加新纪录*/{structLogDatalog,lastlog;longlogcount;printf("Inputlogdate(format:2006-01-01):");scanf("%s",log.logdate);printf("Inputlognote:");scanf("%s",log.lognote);printf("InputCharge:Income+andexpend-:");scanf("%lf",&log.charge);logcount=getLogcount(cfptr); /*获取记录数*/if(logcount>0){fseek(cfptr,size*(logcount-1),SEEK_SET);fread(&lastlog,size,1,cfptr); /*读入最后记录*/log.logid=lastlog.logid+1; /*记录号按顺序是上次的+1*/log.balance=log.charge+lastlog.balance;}else{ /*如果文件是初始状态,记录数为 0*/log.logid=1;log.balance=log.charge;第5页}rewind(cfptr);printf("logid=%ld\n",log.logid);fwrite(&log.sizeof(structLogData),1,cfptr); /*写入记录*/}FILE*openfile(char*openmode) /*打开文件*/{FILE*fp;if((fp=fopen("cashbox.dat",openmode))==NULL){printf("cannotopenfilecashbox.dat!\n");exit(0);}return(fp);}intmain(void){FILE*fp;intchoice;size=sizeof(structLogData);while((choice=inputchoice())!=0){switch(choice){case1:fp=openfile("ab+");AddNewLog(fp);break;case2: /*列出所有的收入支出情况 */fp=openfile("rb");ListAllLog(fp);break;case3: /*查询最后记录及余额*/fp=openfile("rb");QueryLastLog(fp);break;default:printf("InputError.");break;}}if(fclose(fp)){printf("Cannotclosethefile!\n");exit(0);}return0;第6页}实验三 自动售货机下图所示为简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号分别为1~10,标有价格与名称,一个编号对应一个可操作按钮,供选择商品使用。如果物品架上的商品被用户买走,储物柜中会自动取出商品送到物品架上,保证物品架上一定会有商品。用户可以一次投入较多钱币,并可以选择多样商品,售货机可以一次性将商品输出并找零钱。用户购买商品的操作方法如下。(1)从“钱币入口”放入钱币,依次放入多个硬币或纸币。钱币可支持1元(纸币、硬币)、2元(纸币)、5元(纸币)、10元(纸币),放入钱币时,控制器会先对钱币进行检验以识别出币值,并统计币值总额,显示在控制器显示屏中,提示用户确认钱币放入完毕。(2)用户确认钱币放入完毕,便可选择商品,只要用手指按对应商品外面的编号按钮即可。每选中一样商品,售货机控制器会判断钱币是否足够购买,如果钱币足够,自动根据编号将物品进行计数和计算所需钱币值;如果钱币不足,则结束购物。请为自动售货机编程,输入钱币值序列,以-1作为结束,依次输入多个购买商品编号,若编号超出范围或余额不足则输入结束,输出钱币总额与找回零钱(找零要求按人民币的实际流通币值,取张数最少),以及所购买商品名称及数量。输入输出示例:输入:1122551010-1 /*钱币序列*/第7页123516910-1 /*物品编号*/输出:Total:36yuan,change:19yuan(10x1+5x1+1x4)Table-water:2;Table-water:1;Table-water:1;Milk:1;Beer:1;Oolong-Tea:1;Green-Tea:1;111222555101010-1678910-1实验四:自动寄存柜某超市门口的自动寄存柜有n个寄存箱,并且有一个投币控制器,顾客想要寄存小件物品时,只要在投币控制器中投入一个1元硬币,如果此时有空闲的箱子,寄存柜就会自动打开一个空的箱子,并且打印输出一张小小的密码纸条;如果没有空闲的箱子,则提示“本柜已满”。当顾客离开超市时,用密码纸条上指定的数字密码依次输入到开箱控制器,则顾客所存包的箱子门就会自动打开,顾客取走物品后,关上门。输入数据时,可先输入寄存箱总数n,再由用户选择是“投硬币”还是“输密码”。如果选择“投硬币”,则只有硬币值是1时才开箱。如果有空闲的箱子,则输出箱子编号及密码(4位数字);如果无空闲的箱子,则提示“本柜已满”。如果选择“输密码”,若输入的密码与某一箱子密码相符,则显示打开的箱子编号,否则输出提示“密码错误”。万能密码:假定有一个密码000086,该密码用于营业结束后整理寄存柜。先在菜单中输入隐藏的选项5,然后提示请输入万能密码,密码输入后,打开所有的箱子,如有箱子中客户没有取走东西,则提示:请重点检查某编号的箱子是否有物留存。请编写开箱控制程序实现上述过程。输入输出示例:寄存箱总数:101.投硬币2.输密码0.退出请选择:1投币值:1寄存箱编号:1密码:93421.投硬币2.输密码0.退出请选择:2输入密码:93421号寄存箱已打开1.投硬币2.输密码0.退出请选择:5请输入万能密码:000086箱子已经全部打开,请重点检查编号 1,编号7的箱子是否有物留存1.投硬币 2.输密码 0.退出 请选择:0结束第8页实验五:停车场管理设有一个可以停放 n辆汽车的狭长停车场,它只有一个大门供车辆进出。车辆按到达停车场时间的先后次序依次从停车场最里面向大门口处停放(即最先到达的一辆车停放在停车场的最里面)。如果停车场已放满n辆车,则以后到达的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车可以进入停车场。停车场内如有某辆车要开走,则在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费,停留在便道上的车不收停车费。编写程序对该停车场进行管理。输入数据时,先输入一个整数n(n<=10),再输入若干组数据,每组数据包括3个数据项:汽车到达或离开的信息(A表示到达、D表示离开、E表示结束)、汽车号码、汽车到达或离开的时刻。当输入“E00”时程序结束。若有车辆到达,则输出该汽车的停车位置;若有车辆离开,则输出该汽车在停车场内停留的时间。输入输出示例3A111号车停入1号位A222号车停入2号位A333号车停入3号位D141号车出停车场,停留时间 3A454号车停入3号位A56号车在便道上等待D47号车出停车场,停留时间2号车停入3号位D585号车出停车场,停留时间 1E00实验六;学生成绩管理第9页设计一个菜单驱动的学生成绩管理程序,管理 n个学生的m门考试科目成绩,实现以下基本功能。(1)能够新增学生信息,并计算总分和平均分。(2)能够根据学号修改和删除某学生信息。(3)能够显示所有学生的成绩信息。(4)能够分别按总分和学号进行排序。(5)能够根据学号查询该学生的基本信息。(6)学生成绩数据最终保存在文件 scores.txt中,能够对文件读、写学生数据。程序运行时,菜单形式如下。ManagementforStudents'sscores1.Appendrecord2.Listrecord3.Deleterecord4.Modifyrecord5.Searchrecord6.Sortindescendingorderbysum7.Sortinascendingorderbysum8.Sortindescendingorderbynum9.SortinascendingorderbynumW.WritetoaFileR.ReadfromaFile0.ExitPleaseinputyourchoice:要求用模块化方式组织程序结构, 合理设计各个自定义函数。 同时,程序能够进行异常处理,检查用户输入数据的有效性,在用户输入数据有错误(如类型错误)或无效时,不会中断程序的执行,程序具有一定的健壮性。实验思考题 1:完美的代价回文串是一种特殊的字符串,它从左往右读和从右往左读是一样的,有人认为回文串是一种完美的字符串。现在给出一个字符串,它不一定是回文的,请计算使得该字符串变成一个回文串的最少交换次数。这里的交换指将字符串中两个相邻的字符互换位置。例如所给的字符串为 mamad,第一次交换a和d,得到mamda;第二次交换 m和d,得到madma;第三次交换最后面的m和a,得到madam。编写程序,从键盘读入数据。第一行是一个整数N(N<=80),表示所给字符串的长度,第二行是所给的字符串,长度为N且只包含小写英文字母。如果所给字符串能经过若干次交换变成回文串,则输出所需的最少交换次数;否则,输出Impossible。输入输出示例15第10页mamad3输入输出示例26aabbcdImpossible实验思考题 2:值班安排医院有A、B、C、D、E、F、G共7位大夫,在一星期内(星期一至星期天)每人要轮流值班一天,如果已知如下信息。(1)A大夫比C大夫晚1天值班。(2)D大夫比E大夫晚1天值班。(3)E大夫比B大夫早2天值班。(4)B大夫比G大夫早4天值班。(5)F大夫比B大夫晚1天值班。(6)F大夫比C大夫早1天值班。(7)F大夫星期四值班。就可以确定周一直至周日的值班人员分别为 :E,D,B,F,C,A,G。编写程序,根据输入的条件,输出星期一到星期天的值班人员。输入数据时,先输入一个整数n,再输入n组条件,要求能够根据输入的条件确认唯一的值班表,且输入的n组条件中能够直接或间接得到任意两位大夫的关联联
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- PE聚乙烯燃气管道施工方案方案
- 企业生产效率提升操作指南模板
- 感染性脑膜炎的护理
- 烘焙爱好者学习蛋糕制作完成专业级甜品指导书
- 资源节约农业推广责任书范文3篇
- 山西省朔州怀仁县联考2025-2026学年初三下学期第3次月考数学试题含解析
- 2026年湖南省长沙市青雅丽发中学初三1月尖子生联赛英语试题含解析
- 2026届内蒙古昆都仑区初三下学期命题预测及题型示例语文试题含解析
- 2026年湖南师大附中教育集团初三下学期第二次模拟考试语文试题含解析
- 公司运营风险控制责任承诺书9篇
- 进出口流程课件
- SHA1-42(01)-2025 上海市市政工程养护维修估算指标 第一册 城市道路
- 2025年广东省中考数学真题卷含答案解析
- HJ349-2023环境影响评价技术导则陆地石油天然气开发建设项目
- DBJ-T13-186-2025建筑排水聚丙烯静音管道工程技术标准
- GB/T 2423.21-2025环境试验第2部分:试验方法试验M:低气压
- 留园完整版本
- 2025年11月济南轨道交通集团运营有限公司社会招聘笔试参考题库附带答案详解(10套)
- 建设工程工程量清单计价标准(2024版)
- 2025新热处理工程师考试试卷及答案
- 员工停车申请管理办法
评论
0/150
提交评论