《C语言课程设计》
题 目:班 级:姓 名:指导教师:所属系部:电子科学与技术系程序设计基础课程设计
2009年 6 月24 日
21点游戏设计
1 游戏规则
此游戏,原则上是可以由不限定的人数来玩,但是随着参与人数的增加,在最后成绩的比较方面会比较的繁琐,不像两个人之间的比赛结果那么明显,所以也应该将参与人数控制在一定的范围之内。确定参与人数后,系统会随机为每个人发三张牌,然后计算这三张牌的和进行比较。如果这三张牌的和大于21,则此人将会输掉比赛,除非其他人的和也大于21(即假若每个人的三张牌的和都大于21时,该局为平局,打成平手)。如果有的和大于21,有的和小于21,则大于21的人输掉比赛,再比较小于21的部分,谁的三张牌的和最接近21,则谁是该局的赢家。一局玩完后,玩者可以根据自己情况进行选择是否要再玩一局。若选择再玩时,系统会再进行下一次的循环。
2 程序算法
1由系统随机产生几组随机数,每组3个随机数。 ○
2计算每一组的三个随机数的和。 ○
3 比较每组和的大小。 ○
4得出比赛结果 ○
3 关键算法流程图
总体框架
开始 开始 Flag=1 Y 产生随机数,求和,比较,得结果 输入字符 C Y C =Y N 结束
4 程序代码
/* Note:Your choice is C IDE */
#include int i,t,flag, j,m; int b[8],a[3*N]; char c; b[1]=0;flag=1; while (flag) //控制循环 { srand(time(NULL)); / scanf(\"%d\ //用j控制组数 for(t=0;t<3*j;t++) //产生几组随机数 {if (t%3==0) printf(\"\\n\"); a[t]=rand()%13+1; printf(\"%5d\ } printf(\"\\n\"); for(i=1;i<=j;i++) //求每组随机数的和 { for(t=3*(i-1);t<3*i;t++) b[i]=b[i]+a[t]; printf(\"b[%d]=%d\\n\ b[i+1]=0; } printf(\"\\n\"); { for(t=1;t for (i=1;i<=j;i++) printf(\"%5d\ } printf(\"\\n\"); for (i=1;i<=j;i++) //得出结论 if(b[i]>21) { printf(\"这一局为第%d个人赢\\n是否再玩一局,若输入'Y'则继续游戏,输入'N'结束游戏\\n\ getchar(); //与while语句是一个系统 c=getchar(); if(c=='Y') flag=1; else flag=0; } } } 5 在程序设计中,出现的问题和解决方案: 由于是多组数据之间的比较,首先在同时产生几组随机数时遇到障碍,产生随机数的代码是从网上搜索得到的,再加上一些修改,达到所需的要求,同时有一些小的细节是在老师帮助下完成的。对于多组数据的处理有些麻烦,首先要依次求和,在求和过程中要注意细节问题。对于多组数据的比较,最终只能先排序,然后得出结论,这一个程序是比较繁杂的。本程序的不足在于最终结果表达不直接,应再加一些程序让玩者更加清晰明了。 6 体会: 本次程序是一个繁琐的过程,是在多次修改加上老师的指导的基础上才完成的。通过本次实验,我认识到要想完成一件事需要一次次地尝试,一次次地修改,然后再进行试验。在修改的工程中,要反复思考问题出在何处,要慢慢的找寻,一点点的排除,在老师为我讲解时我也感受到老师做事的毅力。做任何事都要一点点的,脚踏实地的去做。本次程序设计虽然不算完满,但都是自己一点点做出来的,还是有很大收获的。 因篇幅问题不能全部显示,请点此查看更多更全内容