掷骰子游戏-c语言程序课程设计.doc
计算机学院c课程设计课程设计报告学号2015-2016学年 第二学期C语言程序设计课程设计报告题目:掷骰子游戏专业:计算机科学与技术班级:15计科(3)班姓名:廖晶晶指导教师: 邓 明成绩:计算机学院2016 年 4月 26 日目 录1.课题设计的目的与要求.31.1实验目的31.2设计要求.32.课题分析.42.1掷骰子游戏.42.1.1题目内容描述.42.1.2输入数据类型、格式和内容限制和输出数据说明.4 2.1.3流程图.53.总结.84.参考书籍.85.附件.8 51程序源代码.8掷骰子游戏1.课题设计的目的与要求1.1实验目的C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了学习必须的基本知识,如概念,方法和语法规则之外,更重要的是进行实训,以提高学习者的动手和编程能力,这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该C语言程序任务书,以在实训过程中给学生提供帮助。达到如下目的:(1) 在课程结束之前,让学生进一步了解c程序设计语言的编程功能(2) 让学生扎实掌握c程序设计语言的相关知识;(3) 通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。1.2设计要求根据实验内容的要求自由选定题目。编写程序要求遵循如下基本要求:l 模块化程序设计l 锯齿型书写格式l 必须上机调试通过2.课题分析2.1掷骰子游戏2.1.1题目内容的描述两人玩骰子,游戏规则如下:1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。2) 将每人每次的分值累加计分。3) 当两个骰子点数都为6时计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。4) 结束条件:当双方都掷10次或经过5次后一方累计分数为另一方的两倍。最后显示双方分数并判定优胜者。2.1.2输入数据类型、格式和内容限制和输出数据说明输入数据类型:整型数格式:srand(time(0);输入数=rand()%6+1;内容限制:产生最多十次随机数输出数据说明:掷骰子的获胜者2.1.3流程图否是否是开始输入x,yx=y是否x=6x>yn=n+8n=n+7n=n+yn=n+x输出n结束 图1否是否是否是开始输入i,ji=ji=6i>jz=z+8z=z+7z=z+jz=z+i输出z结束图22.1.4调试过程及实验结果出现的问题:每次循环产生的随机数相同。解决方法:把随机函数移到for循环前。执行结果截图图33.总结这是第一次接触c+,感觉很朦胧,但是通过老师悉心的教导和同学们的沟通与交流后,还是学会了很多的东西。从一个简单的变量,表达式到语句,函数。发现那些程序虽然很抽像但也不乏有很多的乐趣。经过这半学期的实践课程,我也初步了解了c语言的基础,也能独立初步完成编程操作,但目前作为初学者,无法实现较复杂的编程,有些较为复杂的程序更是看不懂,各方面有待提高。C语言作为现代大学生最重要的课程之一,用途广泛,更使我认识到了独立思考,实践操作的重要性。C语言的学习不仅重理论,更重实践。而学好c语言的一大方法便是“实践”,在c语言实践过程中遇到的种种问题,及解决问题的方法,更是锻炼了学生的实践能力,使我们不仅是学习理论,更学习了实践,今后一定要理论和实践有机结合,加上独立思考和不懈努力的学好c语言,为撬开编程的大门不懈努力。4.参考书籍1 严蔚敏,吴伟民,米宁等.数据结构(C语言版)M .北京:清华大学出版社,20072 谭浩强著.C程序设计(第三版)M .北京:清华大学出版社,20053 耿国华.数据结构C语言描述M.北京:高等教育出版社,20104 严蔚敏,吴伟民,米宁等.数据结构题集(C语言版)M .北京:清华大学出版社,20115 严蔚敏,李冬梅等. 数据结构(C语言版)(第2版)M .北京:清华大学出版社,20145.附件51程序源代码#include<stdio.h> #include<stdlib.h> #include<time.h> void main() int a,e=0,f=0,g,h,l,m; int point1(int x,int y); int point2(int i, int j); srand(time(0); for(a=0;a<10;a+) if(a=5) if(e=f*2|f=e*2) break; g=rand()%6+1;/*产生16的随机数*/ h=rand()%6+1; l=rand()%6+1; m=rand()%6+1; e=e+point1(g,h);/*计算总分数*/ f=f+point2(l,m); printf("甲的总分:%dn乙的总分:%dn",e,f); if(e>f)printf("甲获胜n"); else if(e=f)printf("甲乙平手n"); else printf("乙获胜n"); int point1(int x,int y) int n=0; printf("甲:%d %dn",x,y); /*判断每次得分*/ if(x=y) if(x=6) n=8; else n=7; else if(x>y) n=y; else n=x; return n; int point2(int i, int j) int z=0; printf("乙:%d %dn",i,j); if (i=j) if(i=6) z=8; else z=7; else if(i>j) z=j; else z=i; return z; 10