




免费预览已结束,剩余17页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计(论文)题 目 名 称 速算 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,&ch); /*输入一字符*/ if(ch=n|ch=N) /*如果该字符等于n或N*/ break; /*跳出循环,程序结束*/ /*否则,开始下一轮循环*/ close(); return; /*返回*/ void rand1(int j)/*随机发牌函数*/int kind,num; char str3,n; randomize();while(1)/*循环直到有牌发*/ num=random(13); /*大小随机数*/ if(pkindnum!=-1) /*该数未取过*/ n=pkindnum; /*取相应位置的扑克牌数*/ pkindnum=-1; /*牌发好以后相应位置的元素置-1*/ break; if(n!=0)/*输出其牌他*/ settextstyle(0,0,3); sprintf(str,%c,n); outtextxy(COL+j*100-5,ROW+100-5,str);/*显示牌的大小*/ else/*输出10的时候*/ sprintf(str,%d,10); outtextxy(COL+j*100-6,ROW+100-5,str); void play(void)/*发牌的具体过程*/ int j; for(j=0;jdata=x; /*保存值x到新空间*/ p-link=top; /*新结点的后继为当前栈顶指针*/ 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) /*栈是否为空*/ printf(Stack is nulln); /*显示栈为空信息*/ return 0; /*返回整数0*/ return top-data; /*返回栈顶元素*/ STACK1 *ptop(STACK1 *top,int *x) /*取栈顶元素,并删除栈顶元素*/ *x=topx(top); /*读栈顶元素*/ top=pop(top); /*删除栈顶元素*/ return top; /*返回栈顶指针*/ int empty(STACK1 *top) /*判栈是否为空*/ if(top=NULL) /*如果为空*/ return 1; /*返回1*/ else return 0; /*否则返回0*/ STACK2 *initstack2(STACK2 *top) /*初始化*/ top=NULL; /*栈顶指针置为空*/ return top; /*返回栈顶指针*/ STACK2 *push2(STACK2 *top,char x) /*入栈函数*/ STACK2 *p; /*临时指针类型为STACK2*/ p=(STACK2 *)malloc(sizeof(STACK2); /*申请STACK2大小的空间*/ if(p=NULL) /*如果p为空*/ printf(memory is overflown!); /*显示内存溢出*/ exit(0); /*退出*/ p-data=x; /*保存值x到新空间*/ p-link=top; /*新结点的后继为当前栈顶指针*/ top=p; /*新的栈顶指针为新插入的结点*/ return top; /*返回栈顶指针*/ STACK2 *pop2(STACK2 *top) /*出栈*/ STACK2 *q; /*定义临时变量*/ q=top; /*保存当前栈顶指针*/ top=top-link; /*栈顶指针后移*/ free(q); /*释放q*/ return top; /*返回栈顶指针*/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天真教育中班绘本课程设计
- 模具设计产品开发流程与关键技术
- 分级护理在护理管理领域的运用
- 电影类型介绍英文版课件
- 教育热点问题研究与发展趋势
- 2023年直接考核公开招聘服务期满人员报名登记表
- 渠道销售技巧培训
- 梨状窝恶性肿瘤的治疗及护理
- 人力资源管理模拟招聘
- 小学心理健康教育要点
- 建筑公司挂靠合同书
- 农业金融服务平台合作协议
- 钢结构工程合同补充协议
- 心理健康教育宣传与保健意识增强
- ARDS肺保护性通气策略
- ISO50001-2025能源管理体系管理评审报告全套资料
- 消防禁酒6个严禁课件
- 2025标准版企业劳动合同样本
- 公司车间门窗管理制度
- 春节期间博物馆应急预案
- 成人慢性肾脏病食养指南(2024年版)解读
评论
0/150
提交评论