c语言猜数字课设报告,c语言猜数字课程设计报告.doc
c语言猜数字课程设计报告.doc
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
14.9
积分
还剩页未读,继续阅读
关 键 词:c语言猜数字
课程设计报告
c语言 猜数字 课程设计报告
C语言课程设计
C语言 猜数
C语言课程设计报告
C语言课程设计猜数字
课程设计猜数字
资源描述:
C语言课程设计报告书
计算机科学与技术系
课程设计报告
2013~2014学年第一学期
课程
C语言课程设计
课程设计名称
人机猜数字游戏
学生 姓名
学号
专业班级
网络工程(一)班
指导教师
王竹婷 刘洁群
2014年 6月
目 录
一、 问题分析和任务定义…………………….….………..3
二、 概要设计和数据结构的选择…………………………3
三、详细设计和编码………………………..………........3
四、上机调试......................................6
五、用户使用说明..................................7
六、测试结果......................................7
七、附录:带注释源程序............................9
八、参考书目......................................11
一、问题分析和任务定义
问题分析:
问题本身清楚明了。判断相同位置上的数字是否相同不需要特殊的算法。只截取相同位置上的数字进行比较即可。但在判断几位数字正确时,则应当注意:计算机所想的是“1123”,而人所猜的是“1576”,则正确的数字只有1位。所以我们再用到循环结构,判断结构,余数比较的时候要注意重复,所以应该死有标志变量。
程序中截取计算机所想的数的每位数字与人所猜的数字按位比较。若有两位数字相同,则要记信所猜中数字的位置,使该位数字只能与一位对应的数字“相同”。当截取下一位数字进行比较时,就不应再与上述位置上的数字进行比较,以避免所猜的数中的一位与对应数中多位数字“相同”的错误情况。
猜数字处理系统,包括三个模块,和一个主函数。三个模块分别是电脑产生一个正确的随机数,读取玩家正确的四位数,电脑与玩家数字的比较。其中脑产随机数函数和主函数为整型,其它都无返回类型。主函数通过在不断循环使用三大模块来实现。该程序采用面向对象的思想,来处理函数之间的调用,实现这个人机猜数字游戏。
任务定义:
可知,整个程序的设计实现大致分为三个部分,
(1) 菜单,在用户界面上产生指示,让用户知道如何来参与这个游戏。
(2) 产生随机数部分,利用随机函数来产生随机数,即计算机给的数。
(3) 猜数对比输出部分,程序的核心部分,运用for循环,if判断语句,来提示参与者猜对了几个数,位置对了几个。
二、概要设计和数据结构的选择
1、使用for循环结构,if判断结构,比较余数,完成逐个比较,从而输出猜对了几个数,位置对了几个
2、运用子函数,指针传递地址,使主函数看起来更简便
3、加入判断,返回主函数,是否继续。
三、详细设计和编码
(一)算法及说明
计算机“想”了一个“1234”请人猜,可能的提示如下:
人猜的整数 计算机判断有几个数字正确 有几个位置正确
1122 2 1
3344 2 1
3312 3 0
4123 4 0
1243 4 2
1234 4 4
游戏结束
如以上分析,本次课题是猜数字游戏的设计与实现。主要是通过C++语言开发,实现《猜数字》游戏中的出数字方,在VC环境中实现了由电脑随机产生一个数字不重复的四位数(最高位不为零),并将所猜的数与它自动产生的数进行比较,若猜得不对并作出提示:"mAnB",A代表位置正确数字也正确,B代表数字正确但位置不正确。m代表A的个数,n代表B的个数.在每次输入数字后,显示相应的提示信息,直到玩家猜对为止.这次课设是要求用C++编写程序,实现数字之间的相互比较,让玩家找出电脑写的四位数字,而玩家在找出四位数字中,电脑需要给出玩家一些提示信息,用以帮助玩家找出答案。对猜一个各个位数不等的四位数,电脑需要在程序刚运行时,确定一个随机的四位数,且各个位数不相等。而在玩家输入数字时,也需要检验玩家输入的数字是否满足条件,即一个各个位数不重复的四位数。只有玩家输入正确的数字后,电脑才能进行比较数字的运算,如果玩家输入的数字和电脑的不相等,输出提示信息,并应从新读取玩家的数字进行判断,直到玩家放弃猜数字或数字猜对为止。
(二)程序流程图
开始
计算机产生四位数z
输入猜的四位数g
a=z;s=g
a%10==s%10
m&&t!=b[3]
j++;m=0;b[j-1]=t;
K==t
Count++;s/10;a/10
==++
输出j、k
K==4
结束
N
N
N
Y
Y
Y
Y
N
调用函数 panduan()
图2.1 流程图
(三)、函数及简介
VoidPanduan(int g, int z, int *k, int *j):接收用户输入的数字和正确的数字,进行判断,并把猜对的数的个数和位置保存到变量 *k, *j 中。
四、 上机调试
我们编写的程序不可能一次就成功的,要经过反复的调试,但错误是不可避免,而且高,编译器一般不报错,往往要费一番周折才能解决。经验、习惯和对C语言深刻理解成为彻底避免这类问题的关键因素。
对于此次的课程设计,从一开始的写程序到最终的成功运行,虽然这个程序并不像其他多样化的管理系统那样复杂,但是在编写和上机调试过程中,仍然出现不少问题。
子函数里的错误:
void panduan(int g,int z,int *k,int *j)
{
int a,b[4],i,t,m,s;
a=z;*j=0;*k=0;b[0]=b[1]=b[2]=b[3]=0;
for(i=1;i<5;i++)
{
s=g;m=1;
for(t=1;t<5;t++)
{
if(a%10==s%10)
{
if(m&&t!=b[0]&&t!=b[1]&&t!=b[2]&&t!=b[3])
{
*j+=1;m=0;b[j-1]=t;
}
if(i==t) *k+=1;
}
s/=10;
}
a/=10;
}
}
现在从中发现错误,在b[j-1]=t中,j是原量,而*j是指针传递原变量,并读写,所以在这里有这个错误,改正即可。
五、用户使用说明
首先运行该游戏,进入开始界面。计算机会提醒你:我有一个数请你猜一猜,然后请输入一个四位数。计算机会提醒你,猜对了几个数,并且有几个数位置也是正确的。然后你在判断哪几个或哪一个是对的,位置也是对的。后面的猜数也是考验你的眼里与脑力,根据计算机的提示,可以采用逐个比较。如:你猜了一个数字:1234,;计算机提示:有2个数是对的,并且有0个位置也是对的。然后你判断,1、2可能是对的;3、4也有可能是对的;所以你可以先尝试着,如1200或3400看到底哪两个是正确的,当然0也可能是对的,所以需要再一次验证。
当然我们每输入一个字都需要按一下回车,然后看到提示再按回车,进行下一步。这样直到猜出正确的数字,恭喜你!然后计算机会提示:again? Y/N,你可以选择Y,接着游戏,也可以选择N进行结束。
六、测试结果
1、调试分析
输入的游戏玩家人数太多时屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录,十七左右为最佳。刚开始执行输入函数,按数字顺序输入输完后执行显示功能,数字、字母的位置显示不对,试着在其中增加一些语句,希望能把所需结果按正常顺序显示,但暂时没有成功,最后在老师的帮助下,所需结果能按正常顺序输出了。在前面对猜数字游戏进行需求分析的过程中,已经初步明确了系统的主要功能模块和用户需求,下面将在总体设计的过程中,给出猜数字游戏的模块结构、流程描述以及界面布局,并使得系统的总体设计符合软件工程中总体设计的基本原则。 开发与设计的总体思想猜数字游戏是一种大众娱乐游,开发与设计的重点在于游戏供玩家进行猜数字游戏的原始数字的产生和用户每进行猜数字操作之后的游戏提示,这方面的规则设计往往决定了软件运行的正确性和质量。同时,要谨调试失败的原因以免下次犯同类错误
2、测试运行结果截屏及说明
游戏开始界面,可正常工作运行;
图6.1测试结果
然后游戏者可以猜一个四位数,看计算机给出的提示继续猜;
图6.2测试结果
当四位数被完全参与者猜出时,计算机会告诉你猜了多少次,并且会问你,要不要再一次。
图6.3测试结果
七、附录:带注释源程序
#include#include#includevoid panduan(int g,int z,int *k,int *j) //通过k的地址,指针对原变量k、j进行读写
{
int a,b[4],i,t,m,s;
a=z;*j=0;*k=0;b[0]=b[1]=b[2]=b[3]=0;
for(i=1;i<5;i++) //i:原数中的第i位数。个位为第一位,千位为第4位
{
s=g;m=1;
for(t=1;t<5;t++) //人所猜数
{
if(a%10==s%10) //余数比较法,逐个比较{
if(m&&t!=b[0]&&t!=b[1]&&t!=b[2]&&t!=b[3])
{
*j+=1;m=0;b[*j-1]=t; //记录相同数字时,该数字在所猜数字中的位置
}
if(i==t) *k+=1; //位置相同加一
}
s/=10; //从各位到十位,百位,千位,小数点除去
}
a/=10;
}
}
int main()
{
int z,count,g,s,j,k; //j:数字正确的位数 k:位置正确的数 count:一共猜多少次
char ag; //定义字符
srand((unsigned int)time(NULL)); //时间随机种子
z = rand()%10000; // 产生随机数
printf("我有一个四位数的数字,请猜一猜!\n");
for(count=1;;count++)
{
printf("请输入一个四位数:");
scanf("%d",&g); //请人猜一猜
panduan(g,z,&k,&j); //传递k的地址
printf("你猜对了%d个数字,\n",j);
printf("并且在猜对的数字中有 %d 个位置也是正确的.\n",k);
if(k==4)break;
}
printf("恭喜你,猜对了!");
printf("\n");
printf("你用了%d次猜出了这个数.\n",count);
printf("again? Y/N");
scanf(" %c",&ag);
if(ag=='y'||ag=='Y')return main(); // 返回 主函数
return 0;
}
八、参考书目
[1]、郭翠英编著《C语言课程设计案例精编》北京:中国水利水电出版社2008
[2]、黄明,梁旭,万洪莉.C语言课程设计.北京:电子工业出版社.2006.6
[3]、谭浩强《C语言习题集与上机指导》高等教育出版社 2003年2月版
[4]、谭浩强主编《C语言程序设计试题汇编》清华大学出版社2003年4月版
[5]、熊锡义主编《C语言程序设计案例教程》大连理工大学出版社09年3月版
[6]、姚合生等《C语言程序设计》-北京:清华大学出版社(高等 学校计算机教材—面向应用与实践系列)2006
[7]、刘成等《C语言程序设计实验指导与习题集》.北京:中国铁道出版社,2005年4月版
11
厚德 博学 善思 致用
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:c语言猜数字课程设计报告.doc
链接地址:https://www.renrendoc.com/p-16348583.html
c语言猜数字课设报告,c语言猜数字课程设计报告.doc相关推荐
- java课设推荐,《Java程序设计》课程设计报告推荐.docx
<Java程序设计>课程设计报告推荐 <Java程序设计>课程设计报告2015-2016学年 第一学期设计题目整数进制转换学生姓名邹晓刚学 号0专业班级信管1303指导教师 姜 ...
- c语言时钟加秒表报告,51单片机秒表计时器课程设计报告(含C语言程序)-20210419061005.docx-原创力文档...
XXXXXX学院 51单片机系统设计课程设计报告 题 目:秒表系统设计 专业.班级: 学生姓名: 学号: 指导教师: 分数: [摘要]本设计是一个秒表计时器,采用51单片机实现.电路包括以下儿部分:单 ...
- c语言时钟加秒表报告,51单片机秒表计时器课程设计报告(含C语言程序)...docx
- - PAGE # - - - PAGE # - XXXXX)学院 51单片机系统设计 课程设计报告 目:秒表系统设计 目: 专业.班级: 学生姓名: 学 号: 指导教师: [摘要] 本设计是一个秒 ...
- 中南民族大学 计算机组成原理实验报告,中南民族大学计算机组成原理课程设计报告.pdf...
计算机科学学院 课程设计报告 课程 计算机组成原理 题 目 基 于 TEC-2000 平 台 的 (a ⊕ b+c)and(d+1) 指令设计 年级 2012 级 专业 计算机科学与技术 学号 201 ...
- python小游戏课程设计报告_贪吃蛇游戏课程设计报告
贪吃蛇游戏程序设计 一.课程设计任务 贪吃蛇小游戏程序设计 二.设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固 C 语言中所学的知识,合理的运 用资料,实现理论与实际相结合. ( 1 ) . ...
- 五邑大学安卓开发程序设计报告_五邑大学模拟电路课程设计报告模板.docx
五邑大学模拟电路课程设计报告模板 模拟电路课程设计 PAGE10 / NUMPAGES10 模拟电路课程设计报告 课程题目:二阶低通滤波器和50HZ陷波滤波器 院系名称: 专业名称: 班级: 学号: ...
- 课程设计报告linux小游戏,嵌入式课程设计报告---贪吃蛇游戏.doc
嵌入式课程设计报告---贪吃蛇游戏 嵌入式系统课程设计报告书 课题题目:贪吃蛇游戏 学 院:核自院 班 级:测控三班 学 号:9 姓 名: 马文铂 第一章 引言- 2 - 1.1关于题目- 2 - 1 ...
- android音乐播放器课程设计报告,android音乐播放器课程设计报告11.doc
最新精品文档,知识共享! android音乐播放器课程设计报告 基于Android音乐播放器的设计与实现 滨江学院 <移动通信程序设计> 课程设计 题 目 院 系 专 业学生姓名 学 号 ...
- 基于html人事管理报告,基于C++builder的课程设计报告 (人事管理系统)
内容介绍 原文档由会员 bshhty 发布 C++builder课程设计 ( 人事信息管理系统 ) 12页 7000余字 资料包含:完整课程设计报告,源代码等相关设计资料.本课程设计为RAR个文件. ...
- 计算机网络课程设计报告 组建校园局域网,计算机网络课程设计报告-组建校园局域网.pdf...
课程设计报告 课程设计题目:组建校园局域网 专 业: 班 级: 姓 名 : 学 号 : 指导教师 : 2015 年 7 月 3 日 计算机网络课程设计 目录 一.课程设计目的及要求 - 2 - 1.1 ...
最新文章
- 赛迪研究院可以入编吗_对医护来说,拥有编制很重要吗?
- 《白话法律42讲》读后感
- sqlserver的索引创建
- javascript中的this使用场景
- SQL随机生成6位数字
- 扫码枪输入mysql_使用jQuery监听扫码枪输入并禁止手动输入的实现方法
- 值对于 int32 太大或太小。_失效值处理
- 蓝桥杯 PREV-5历届试题 错误票据
- Intent调用大全
- 应用统计学比上比不上计算机,计算机技术在医学统计学教学中应用的思考
- 【MATLAB信号处理】信号波形的产生及系统时域分析
- 硬件:Intel CPU发展史
- 我是一个线程(转载自: IBM刘欣)
- MongoDB系列四:解决secondary的读操作
- 我的个人博客是如何申请百度联盟通过的?
- 如何设置vscode默认谷歌浏览器打开
- 34年的见证:从“用脚丈量”到“云端管理”
- 分类预测 | MATLAB实现KNN分类预测(SA-KNN、GOA-KNN对比)
- 转:德鲁克:教育的产物是什么
- 深入浅出讲解h5棋牌开发的socket通信