C语言课程设计:最伟大的puzzle.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最伟大的puzzle 一 目的 通过验证谁是最伟大的puzzle,培养学生综合利用C语言进行程序设计的能力,加强函数的运用及学生对计算机软件基础的认识,使学生将所学知识转化为分析和设计简单问题的能力,学会查资料和工具书。 二 需求分析 1.任务 此次程序设计的任务是要求学生将所学的C语言知识运用到具体的课程设计里面,而这次需要解决的问题就是谁是最伟大puzzle这个问题,此次程序要求学生利用数据结构,文件,C语言等研究出在1000次射击里面谁是赢家,并且将每次的结果输出到指定的文件中 2.规定 (1).输入的形式和输入值的范围:输入的数据类型只有整型和字符型,n的值只有输入1或2,程序才会运行得出结果,否则将提示出错。当提示是否尝试另一种游戏方法时,只有输入y,Y或n,N程序才会正常运行,否则将提示出错。 (2)输出形式:当输入的n值为1或2时,将会输出正确的结果,即三个人在一千次游戏当中各自获胜的概率,若用户输入其它数值,将输出一语句提示用户输入错误。在以一种方法进行了游戏之后,将输出提示语句,提示用户是否继续以另一种游戏方法再进行一次游戏,这时若用户输入y或Y,则界面将会提示用户再一次输入n值,若输入n或N,则输出一语句提示游戏结束,若输入其它的字符,则提示输入错误。 (3)程序所能达到的功能:a.模拟一次射击的过程;b.模拟一次整个游戏的循环过程;c.进行一千次游戏,并将每个游戏参与者最后获胜的概率输出;d.能将游戏方法的标志,即n值,以及每次游戏的结果,还有最后每个人获胜的概率,记录入指定的文件当中;e.当输入的数据不符合要求是,程序会输出语句提示用户输入错误;f.当以一种游戏方法进行了游戏时,程序会提示用户是否以另一种游戏方法进行游戏。 (4)初步的测试计划:按如下顺序进行:a.输入n值为1,以测试第一种游戏方法;b.输入y或Y继续进行,接着输入n值为2,以测试第二种游戏方法;c.输入n值为3,以测试当输入的n值不符合要求时程序的反应. 三 概要设计 1.所有数据类型的定义及含义: shooting:定义为实型,含义是0到1的随机数。Winner:整型,用于标志每次游戏的结果,即获胜者。Player:整型,用于记录人数。Alive,Bob,Charlie:都是整型,且值只有1或0,分别用于标志三个人的死活。a,b,c:整型的指针变量,分别指向Alive,Bob,Charlie,用于赋值给函数shoot的形参,表示被射击的人。n:整型变量,值只能是1或2,用于标志游戏方法。A,B,C:整型变量,分别用于记录三个人在一千次游戏当中获胜的次数。j:整型,用于一千次游戏的计数器。k:字符型变量,用于标志游戏是否继续进行。fp1:指向结构体的指针变量,用于标志指定的文件。Player1,Player2,Player3:实型变量,用于记录每个人获胜的概率。 2.函数的调用关系图: 3.个程序模块的功能: void shoot ( int *targetAlive, double accuracy ):模拟一次射击过程,电脑产生一个0到1的随机数,若此随机数小于射击者的概率,则被射击者死,反之则活。int startDuel(int n):模拟一次完整的游戏循环过程。main():模拟一千次游戏过程,并对每个人获胜的概率进行记录。 4.各模块之间的层次(调用)关系: shoot函数是一个独立的函数。startDuel函数包含了shoot函数,其中若干次调用了shoot函数。main函数又包含了startDuel函数,其间一千次调用了startDuel函数。 四 详细设计 1.主程序流程图: 2.最终源程序: #include stdio.h #include stdlib.h #include time.h void shoot ( int *targetAlive, double accuracy )/*此函数模拟一次射击过程*/ {float shooting; shooting=random(101)/100.00;/*产生0到1的随机数*/ if(shootingaccuracy) *targetAlive=0;/*随机数小于概率,该人死亡*/ else *targetAlive=1;/*随机数大于概率,该人活着*/ } int startDuel(int n)/*此函数模拟一次完整的游戏过程*/ {int winner,player=3; int Alive=1,Bob=1,Charlie=1;/*定义三个整型变量,并赋初值为1,表示每个人初始阶段都是活着*/ int *a,*b,*c; a=Alive;

您可能关注的文档

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档