为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

数算24

2017-10-21 18页 doc 59KB 13阅读

用户头像

is_083599

暂无简介

举报
数算24数算24 辽 宁 工 业 大 学 C语言程序设计 课程设计(论文) 题目: 速算 24 院(系): 软件学院 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 助 教 起止时间: 2009.12.14至2009.12.26 课程设计(报告)任务及评语 院(系):软件学院 教研室:软件教研室 学 号 学生姓名 专业班级 程序设计 (报告)速算24 题目 程序设计的任务与要求: (1)掌握C语言编程的基础知识。 (2)较熟练地编写C语言应用程序。 (3)了解C语言的常用标准函数、编程技巧...
数算24
数算24 辽 宁 工 业 大 学 C语言程序设计 课程设计(论文) 题目: 速算 24 院(系): 软件学院 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 助 教 起止时间: 2009.12.14至2009.12.26 课程设计(报告)任务及评语 院(系):软件学院 教研室:软件教研室 学 号 学生姓名 专业班级 程序设计 (报告)速算24 题目 程序设计的任务与要求: (1)掌握C语言编程的基础知识。 (2)较熟练地编写C语言应用程序。 (3)了解C语言的常用函数、编程技巧、异常处理。 程 序(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。 设 (6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能计 )力都有一个很大的提高。 报 告(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素) 质的提高起一个积极的推动作用。 任 务 课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。 正确地完成上述内容,实习日记,规范完整地撰写出课程设计报告。 指 导 教 师 评 语 及 成 绩 成绩: 指导教师签字: 2009 年 12 月 31 日 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 目 录 第1章 课程设计的目的与要求 .............................. 错误~未定义书签。1 1.1 课程设计目的 ...................................... 错误~未定义书签。1 1.2 课程设计的实验环境 ................................ 错误~未定义书签。1 1.3 课程设计的预备知识 ................................ 错误~未定义书签。1 1.4 课程设计要求 ...................................... 错误~未定义书签。1 第2章 课程设计内容 ...................................... 错误~未定义书签。2 2.1程序功能介绍 ...................................... 错误~未定义书签。2 2.2程序整体设计说明 .................................. 错误~未定义书签。2 2.2.1设计思路 .................................... 错误~未定义书签。2 2.2.2数据结构设计及用法说明 ...................... 错误~未定义书签。3 2.2.3程序结构 .................................... 错误~未定义书签。4 2.2.4各模块的功能及程序说明 ...................... 错误~未定义书签。4 2.2.5程序结果 .................................... 错误~未定义书签。5 2.3程序源代码及注释 .................................. 错误~未定义书签。6第3章 课程设计总结 ........................................................ 12 参考 .................................................................. 14 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 第1章 课程设计的目的与要求 1.1 课程设计目的 本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程 序设计语言(C)》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1. 巩固和加深学生对C语言课程的基本知识的理解和掌握 2. 掌握C语言编程和程序调试的基本技能 3. 利用C语言进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用C语言解决实际问题的能力 1.2 课程设计的实验环境 硬件要求能运行Windows 2000/XP操作系统的微机系统。C语言程序设计及相应的开 发环境。 1.3 课程设计的预备知识 熟悉C语言及C语言开发工具。 课程设计要求 1.4 1. 课程设计题目的要求 2. 写出详细设计说明 3. 编写程序代码,调试程序使其能正确运行 4. 设计完成的软件要便于操作和使用 5. 设计完成后提交课程设计报告 1 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 第2章 课程设计内容 2.1程序功能介绍 “速算24”扑克游戏是个很流行的数学运算游戏。速算24扑克游戏的规则是由系统发出4张扑克牌,用户利用扑克牌的数字及运算符号“+”,“-”,“*”,“/”,及“(”和“)”组成一个计算表达式,从键盘上输入该计算表达式,系统运行后得出计算结果,如果结果等于24,则显示“”,否则,显示“”,接着询问是否继续,按字符n后程序结束,否则系统重复上述步骤。 2.2程序整体设计说明 2.2.1设计思路 (1)点击“开始游戏”的按钮,游戏开始,系统将会从52张扑克牌: 'A','2','3','4','5','6','7','8','9','0','J','Q','K' 红心 黑桃'A','2','3','4','5','6','7','8','9','0','J','Q','K', 草花'A','2','3','4','5','6','7','8','9','0','J','Q','K', 方片'A','2','3','4','5','6','7','8','9','0','J','Q','K' 中随机发出四张牌。 (2)用户将发出的四张牌用+,-,*,/,(,)组合起来,并把组合的表达式输入到输入框里。 (3)点击确定按钮,游戏将会计算你输入的表达式是否合法,或者结果是否正确,并且给出提示。 (4)如果输入的表达式不正确,则会让用户重新输入选择是否继续;如果输入的表达式正确,则重新开始游戏。 2.2.2数据结构设计及用法说明 所用到的数据结构有: STACK1:STACK2:Main:主函数 void rand1(int j) :随机发牌函数 void play(void) :发牌的具体过程 void close(void) : 图形关闭 2 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) void change( ): 中缀变后缀函数 2.2.3程序结构 开始 随机产生除大小王的四张牌 输入+,-,*,/,(,)将所产 生的四张牌组合起来 将组合后的式子进行计算得出结果 result Y N result== 24? 输出“Very good!” 输出“Wrong!” 输入是否继续Y或N N Ch==N? Y 结束 2.1程序结构浏览图 2.2.4各模块的功能及程序说明 第一个模块——main()主函数:首先确定由电脑随机发牌,通过输入字符选定。选 定后调用图形初始化函数,根据提示输入相应字符串,并对其进行计算,计算完毕进行 结果处理,最后关闭图形系统,程序结束。 3 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 第二个模块——void rand1() 随机发牌函数:由系统随机发牌,循环直到有牌发,花色随机,大小随机,用条件语句if实现无重复发牌,并在左上角,右下角显示出花色,大小,牌面显示花式。 第三个模块——void play( ) 具体发牌函数:发牌的具体过程,利用循环语句for语句来实现随即取牌,延时显示画空牌的过程。 第四个模块——void init( ) 图形驱动函数。 第五个模块——void close()图形关闭:图形关闭函数Close(),调用Closegraph()关闭图形系统,程序结束。 第六个模块——void change( ) 中缀变后缀函数:利用循环语句if语句和while 语句,对输入的字符串进行标记,处理。 2.2.5程序结果 图2.2程序结果 图2.3程序结果 2.3程序源代码及注释 #define N 20 #define COL 100 4 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) #define ROW 40 #include "stdio.h" #include "time.h" /*系统时间函数*/ #include "graphics.h" /*图形函数*/ #include "alloc.h"/*动态地址分配函数*/ #include "stdlib.h" /*库函数*/ #include "string.h" /*字符串函数*/ #include "ctype.h" /*字符操作函数*/ char p[4][13]={ {'A','2','3','4','5','6','7','8','9','0','J','Q','K'},/*扑克牌,10用0来表示*/ {'A','2','3','4','5','6','7','8','9','0','J','Q','K'}, {'A','2','3','4','5','6','7','8','9','0','J','Q','K'}, {'A','2','3','4','5','6','7','8','9','0','J','Q','K'}}; typedef struct node { int data; struct node *link; }STACK1; /*栈1*/ typedef struct node2 { char data; struct node2 *link; }STACK2; /*栈2*/ void init(void);/*图形驱动*/ void close(void);/*图形关闭*/ void play(void);/*发牌的具体过程*/ void rand1(int j);/*随机发牌函数*/ void change(char *e,char *a); /*中缀变后缀函数*/ int computer(char *s); /*后缀表达式计算函数*/ STACK1 *initstack1(STACK1 *top); /*栈1初始化*/ STACK1 *push(STACK1 *top,int x); /*栈1入栈运算*/ STACK1 *pop(STACK1 *top); /*栈1删除栈顶元素*/ 5 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) int topx(STACK1 *top); /*栈1读栈顶元素*/ STACK1 *ptop(STACK1 *top,int *x); /*栈1读出栈顶元素值并删除栈顶元素*/ int empty(STACK1 *top); /*判栈1是否为空函数*/ STACK2 *initstack2(STACK2 *top); /*栈2初始化*/ STACK2 *push2(STACK2 *top,char x); /*栈2入栈运算*/ STACK2 *pop2(STACK2 *top); /*栈2删除栈顶元素*/ char topx2(STACK2 *top); /*栈2读栈顶元素*/ STACK2 *ptop2(STACK2 *top,char *x); /*栈2读出栈顶元素值并删除栈顶元素*/ int empty2(STACK2 *top); /*判栈2是否为空函数*/ int text1(char *s) ; /*显示文本*/ main() { char s[N],s1[N],ch; int i,result; { if(!empty2(top)) /*如栈不为空*/ { w=topx2(top); while(w!='(') /*当栈顶元素不是“(”时反复循环*/ { a[j]=w; j++; /*将栈顶元素存入表达式a中,a的下标加1*/ top=pop2(top); /*删除栈顶元素*/ if(empty2(top)) /*如果栈为空*/ break; /*跳出循环*/ else w=topx2(top); /*否则读栈顶元素*/ } } top=push2(top,e); /*将当前e的字符元素压入堆栈*/ 6 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) } if(e=='*'||e=='/') /*如果字符是乘或除号时*/ { if(!empty2(top)) /*如栈不为空*/ { w=topx2(top); /*读栈顶元素存入w*/ while(w=='*'||w=='/')/*当栈顶元素是乘或除时反复循环*/ { a[j]=w; j++; /*将栈顶元素存入字符串a中,a的下标加1*/ top=pop2(top); /*删除栈顶元素*/ if(empty2(top)) /*如果栈为空*/ break; /*跳出循环*/ else w=topx2(top); /*否则读栈顶元素*/ } } top=push2(top,e); /*将当前e字符元素压入堆栈*/ } i++; /*e的下标加1*/ } while(!empty2(top)) /*当不为空时反复循环*/ top=ptop2(top,&a[j++]); /*将栈顶元素存入数组a中*/ a[j]='\0'; /*将字符串结束标记写入最后一个数组元素中构成字符串*/ } int computer(char *s) /* 计算函数*/ { STACK1 *top=NULL; int i,k,num1,num2,result; i=0; 7 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) while(s!='\0') /*当字符串没有结束时作以下处理*/ { if(isdigit(s)) /*判字符是否为数字*/ { k=0; /*k初值为0*/ do{ k=10*k+s-'0'; /*将字符连接为十进制数字*/ i++; /*i加1*/ }while(s!='.'); /*当字符不为„.?时重复循环*/ top=push(top,k); /*将生成的数字压入堆栈*/ } if(s=='+') /*如果为'+'号*/ { */ top=ptop(top,&num2); /*将栈顶元素取出存入num2中 top=ptop(top,&num1); /*将栈顶元素取出存入num1中*/ result=num2+num1; /*将num1和num2相加存入result中*/ top=push(top,result); /*将result压入堆栈*/ } if(s=='-') /*如果为'-'号*/ { top=ptop(top,&num2); /*将栈顶元素取出存入num2中*/ top=ptop(top,&num1); /*将栈顶元素取出存入num1中*/ result=num1-num2; /*将num1减去num2结果存入result中*/ top=push(top,result); /*将result压入堆栈*/ } if(s=='*') /*如果为'*'号*/ { top=ptop(top,&num2); /*将栈顶元素取出存入num2中*/ top=ptop(top,&num1); /*将栈顶元素取出存入num1中*/ result=num1*num2; /*将num1与num2相乘结果存入result中*/ 8 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) top=push(top,result); /*将result压入堆栈*/ } if(s=='/') /*如果为'/'号*/ { top=ptop(top,&num2); /*将栈顶元素取出存入num2中*/ top=ptop(top,&num1); /*将栈顶元素取出存入num1中*/ result=num1/num2; /*将num1除num2结果存入result中*/ top=push(top,result); /*将result压入堆栈*/ } i++; /*i加1*/ } top=ptop(top,&result); /*最后栈顶元素的值为计算的结果*/ return result; /*返回结果*/ } STACK1 *initstack1(STACK1 *top) /*初始化*/ { top=NULL; /*栈顶指针置为空*/ return top; /*返回栈顶指针*/ } STACK1 *push(STACK1 *top,int x) /*入栈函数*/ { STACK1 *p; /*临时指针类型为STACK1*/ p=(STACK1 *)malloc(sizeof(STACK1)); /*申请STACK1大小的空间*/ if(p==NULL) /*如果p为空*/ { printf("memory is overflow\n!!"); /*显示内存溢出*/ exit(0); /*退出*/ } p->data=x; /*保存值x到新空间*/ p->link=top; /*新结点的后继为当前栈顶指针*/ 9 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) top=p; /*新的栈顶指针为新插入的结点*/ return top; /*返回栈顶指针*/ } */ STACK1 *pop(STACK1 *top) /*出栈 { STACK1 *q; /*定义临时变量*/ q=top; /*保存当前栈顶指针*/ top=top->link; /*栈顶指针后移*/ free(q); /*释放q*/ return top; /*返回栈顶指针*/ } int topx(STACK1 *top) /*读栈顶元素*/ { if(top==NULL) /*栈是否为空*/ int empty2(STACK2 *top) /*判栈是否为空*/ { if(top==NULL) /*如果为空*/ return 1; /*返回1*/ else return 0; /*否则返回0*/ } int text1(char *s) { setbkcolor(BLUE); /*设置背景颜色为蓝色*/ cleardevice(); /*清除屏幕*/ setcolor(12); /*设置文本颜色为淡红色*/ settextstyle(1, 0, 8);/*三重笔划字体, 放大8倍*/ outtextxy(120, 120, s); /*输出字符串s*/ setusercharsize(2, 1, 4, 1);/*水平放大2倍, 垂直放大4倍*/ 10 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) setcolor(15); /*设置文本颜色为*白色*/ settextstyle(3, 0, 5); /*无衬字笔划, 放大5倍*/ outtextxy(220, 220, s); /*输出字符串s*/ getch(); /*键盘输入任一字符*/ return ; /*返回*/ } 11 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 第3章 课程设计总结 半学期的理论科结束了,我们迎来了新一轮的挑战,我们要运用所学的理论去实践了。 发现,提出,分析和解决实际问题,锻炼实践课程设计是培养学生综合运用所学知识, 能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整两个星期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针„„通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。 在设计中我们遇到了很多编程问题,最后在老师的指导下,我们慢慢的进入状态,我们做的是一个速算24小游戏的设计,内容包括很多。运用的函数也是比较复杂的,我们一组有三个人,我们分工合作,首先我们一起完成了结构题,然后我们一人各负责一个函数程序的设计,经过两个星期的努力,我们完成了大半个程序,但是总是有很多错误出现,有好多是些小问题,这都是我们粗心大意造成的,所以设计程序一定要仔细,不容一点的马虎。在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。同时,也让我知道了,合作的力量,如果是孤军奋战的话,我们也不能在规定时间内完成,最终达到游纫而解。 善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高。 12 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 付出就意味着辛苦,之后却换来了收获。通过实际动手做,我们才真正领略到“艰苦奋斗”这一词的真正含义,我们想说,编程确实有些辛苦,但苦中也有乐,在这个团队的任务中,一起的工作可以让我们有说有笑,相互帮助,配合默契。对我们而言,知识上的收获重要,精神上的丰收是可喜的。挫折是一份财富,经历是一份拥有。这次实际操作必将成为我们人生旅途上一个非常美好的回忆~ 同时,我们也学会了感恩,我们更加了解劳动的艰辛。我们会更加珍惜劳动成果。 同时,我也要感谢我的老师,在他的指导和帮助下,我才可以顺利完成这次课设。我明白了他的良苦用心,在这里忠心的对他说声,谢谢~ 13 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 参考文献 [1] 苏小红等.,语言大学实用教.北京:电子工业出版社.2004:50-120 [2] 徐金梧等.TURBO ,实用大全.北京:机械工业出版社. 1996:34-61 [3] 苏小红等.,语言大学实用习题与实验指导.北京:电子工业出版社2008:59-130 [4] 龚沛曾等. Visual Basic实验指导与测试.北京:高等教育出版社.2000:21-56 [5] 姜雪,王毅,刘立君.C语言程序设计实验指导.北京:清华大学出版社,2009:30-91 [6] 卢玉清.C语言程序设计教程.北京:清华大学出版社,2009:50-94 [7] 张锐军.数据结构.北京:清华大学出版社,2009:64-102 [8] 王士元. C 高级实用程序设计. 北京:清华大学出版社,1996:31-189 [9]李大友.C语言程序设计基础.北京: 清华大学出版社, 1999: 56-86 [10]黄逵中. C语言实例教程.北京:中国电力出版社,2004:256-378 14
/
本文档为【数算24】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索