掷骰子游戏-c语言程序课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号2015-2016学年第二学期
《C语言程序设计》
课程设计报告
题目:掷骰子游戏
专业:计算机科学与技术
班级:15计科(3)班
姓名:廖晶晶
指导教师:邓明
成绩:
计算机学院
2016 年4月26 日
目录
1.课题设计的目的与要求 (3)
1.1实验目的 (3)
1.2设计要求 (3)
2.课题分析 (4)
2.1掷骰子游戏 (4)
2.1.1题目内容描述 (4)
2.1.2输入数据类型、格式和内容限制和输出数据说明 (4)
2.1.3流程图 (5)
3.总结 (8)
4.参考书籍 (8)
5.附件 (8)
5.1程序源代码 (8)
掷骰子游戏
1.课题设计的目的与要求
1.1实验目的
C语言是一种编程灵活,特色鲜明的程序设计语言。C语言除了学习必须的基本知识,如概念,方法和语法规则之外,更重要的是进行实训,以提高学习者的动手和编程能力,这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该《C语言程序任务书》,以在实训过程中给学生提供帮助。达到如下目的:
(1)在课程结束之前,让学生进一步了解c程序设计语言的编程功能
(2)让学生扎实掌握c程序设计语言的相关知识;
(3)通过一些有实际意义的程序设计,使学生体会到学以致用,并能
将程序设计的知识与专业知识有效地结合,更全面系统地了解行
业知识。
1.2设计要求
根据实验内容的要求自由选定题目。编写程序要求遵循如下基本要求:
●模块化程序设计
●锯齿型书写格式
●必须上机调试通过
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流程图
图1
否
是
否
是
开始
输入x ,y
x=y
是
否
x=6
x>y
n=n+8 n=n+7 n=n+y n=n+x
输出n
结束
图2 否
是
否
是
否
是
开始
输入i ,j
i=j
i=6
i>j
z=z+8 z=z+7 z=z+j z=z+i
输出z
结束
2.1.4调试过程及实验结果
出现的问题:每次循环产生的随机数相同。解决方法:把随机函数移到for循环前。
执行结果截图
图3
3.总结
这是第一次接触c++,感觉很朦胧,但是通过老师悉心的教导和同学们的沟通与交流后,还是学会了很多的东西。
从一个简单的变量,表达式到语句,函数。发现那些程序虽然很抽像但也不乏有很多的乐趣。经过这半学期的实践课程,我也初步了解了c语言的基础,也能独立初步完成编程操作,但目前作为初学者,无法实现较复杂的编程,有些较为复杂的程序更是看不懂,各方面有待提高。C语言作为现代大学生最重要的课程之一,用途广泛,更使我认识到了独立思考,实践操作的重要性。C语言的学习不仅重理论,更重实践。而学好c语言的一大方法便是“实践”,在c语言实践过程中遇到的种种问题,及解决问题的方法,更是锻炼了学生的实践能力,使我们不仅是学习理论,更学习了实践,今后一定要理论和实践有机结合,加上独立思考和不懈努力的学好c语言,为撬开编程的大门不懈努力。
4.参考书籍
[1] 严蔚敏,吴伟民,米宁等.数据结构(C语言版)[M] .北京:清华大学出版社,2007
[2] 谭浩强著.C程序设计(第三版)[M] .北京:清华大学出版社,2005
[3] 耿国华.数据结构C语言描述[M].北京:高等教育出版社,2010
[4] 严蔚敏,吴伟民,米宁等.数据结构题集(C语言版)[M] .北京:清华大学出版社,2011
[5] 严蔚敏,李冬梅等. 数据结构(C语言版)(第2版)[M] .北京:清华大学出版社,2014
5.附件
5.1程序源代码
#include
#include
#include
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;
/*产生1~6
的随机数
*/
h=rand()%6+1;
l=rand()%6+1;
m=rand()%6+1;
e=e+point1(g,h);
/*计算总分数*/
f=f+point2(l,m);
}
printf("甲的总分:%d\n乙的总分:%d\n",e,f); if(e>f)printf("甲获胜\n");
else if(e==f)printf("甲乙平手\n");
else printf("乙获胜\n");
}