资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
课程设计(论文)题 目 名 称 速算 24 课 程 名 称 数据结构课程设计 学 生 姓 名 王浩明 学 号 0941301253 系 、专 业 信息工程系、信息类 指 导 教 师 谢兵 2010年 12 月 22 日摘 要设计一个简单的速算24程序,由系统发出4张扑克牌,输入一个利用扑克牌的数字及运算符号“+”,“-”,“*”,“/”,及“(”和“)”组成计算表达式,系统运行后得出计算结果,如果结果等于24,则显示“”,否则,显示“”,接着询问是否继续,按字符n后程序结束,否则系统重复上述步骤。用栈来解决。关键词:速算24;栈;计算;SummaryDesign a simple speed is 24, the system to make four playing card, enters a playing card number and operation of using the notation and - and man, and ( and ) of the expression, the system to run after the calculation, if the result is 24, and and then asked whether to go on a n after the application or system to repeat steps above. in the stack to solve.Keywords : speed is 24 ;Stack ; the stack ;目 录1 问题描述12 需求分析13 概要设计,131设计思路132模块划分133流程图24 详细设计341数据类型的定义342程序分析343基本程序35 分析结果6 课程设计总结18参考文献181 问题描述用C语言,结构体实现速算24的运算,从一副牌中随机发出4张扑克,用扑克牌的数字及运算符号“”、“-”、“”、“/”及括号“(”和“)”组成一个计算表达式,从键盘上输入该计算表达式,系统运行后得出计算结果,如果结果等于24,则显示“very good”,否则,显示“wrong!”,接着询问是否继续,按字符n后程序结束,否则系统重复上述步骤。2 需求分析用二维数组char p413存放扑克,用A表示1,0表示10,J、Q、K分别表示11、12、13。建立两个栈分别存放随机发的四张牌和运算符进行入栈出栈操作进行速算,输出计算的值判断如果结果等于24则成功若结果不为24继续循环操作直到结果为24或者输入n或N终止。3 概要设计,31设计思路(1)首先定义全局变量,引入标准输入与输出函数,建立结构体对速速24进行相关的操作。(2)主函数main,判断栈空,计算机随机发发出四张牌进行入1栈操作。(3)利用出栈操作栈1栈2进行运算操作。(4)运算结果等于24结束不等于24继续循环直到出现24或者按n或N结束。32模块划分本程序包括一个模块:主程序模块,main( ) 初始化;定义数据类型;初始化栈;发牌进行入栈出栈运算操作;33流程图开始发四张牌输入表达式字符s1调用change函数将中缀表达式变后缀表达式调用计算函数计算表达式的值返回结果result结果=24jieguo输出结果“wrong”输出结果“very good”是否继续YN不输入字符输入N或n入栈1入栈2结束4 详细设计41数据类型的定义(1)数组类型#define N 20#define COL 100#define ROW 40#include stdio.h#include time.h /*系统时间函数*/#include alloc.h/*动态地址分配函数*/#include stdlib.h /*库函数*/#include string.h /*字符串函数*/#include ctype.h /*字符操作函数*/(2)栈Stack1,stack2;42程序分析此程序只包含主函数部分;主函数包含,(1)栈的建立及初始化(2)随机发牌;(3)牌的入栈;(4)中缀字符转后缀(5)出栈计算;(6)判断计算值(7)计算值等于24停止不等于24继续循环。5 分析结果测试数据及结果如下:从结果显示来看,此程序正确。6 课程设计总结 通过这次数据结构课程设计让我对有了更深刻的了解,也让我认识到数据结构这门课对于我们专业的重要性,更让我体会了团队的力量。这次课程设计我有幸被分到和唐玉柏同学一组,他是一个十分优秀的合作伙伴,正是他让我领略了团队合作的真谛。从一开始拿到课程设计,我跟唐玉柏经过讨论,达成了一个分工合作的共识,他主要负责源程序这一块,而我就负责流程图那一部分。在接下来这些日子里我们都在各自努力的进行着,但中间并不缺少交流与讨论。一个星期过去了,我们的课程设计也基本快完成了。为了让课程设计能更好,我们就请教了一些优秀的同学,当然还有我们负责任的老师谢老师。 这次课程设计能顺利完成,我要感谢许许多多的人,正因为他们的支持与指导,才能让我在课程设计过程中不那么笨拙。最后,我要感谢我的合作伙伴唐玉柏同学,是他给了我无尽的支持与合作,当然还要感谢我的指导老师谢兵老师,是他给了我无穷的耐心与指导。谢谢你们!参考文献1 黄同成,黄俊民,董建寅数据结构2张福祥,牛莉. C语言程序设计. 附录(源程序清单) #define N 20#define COL 100#define ROW 40#include stdio.h#include time.h /*系统时间函数*/#include alloc.h/*动态地址分配函数*/#include stdlib.h /*库函数*/#include string.h /*字符串函数*/#include ctype.h /*字符操作函数*/char p413=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 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删除栈顶元素*/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 sN,s1N,ch; int i,result; int gdriver, gmode; init(); /*初始化函数*/ while(1) play(); /*发牌*/ gotoxy(1,15); /*移动光标*/ printf(-Note-n); printf( Please enter express accroding to above four numbern); /*提示信息*/ printf( Format as follows:2.*(5.+7.)n);/*提示输入字符串格式*/ printf( -n); scanf(%s%c,s1,&ch); /*输入字符串压回车键*/ change(s1,s); /*调用change函数将中缀表达式s1转换为后缀表达式s*/ result=computer(s); /*计算后缀表达式的值,返回结果result */ if(result=24) /*如果结果等于24*/ text1(very good); /*调用函数text1显示字符串very good*/ else text1(wrong!);/*否则函数text1显示字符串wrong!*/ printf(Continue (y/n)?n); /*提示信息,是否继续*/ scanf(%c,&c
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号