人机猜数游戏

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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++;

相关文档
最新文档