人机猜数游戏
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
沈阳航空工业学院
课程设计任务书电子工程系电子信息工程专业6402105班学号 200604021174
一、课程设计题目:人机猜数游戏
二、课程设计工作自2007年9月10日起至2007年9月16日止
三、课程设计内容:
该程序的功能描述如下:由计算机随机产生一个4位整数,请人猜这四位整数是多少,其过程保存在文件data.dat中。人输入一个四位数后,计算机首先判断其中有几位猜对了,并且对的数字中有几位位置也正确,例如格式为:2A1B表示2个数字猜对,其中1个位置也正确,直到猜对为止。
注:用户界面美观,有必要的提示信息。
四、课程设计要求:
程序质量:
●贯彻事件驱动的程序设计思想。
●用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容如下:
●课程设计任务书
●程序设计题目
●需求分析(分析题目的要求)
●程序框图(总体框图和各功能模块框图,使用传统流程图或N-
S框图)
●核心技术的实现方法及程序源代码及注释
●个人总结
●[参考资料]
指导教师:李飞
学生签名:郑索哲
目录
一、需求分析 ............................... 错误!未定义书签。
二、程序流程图 ........................... 错误!未定义书签。
三、核心技术的实现方法、程序段及注释错误!未定
义书签。
四、个人总结 ............................... 错误!未定义书签。
五、参考文献 ............................... 错误!未定义书签。
六、源程序 ................................... 错误!未定义书签。
.一.需求分析
通过对题目的分析,这个课程设计主要分为三个模块。
1 生成一个四位数模块(运用随即产生数的原理产生一个随机数,用产生的随机数与10000取余得到一个四位数),
2 猜数模块(输入猜测的数并且得到随机产生的数和猜测的数的个、十、百、千四个阿拉伯数字并且判断位置是否相同,以及猜测的数是否相同并且把猜测的数写入到文件中)和3退出模块(其作用是退出操作界面).
二.流程图
1. 主函数
2. 猜数函数
三.核心程序分析
#include
#include
#include
#include
#include
#include
int num;
产生四位数函数,在函数中采用随机数产生方法,产生一个四位数,之后对产生的四位数与10000取余数,这样就可以得到一个四位数。
void made()
{
产生随机数生成种子
srand((unsigned)time(NULL));
产生四位数
num=rand()%10000;
}
猜测四位数函数,本函数调用产生的四位数函数产生的数,对其进行猜测。每次输出猜测的结果。如果猜测不中则继续猜测,直到猜对为止。在猜测的过程中把猜测过程和结果全部写入到文件中。
void guess()
{
定义文件类型指针
FILE *WJ;
int n,m,guess,ge,shi,bai,qian;
int ge_guess,shi_guess,bai_guess,qian_guess;
建立文件
if((WJ=fopen("d:\\DA TA.DA T","w+"))==NULL)
{
printf("\nCan not open file for write");
return;
}
产生个、十、百、千四位数
ge=num%10;
qian=num/1000;
bai=(num%1000)/100;
shi=(num/10)%10;
printf("\nPlease input you geuss number :");
fprintf(WJ,"%s\t%d\n","The made number is :",num); scanf("%d",&guess);
do
{
n=0;
m=0;
ge_guess=guess%10;
shi_guess=(guess/10)%10;
bai_guess=(guess%1000)/100;
qian_guess=(guess/1000);
判断位置是否相同
if(ge_guess==ge)
n++;
if(shi_guess==shi)
n++;
if(bai_guess==bai)
n++;
if(qian_guess==qian)
n++;
判断是否有被猜测的数。
if(ge==ge_guess||ge==shi_guess||ge==bai_guess||ge==qian_g uess)
m++;
if(shi==ge_guess||shi==shi_guess||shi==bai_guess||shi==qian _guess)
m++;
if(bai==ge_guess||bai==shi_guess||bai==bai_guess||bai==qia n_guess)
m++;