ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:108.01KB ,
资源ID:18823267      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18823267.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(魔王语言Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

魔王语言Word文件下载.docx

1、(2)(12 n) nn-1 1 在这两种形式中,从左到右均表示解释;从右到左均表示抽象。试写一个魔王语言的解释系统,把他的话解释成人能听得懂的话。【基本要求】用下述两条具体规则(具体规则数量不定)和上述规则形式(2)实现。 设大写字母表示魔王语言解释的词汇,小写字母表示人的语言的词汇;希腊字母表示可以用大写或小写字母代换的变量。魔王语言可含人的词汇。(1).(2).示例:魔王说:B(ehnxgz)B解释成人类语言:tsaedsaeezegexenehetsaedsae若每个小写字母含义如下表所示:tdsaezgxnh天地上一只鹅追赶下蛋恨则魔王说的话是:天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅

2、恨鹅天上一只鹅地上一只鹅四、概要设计 1系统结构图(功能模块图)2功能模块说明1. 文件读取函数int file_rule() ,int file_mean()通过文件函数,提取存储在D:中的rule和mean文件,并将其输出到终端;2. 文件输出函数void output(Lang *L)将提取出的文件内容输出到终端;3. 去除魔王语言中括号模块void translate1(LinkStackNode *S1, LinkStackNode *S2, LinkQueue *Q, char aT)利用队栈的进栈出栈操作,入队出队操作,将魔王语言中的括号去除,使之成为一个字母的序列;4 字母语言

3、转人类语言void translate2(char aT, LinkQueue *Q) 将已经由魔王语言转换成的字母语言通过对照转换成人类语言;5 魔王语言转字母语言void translate3(char aT, LinkQueue *Q)将输入的魔王语言通过循环判断转换成字母语言;6 文件保存函数void file_result(char aT)将已经转换好的魔王语言保存到自定义路径。五、详细设计及运行结果流程图, 函数之间相互调用的图示 ,程序设计及编码, 运行结果。六、调试情况,设计技巧及体会1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。2、在设计过程中的感受。1、程序总

4、体设计结构合理,功能完全,代码注释明晰,可读性高。但是在某些方面存在着不足,比如在魔王语言的程序设计中,并未能够设计出利用数组指针定义栈,完成去多层括号的递归算法。此处是本次程序设计中比较遗憾的一点,我会在更多的时间里,去思考去除多层括号的递归算法。2、本次课程设计中,利用队栈实现魔王语言,使我很好地应用了数据结构中的知识,使我更加巩固了在这方面的内容。同时,在程序的编写过程中,我学会了逐步细化的编程方法,不断地追根溯源,把需要解决的问题逐步细化成许多小问题来解决。 在本次课程设计中,给我感受最深的就是在魔王语言的去括号递归算法部分,C语言无法像C+在需要的时候定义出一个空间,它的局限性,使得

5、在魔王语言的退括号的代码编写中制造了麻烦,自觉C语言能力不敢恭维,应该在以后的时间里,多编程,多练习,提高自己的思维,编程能力。七、参考文献C语言程序设计 谭浩强 清华大学出版社C语言程序设计 王曙燕等 科学出版社数据结构使用C语言 陈一华等 电子科技大学出版社数据结构题集 严蔚敏,吴伟民 清华大学出版社八、附录:源代码(略,详见电子版实验报告)#include stdlib.hstring.h#define T 100#define StackElementType char#define QueueElementType charstruct rule char a10; char b10

6、;f1T;struct meanf2T;typedef struct node StackElementType data; struct node *next;LinkStackNode;void InitStack(LinkStackNode *s) s-next=NULL;int Push(LinkStackNode *s, StackElementType x) LinkStackNode *p; p=(LinkStackNode *)malloc(sizeof(LinkStackNode); if(p = NULL) return (1); p-data=x;next=s-next;

7、next=p; return (0);int Pop(LinkStackNode *s, StackElementType *x) LinkStackNode *q; if(s-next = NULL) return (1); q=s- *x=q-data;next=q- free(q);typedef struct Node QueueElementType data; struct Node *next;LinkQueueNode;typedef struct LinkQueueNode *front; LinkQueueNode *rear;LinkQueue;int InitQueue

8、(LinkQueue *Q) Q-front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode); if(Q-front!=NULL) Q-rear=Q-front;front- return (0); else return (1);int EnterQueue(LinkQueue *Q, QueueElementType x) LinkQueueNode *NewNode; NewNode=(LinkQueueNode *)malloc(sizeof(LinkQueueNode); if(NewNode! NewNode-rear-next=NewN

9、ode;rear=NewNode; else return(1);int DeleteQueue(LinkQueue *Q, QueueElementType *x) LinkQueueNode *p;front=Q-rear) return (1); p=Q-next=p-rear=p) *x=p-int file_rule() FILE *fq; int i=0; fq=fopen(F:rule.txt,rt); if(fq=NULL) printf(打开文件失败! while(fscanf(fq,%s %s,f1i.a,f1i.b)!=EOF) i+; fclose(fq);int fi

10、le_mean()mean.txt,f2i.a,f2i.b)!void file_result(char aT)result.txtwt文件写入失败! exit(1); while(ai!=0) fprintf(fq,%s,ai); printf(文件写入成功!void translate1(LinkStackNode *S1, LinkStackNode *S2, LinkQueue *Q, char aT) int i,j,k,t=0; char str,str1; for(i=0; ai!); i+) Push(S1,ai); for(j=i; aj!( j-); str=aj+1; f

11、or(k=0; knext! DeleteQueue(Q,& Push(S1,str1); for(i=i+1;ai! Push(S1,ai); while(S1- Push(S2,str1); while(S2- Pop(S2,&at); t+; at= i=0; while(ai! if(ai= translate1(S1,S2,Q,a); i+;void translate2(char aT, LinkQueue *Q) int i,j,r,t,m,n,k=0,q=0; n=0; for(j=0; f1j.a0! j+) if(ai=f1j.a0) n+; for(m=0; f1j.bm

12、! m+) EnterQueue(Q,f1j.bm); if(!n) EnterQueue(Q,ai); while(Q- DeleteQueue(Q,&ak); k+; ak= t=0; while(at! for(r=0; f1r.a0! r+) if(at=f1r.a0) q+; t+; if(q) translate2(a,Q);void translate3(char aT, LinkQueue *Q) int i,j,m,n=0; f2j.a0! if(ai=f2j.a0) f2j.bm! EnterQueue(Q,f2j.bm);an); n+; an=void main() L

13、inkStackNode *S1,*S2; LinkQueue *Q; char aT; int i,j=0; S1=(LinkStackNode *)malloc(sizeof(LinkStackNode); S2=(LinkStackNode *)malloc(sizeof(LinkStackNode); Q=(LinkQueue *)malloc(sizeof(LinkQueue); InitStack(S1); InitStack(S2); InitQueue(Q);请输入魔王语言: scanf(,a); if(ai= j+; if(j) translate1(S1,S2,Q,a); file_rule();魔王语言转换1:%sn translate2(a,Q);魔王语言转换2: file_mean(); translate3(a,Q);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1