逻辑表达式课程设计报告详解.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中北大学 课程设计报告 2016/2017 学年第 一 学期 学 院: 信息与通信工程学院 专 业: 电子信息科学与技术 学 生 姓 名: 向 伟 学 号: 1505044245 课程设计题目: 逻辑表达式的合理性判断 起 迄 日 期: 2016年 12 月 12 日~2016 年12 月 30 日 课程设计地点: 科学楼五院106 指 导 教 师: 李建民 提交报告日期: 2016 年 月 日 设计要求 一、逻辑表达式的合理性判断 任务:(自己解析后的具体任务); 编写键盘输入与文件读取表达式的程序; 编写可以依次进行识别判断表达式的程序; 整理表达式错误类型,并且编写分类进行错误原因分析的提示程序; 编写扫描表达式的程序; 分类编写检测逻辑运算符,操作数以及括号是否合法的程序; 编写删除所有空格操作的程序 二、要求(自己程序能达到的指标) 表达式既能手动输入,又能从文件中读取,并且能有多个表达式; 可以输入任意表达式(含所有可输入的字符及符号),程序将进行自动 判别是否为逻辑表达式; 能自动删除所有空格; 程序可以分析输入的表达式的所有错误类型并输出到显示器上; 程序优先对括号合法性进行判断,包含所有括号的组合情况; 算法分析与程序详解 整体结构 整个程序分为:表达式数据的读取,空格删除,括号(多重)的扫描判断与记录,运算符的扫描与检测,操作数的扫描与检测。 二、各个函数的详细说明: Deletespace函数,传入表达式字符数组,以及字符坐标,循环检测并删除空格,每次调用完该函数后继续检查当前坐标位置是否为空格,若仍然为空格将继续调用该函数,直至当前位置不再是空格,将继续循环检测下一个坐标。 Getmount函数:为了解决scanf函数和gets函数同时使用时产生的bug(若使用了前者再使用或者,或者将会自动接收前者的一个换行符,导致后者第一个数据无法正常输入),使用该函数将输入的字符数字通过ASCII码转换成整型数字。 Operator函数:在对表达式进行从头至尾的扫描过程中若匹配到含逻辑运算符的字符,则返回成功,否则返回失败,并输出错误类型的提示信息,本次判断将就此结束。 Bracket函数:从左至右扫描过程中,发现括号后检查括号是否合法,若合法,用一个二维数组记录检测到的合法括号的位置信息,并且返回此信息,若不合法,返回不合法类型,并且输出错误类型的提示信息,本次判断将就此结束。 Repeat函数:主要检查是否含有重复的无用括号,例如“((xxx))”,具体方法是,设置该函数返回的缺省值是有重复,在循环检测的过程中,分别用两个数组记录连续的左右括号的位置,然后用两个for循环实现从左括号位置到右括号位置的交叉扫描,如果出现了括号,则修改缺省值为没有重复,并且立刻跳出内部for循环的扫描,进行外层for循环的下一次扫描,如果某次内部扫描完毕后都没有出现括号,则缺省值不会被修改,将直接跳出外层循环,并且返回有重复,输出错误类型提示,结束本次判断。 Scan函数:扫描运算符的函数,其扫描方式为根据Bracket函数和提供的位置进行扫描,如果匹配到运算符,并且检测到该运算符合法,将调用相关运算符检测函数,进行运算符的检测。 Single函数:一元运算符及操作数检测函数,根据一元运算符的特征进行判断该运算符到附近的运算符或者前面左括号后面右括号之间的操作数是否合法,规定操作数为字母或字母组合为合法。若后面紧接着出现左括号则也认为操作数合法。 Double函数:二元运算符及操作数检测函数,根据二元运算符的特征进行判断该运算符到附近的运算符或者前面左括号后面右括号之间的操作数是否合法,规定操作数为字母或字母组合为合法。若后面紧接着出现左括号或者前面紧接着出现右括号则也认为操作数合法。 程序运行过程 每个函数具体如何工作请参考第二部分对各个函数的详细说明。 程序从主函数开始运行,首先进入数据来源方式的选择,用变量select表示,输入1或2分别进入文件读取数据和键盘输入数据的程序模块,在读取到数据后,进入删除空格函数Deletespace函数删除空格后返回新的数据,紧接着调用Operator函数,检测是否存在运算符,若没有则返回该错误类型,若有则进入Bra

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档