C语言课程设计人机猜数游戏

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8
沈 阳 航 院 设 计 用 纸
n++; } printf("你猜的结果是: "); printf("%dA%dB\n",m,n); for (f=0;f<1;f++) { p[f].g=g; p[f].i=m; p[f].k=n; save(); /*函数保存*/ } if(n==4) { printf("**** 你赢了*****\n"); printf("\n~~********~~\n"); }
本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形
7
沈 阳 航 院 设 计 用 纸
式调用其他函数来实现要求的各个功能。在这些函数当中,游戏函数是程序中 较为核心的部分,下面就对其进行说明。 该程序的要求就是由电脑随机给一个四位数,然后由人来猜,电脑对人猜 的数与给的数进行比较, 并将猜对数字的个数(j)和正确位置(k)以 jAkB 的形式 给人以提示,然后继续猜,直到猜对为止。
四、课设总结
C 语言是目前国内最为广泛流行的通用程序设计语言之一,其功能强大, 使用方便灵活,程序代码效率高,具有良好的可移性。即具有高级语言的优势, 又具有低级语言的许多特点。 一周的时间既短暂又漫长, 通过这次 C 语言课程设计,使我更进一步了解认 识 C 语言这一门学科 ,他不仅仅是简单的设计编辑程序,他需要更深度的理论和 完整准确的数据作为支撑点 ,每个程序的编译都要掌握其真正的操作方法 ,明确 它的目的.通过这次 C 语言课程设计, 使我加深了对 C 语言的了解, 也提高了 C 语言的应用能力.这个题目是以前没有练习过的, 所以我们必须用自己平时所学 的和发挥自己的创造性的思维去完成一个程序。对于我个人来说,这的确是个 一个很大的挑战,但却培养了我们做事的耐性和严谨。因为只要有一个地方出 错就会导致整个程序不运行。 For 循环同样给我留下了深刻的印象,为了能够将两个四位数字的相同数 字及相同位置进行比较记录,程序中通过大量 for 循环的运用才得其得以以实 现。在人的智能的思想下可以轻松的办到四位数的比较,计算机在大量的对比
11
沈 阳 航 院 设 计 用 纸
srand((unsigned)time(NULL)); for(j=0;j<1;j++) {if((rand()%10000)>=1000&&(rand()%10000)<=9999) a=rand()%10000;} printf("机器输入四位数****\n"); printf("\n"); printf("请输入你猜的四位数 :"); scanf("%d",&g); {r=g/1000; c=(g/100)%10; l=(g/10)%10; k=g%10; w[0]=r;w[1]=c;w[2]=l;w[3]=k;} {h=a/1000; o=(a/100)%10; y=(a/10)%10; q=a%10; b[0]=h;b[1]=o;b[2]=y;b[3]=q;} for(j=0;j<4;j++) for(i=0;i<4;i++) { if(w[j]==b[i]) {m++;} if(w[j]==b[i]&&j==i) n++; } printf("你猜的结果是"); printf("%dA%dB\n",m,n); for (f=0;f<1;f++) { p[f].g=g; p[f].i=m; p[f].k=n; save(); } if(n==4)
沈 阳 航 空 工 业 学 院
课 程 设 计
2009 年
6 月
30 日
沈 阳 航 院 设 计 用 纸 沈阳航空工业学院
课程设计任务书
院系: 一、课程设计时间
2008~09 第 2 学期第 18 周,共计 1 周, 20 学时。
题目:人机猜数游戏
二、课程设计内容
用 C 语言编写软件完成以下任务: 由计算机随机产生一个 4 位整数,请人猜这四位整数是多少,其过程保 存在文件 data.dat 中。人输入一个四位数后,计算机首先判断其中有几位猜 对了,并且对的数字中有几位位置也正确,例如格式为: 2A1B 表示 2 个数 字猜对,其中 1 个位置也正确,直到猜对为止。
6
沈 阳 航 院 设 计 用 纸
图 3 游戏函数
(3)保存函数 save
开始
Y
(fp=fopen("d:\\data.da ta","ab"))==NULL
N
return
将 p[f] 中存放的 1 个 6 字节的数据读入 fp 指 向的文件
关闭文件
结束
图 4 保存函数
三、核心技术的实现说明及相应程序段
12
五、参考文献 1 C 语言程序设计/姚合生等编著.-北京:清华大学出版社,2008.9(高等
学校计算机教材—面向应用与实践系列) 。
2 C 语言程序设计实验指导与习题集/刘成等.北京:中国铁道出版社,2006.
1(2008.2 重印)
六、源程序
#include<stdio.h> #include<stdlib.h> #include<time.h> #include<math.h> struct num_type {int g; int i; int k; }p[1]; int menu(); int game();
9
沈 阳 航 院 设 计 用 纸
但用时很短的情况下给出,如此对于更多位的数据进行判断时,for 循环或更 好的其他循环语句则将计算机的优势大大的显现出来了。 对于题目附加的, 将程序运行过程保存到 data.dat 文件中的要求, 可能有 点欠缺。由于游戏的输出除了有数字外,其输出形式中还包括了字母的输出, 我的保存是通过结构体的定义将数据保存在数组中,然后通过结构体变量将其 保存到 data.dat 文件中。 虽然课设之前接触了半年的 C 语言,但做课设的时候才知道我在这个方面 知识是多么的匮乏。 但这让我对 C 语言更产生了浓厚兴趣, 记得刚开始的时候, 我经常因为一些英文字母而失去耐心,毕竟我的英文不好,但现在想想我能一 个人编一个完整的程序,这是很大的进步,对我有很大的激励。
10
沈 阳 航 院 设 计 用 纸
int save(); void main() { for(;;) { switch(menu()) { case 1:game();break; case 2:exit(0); } } } int menu() { /*菜单程序 */
int d; printf("***************************\n"); printf("** 欢迎进入游戏**\n"); printf("** printf("** printf("** 1.开始 2.退出 好运 !!! **\n"); **\n"); **\n");
三、课程设计要求 1. 程序质量:
� 贯彻结构化的程序设计思想。 � 用户界面友好,功能明确,操作方便。 � 用户界面中的菜单至少应包括 “产生随机整数” 、 “猜数” 和 “退出” 3 项。 � 代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2. 课程设计说明书:
课程结束后,上交课程设计说明书和源程序。课程设计说明书的格 式和内容参见提供的模板。
printf("***************************"); do { printf("\n 请选择 1 或 2:"); scanf("%d",&d); if(d!=1&&d!=2) printf("Erroe,again!\n"); printf("\n"); } while(d!=1&&d!=2); return (d); } int game() /*游戏程序 */ {struct num_type p[1]; int w[4],b[4],g,m=0,n=0,i; int j,a,f, r,c,l,k,h,o,y,q;
II
沈 阳 航 院 设 计 用 纸
一、需求分析
经过对程序设计题目的分析可知, 整个程序的设计实现大致分为四个部分, 既菜单部分,产生随机数部分,猜数对比输出部分和保存部分。 1、菜单部分 在用户界面上产生菜单,功能明确,便于用户操作。 2、产生随机数部分 产生随机数,用于下面的猜数对比的部分。 3、猜数对比输出部分 程序的核心部分,对用户输入的数字和计算机随机产生 的数字进行对比判断和输出打印结果。 4、保存部分 运行过程保存在文件 data.dat 中。 每一个用户在背景菜单中选择猜数功能菜单时,计算机将随机产生一个四 位整数,然后程序提示用户输入一个四位整数,然后计算机将用户输入的四位 整数和计算机随机产生的四位整数进行对比判断,然后将判断结果打印输出显 示出来,如果用户没有完全猜对,程序将自动返回并提示用户从新输入,如果 用户猜对,程序将提示用户猜对并自动结束程序。在整个程序运算过程中,将 数据保存在 D 盘的 data.dat 文件中。
(2)游戏函数 game
5
沈 阳 航 院 设 计 用 纸
开始
计算机产生四位数 c
输入猜的四位数 g
a=c;b=g
a%10==b%10 N m&&t!= l[3] N j++;m=0;l[j-1]=t Y Y
k==t N n++;b/=10;a/=10 Y
输出 jAkB
调用保存函数 save N n==4 Y 结束
四、指导教师和学生签字 指导教师: ________ 五、说明书成绩 六、教师评语 学生签名: ________
I
沈 阳 航 院 设 计 用 纸
目录
一、需求分析.........................................................1 二、程序流程图..................................................... 1 三、核心技术的实现说明及相应程序段............... 5 四、课设总结.........................................................6 五、参考文献.........................................................8 六、源程序............................................................ 8
所以程序的核心就是产生一个随机的四位数,并且将其和人所猜的四位数进行比较, 并输出结果。具体函数段如下:
int game() /*游戏程序 */ {struct num_type p[1]; int w[4],b[4],g,m=0,n=0,i; int j,a,f, r,c,l,k,h,o,y,q; srand((unsigned)time(NULL)); for(j=0;j<1;j++) {if((rand()%10000)>=1000&&(rand()%10000)<=9999) a=rand()%10000;} /*电脑随机产生得数*/ printf("电脑已输入四位数 ****\n"); printf("\n"); printf(" 请输入你猜的四位数:"); scanf("%d",&g); /*人输入的数 */ {r=g/1000; c=(g/100)%10; l=(g/10)%10; k=g%10; w[0]=r;w[1]=c;w[2]=l;w[3]=k;} /*电脑的数与人猜的数对比 */ {h=a/1000; o=(a/100)%10; y=(a/10)%10; q=a%10; b[0]=h;b[1]=o;b[2]=y;b[3]=q;} for(j=0;j<4;j++) for(i=0;i<4;i++) { if(w[j]==b[i]) {m++;} if(w[j]==b[i]&&j==i)
二、程序流程图
1、程序总体结构图
3
沈 阳 航 院 设 计 用 纸
输入选项 2 1
退出
猜数
图 1 程序总体结构图
2、具体功能框图
(1)菜单函数 m源自文库nu
4
沈 阳 航 院 设 计 用 纸
开始
输出菜单提示
输入选择 d
d!=1||d!=2
d=2
d=1&&d=2
d=1
调用游戏函数 game
结束 图 2 菜单函数
相关文档
最新文档