




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈 阳 航 空 工 业 学 院 课程设计学 号 200704033019 班 级 7403301 姓 名 刘 文 博 指导教师 王 晓 岩 龑2009 年 3 月 2日沈阳航空工业学院课程设计任务书院系:航空宇航工程学院 专业:飞行器设计与工程 班级:7403301学号:200704033019 题目:人机猜数游戏一、课程设计时间200809第2学期第1周,共计1周,20学时。二、课程设计内容用C语言编写程序完成以下任务:由计算机随机产生一个4位整数,请人猜这四位整数是多少,其过程保存在文件data.txt中。人输入一个四位数后,计算机首先判断其中有几位猜对了,并且对的数字中有几位位置也正确,例如格式为:2A1B表示2个数字猜对,其中1个位置也正确,直到猜对为止。三、课程设计要求1. 程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“产生随机整数”、“猜数”和“退出”3项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、说明书成绩六、教师评语 沈 阳 航 院 设 计 用 纸目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段4四、课设总结7五、参考文献8六、源程序89一、需求分析经过对程序设计题目的分析可知,程序主要是将计算机随机给的数字和人所猜的数字逐位进行比较,并将比较后的结果以XAXB的形式显示出来。所以整个程序的设计实现大致分为三两个模块,其中每一个模块对应一个函数,他们的功能分别是:生成随机数,判断数字和储存游戏过程。这几个过程以判断数字为核心,生成随机数和储存过程也是游戏中不可缺少的过程,完善游戏,凸显程序的可记录性,从而完成题目要求。程序中插入了一个数组循环,使游戏过程中生成的四位随机数中不会出现重复数字,从而使游戏更完善更有可玩性,这是一个可以添加的小功能。1、生成随机数 游戏的基础,生成的无重复四位随机数用作提供玩家去猜的判断依据;2、判断数字 游戏的核心部分,接受玩家所猜测而输入的数字并判断输出结果;3、储存过程 主要是按照题目要求将人机猜数过程的数据进行记录保存。除了以上功能外,程序中还有退出功能,可以在每一次游戏开始或结束时选择退出游戏。而保存函数可以将游戏的过程随程序的简单路径设定而永久保存在所设定路径D:data.txt中。二、程序流程图1、程序总体结构图图1程序总体结构图2、具体功能框图(1)生成无重复四位随机数图2 生成无重复四位随机数(2)判断数字图3判断数字过程三、核心技术的实现说明及相应程序段本程序主要由两个程序段构成,分别是生成无重复四位随机数过程和判断所猜数字过程,按要求的打印菜单过程和保存数据过程则贯穿在整个程序之中,下面分别进行说明。1、生成无重复四位数过程 首先由程序创建一个新文件保存路径为D:data.txt,并将录入的数据信息写入该文件当中。然后根据指令开始生成随机数,生成随机数的方法是随机数由系统提出时间数据进行生成,接下来对所生成的随机数进行判断,用一个循环判断该四位数是否有重复,如有重复则重新生成一次,无重复则打印菜单向下进行,该过程结束。具体的程序段如下: if(fp=fopen(D:data.txt,w)=NULL) /*创建文件并判断无法打开则退出*/ printf(can not creat the file.); exit(0); printmenu(); /*打印菜单*/ scanf(%d,&t); if(t!=1) exit(0); srand(time(NULL); /*从系统时间中生成随机数的函数*/ stop=2; while(stop=2) extra=1;for(i=0;i=SIZE-1;i+)ai=rand()%10; /*生成四位随机数*/for(i=0;i=SIZE-1;i+) for(j=i+1;j=SIZE-1;j+) if(ai=aj) extra=2; /*判断是否为重复数,有重复则跳出*/ if(a0!=0&extra=1) stop=1;printf(%d%d%d%dn,a0,a1,a2,a3);2、判断所猜数字过程该函数的核心内容是将玩家输入的数字与生成的随机数进行比较判断,并显示得出结果。该过程执行时,首先执行一个while语句,接受玩家输入的其所猜的四位数,并保存数据。利用(int)pow函数将玩家所输入四位数按位存在我定义的数组bi中。下面执行一个for循环判断随机数ai与输入数bi是否对位相同,通过countera来记录相同个数;类似的再执行一个for语句的双循环来判断随机数ai与输入数bj各位是否有两两相等并通过counterb来记录相同个数。当countera值为4时说明对位全部相同,此时玩家回答正确,关闭游戏;否则,将打印XAXB的结果显示一作为依据供玩家继续游戏。具体程序段如下:while(counter=1) scanf(%d,&guessnum); /*接受玩家输入的四位数*/fprintf(fp,%drn,guessnum);for(i=0;i=SIZE-1;i+)bi=guessnum/(int)pow(10,SIZE-1-i)%10; /*将所接受四位数按位存在数组bi中*/ countera=0;for(i=0;i=SIZE-1;i+) if(ai=bi) countera+; /*第一次循环判断对位相同个数*/counterb=0;for(i=0;i=SIZE-1;i+) for(j=0;j=SIZE-1;j+)if(ai=bj) counterb+; /*第二次循环判断两两相同个数*/if(countera=4) printf(恭喜你!答对了!欢迎再次使用);counter=0; /*回答正确结束程序*/else printf(%dA%dBn,counterb,countera);fprintf(fp,%dA%dBrn,counterb,countera); /*回答不正确打印结果并储存在数据文件中*/ 四、课设总结本次课设是我在大学中的第一次课程设计,对各个环节还是比较陌生,而且由于C程序设计有些遗忘,在课设中不断的翻阅书籍和请教其他同学。在最初程序中我原想再添加一个重新开始游戏的命令,但屡次调试都有问题,后仔细阅读命题要求后,觉得这个功能弄不好是个画蛇添足的功能,于是去掉了。过程中将玩家输入的四位数保存为数组的过程弄得不够完善,请教了其他同学知道了(int)pow这个函数,是我顺利完成了数据的保存。整个程序中的循环判断很多,因此我从中更加强了对循环判断的掌握程度。总之,一次课程设计对我的帮助很大,也让我积累了经验,让我在以后的课设中能驾轻就熟。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序#include#include#include#include#define SIZE 4void printmenu()printf(1. 生成随机数n2. 猜数n3. 退出 n);void main() int stop,aSIZE,bSIZE,guessnum,i,j,counter=1,countera,counterb,t,extra,m; FILE *fp; if(fp=fopen(D:data.txt,w)=NULL) printf(can not creat the file.); exit(0); printmenu(); scanf(%d,&t); if(t!=1) exit(0); srand(time(NULL); stop=2; while(stop=2) extra=1;for(i=0;i=SIZE-1;i+)ai=rand()%10;for(i=0;i=SIZE-1;i+) for(j=i+1;j=SIZE-1;j+) if(ai=aj) extra=2; if(a0!=0&extra=1) stop=1;printf(%d%d%d%dn,a0,a1,a2,a3); fprintf(fp,%d%d%d%drn,a0,a1,a2,a3);printmenu();scanf(%d,&m);if(m!=2) exit(0);while(counter=1) scanf(%d,&guessnum);fprintf(fp,%drn,guessnum);for(i=0;i=SIZE-1;i+)bi=guessnum/(int)pow(10,SIZE-1-i)%10; countera=0;for(i=0;i=SIZE-1;i+) if(ai=bi) countera+;counterb=0;for(i=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (完整版)数学新初一分班测试题目经典
- 2025届国家电网校招面试试题及答案
- 2025年经济师考试金融高级经济实务试题及答案
- 多重耐药菌感染控制测试题(含答案)
- 2025年雅思考试全真模拟试卷及答案口语表达强化
- 2025年通信安全员ABC证新版试题及答案
- 迎新春跨年活动方案策划
- 淮阴路基声屏障施工方案
- 合肥学生成长咨询方案
- 穿脱防护服活动方案策划
- 房地产销售岗位简历模版大全
- 智能楼宇管理员试卷及答案
- 创新成果转化高效推进承诺书6篇范文
- 自卸车安全教育培训课件
- 冶金行业事故回放课件
- 5年(2021-2025)高考1年模拟地理真题分类汇编专题03 地球上的水(解析版)(浙江专用)
- 电气检修班组安全培训课件
- 2024版中国高血压防治指南(完整版)
- 不再举报协议书6篇
- 空管知识培训材料课件
- 四合一检测仪使用课件
评论
0/150
提交评论