算数表达式的求解课程设计报告(编辑修改稿)内容摘要:
break。 case 39。 =39。 : Pop(amp。 StackR)。 i++。 break。 case 39。 39。 : //栈顶的优先级高则出栈, 并将计算结果压入栈内 r = Pop(amp。 StackR)。 a = Pop(amp。 StackD)39。 039。 //操作数在栈内以 ascii 的形式存储,出站后要将ascii转化为整型,然后进行运算 b = Pop(amp。 StackD)39。 039。 Push(amp。 StackD,Operate(a,r,b))。 break。 } } return (GetTop(amp。 StackD)39。 039。 )。 // 将栈顶元素转化为整型的形式输出 } 对于表达式求解函数,在程序中主要思想是对读入的表达式进栈进行判断。 若读入的是‘ 0’到‘ 9’之间的字符,将这些字符采用 ascii相减的形式转化为整型,再入 opnd栈,若读入的字符为运算符,则将运算符入栈,并比较运算符之间的优先级,看是否运算,若栈顶的运算符小于当前输入的运算符,则不需 运算,只要将当前运算符入栈即可。 否则,运算。 运算时先将 optr栈的栈顶运算符和 opnd栈的栈顶、次栈顶元素出栈,并将 opnd 栈中出栈的元素的 ASCII形式转化为整型再计算,最后讲计算结果再转化为 ASCII码的形式压入 opnd栈中。 使表达式求解函数返回值为 opnd的栈顶元素。 上级调试过程 遇到问题以及解决方案 问题 调试时没有错误,但运行时显示错误。 解决方案:通过它提示的错误和警告,在判断是否为运算符的子函数中出现错误,如果为运算符时返回 1,其次返回 0,在返回 0时没有用 else,这样使得整个 子函数可以返回一个有效值。 问题 调试时程序显示没有错误,可以运行,但在运行时结果却出现错误。 解决方案:把程序从头看了一遍,发现在比较优先级的函数中,优先级的比较比较乱,而且部分出错,后来查了关于运算符优先级的资料,通过在纸上把各种优先级列出,解决这个错误。 算法的时间复杂度 由于在主函数用到嵌套循环,故算法的时间复杂度为 O( n^2)。 测试结果及其分析 ( 1)、 实现基本的加减乘除运算,当想要继续输入表达式时点击 enter键,若要结束,点击 n或 N键即可,而且可实现多位数的运算。 ( 2) 、实现复杂的算术表达式 ( 3) 、错误表达式的处理 用户使用说明 ( 1)本程序执行的文件为“算数表达式的求解问题”。 ( 2)所求表达式中都只是仅包含加、减、乘、除 4种基本运算的,其中也包含括号的应用,所有的运算对象均为简单变量,要求将表达式中的数字字符转化为整型,且输入表达式以“ ”结束。 ( 3)输入表达式时,以‘ ’结束,当点击回车键时即可得到运算结果,当想继续输入表达式时,再次点击回车键即可,当想结束时,点击字母 ‘ n’或‘ N’。 ( 4)当输入错误表达式时,程序会给出相应的提醒。 参考文献 ( 1)王昆仑 、李红主编 , 数据结构与算法,北京:中国铁道出版社, 2020年 5月 ( 2)阮宏一 、鲁静主编 , 数据结构课程设计( C/C++描述) , 北京:电子工业出版社, 2020年 1月 附录(源程序) : include include define MAXSIZE 16 typedef struct { int data[MAXSIZE]。 int top。 int base。 //栈低 }Stack。 // 顺序栈的定义 //以下为函数声明 void InitStack(Stack *)。 //初始化栈 int Empty(Stack *)。 //判空栈 void Push(Stack *, int )。 //进栈 int Pop(Stack *)。 //出栈 int GetTop(Stack *)。 //取栈顶元素 int Operate(int ,char ,int )。 // 计算结果 char Proceed(char ,char )。 // 比较优先级 int In(char )。 //判断输入符 int EvalExpres(void)。 //表达式计算函数 // 定义两个栈分别存放运算符和操作数 Stack StackR,StackD。 int main()//主函数 { int v。 char ch。 while(1) { printf(\t************欢迎使用算术表达式的求解的小程序 ************\n)。 v = EvalExpres()。 printf(\t表达式的计算结果为 :%d,v)。 printf(\n\tInput 39。 n39。 to quit and ENTER run again:)。 do { scanf(%c,amp。 ch)。 if(ch == 39。 n39。 || ch == 39。 N39。 ) exit(0)。算数表达式的求解课程设计报告(编辑修改稿)
相关推荐
系统介绍:介绍这个系统的关键技术、开发模式、开发环境及其建立。 ⊙ 需求分析:主要是介绍系统的可行性分析。 ⊙ 系统的总体设计:数据的总体设计,功能模块的总体设计。 ⊙ 系统的详细设计:数据库的详细设计,各功能模块的详细设计。 湖南人文科技学院毕业论文(设计) 8 ⊙ 系统的具体实现:编写代 码,实现各功能模块。 ⊙ 系统的测试与维护:系统完成之后,对系统进行 UT(单元测试 ),IT(集成测试
NNFfP 管子形式对阻力损失的影响 F= 4 8 6 35Re5 of 6 TTc NN 20 18 a2 PP 流体流经过折流板的压降 2 202 2 0 . 3 0 . 4 5 1 7 1 2 . 3 5= 3 . 5 1 6 3 . 5 3 3 8 7 a2 0 . 8 2
部队伍建设取得重要进展,人才工作开创新局面。 创先争优活动和学习型党组织建设深入进行,基 层党组织不断加强。 党风廉政建设和反腐败斗争取得新成效。 同时,必须清醒看到,我们工作中还存在许多不足,前进道路上还有不少困难和问题。 主要是:发展中不平衡、不协调、不可持续问题依然突出,科技创新能力不强,产业结构不合理,农业基础依然薄弱,资源环境约束加剧 ,制约科学发展的体制机制障碍较多
程序的理解; 健壮性:算法应具有容错处理,当输入为非法数据时,算法应对其作出反应,而不是产生莫名其妙的输出结果。 效率与存储量需求:效率指的是算法执行的时间;存储量需求指算法执 行过程中所需要的最大存储空间。 一般这两者与问题的规模有关。 经常采用的算法主要有迭代法、分治法、贪婪法、动态规划法、回溯法、分支限界法 6. 迭代法 : 也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法
MW W W 下 下 下上 上 上下下 下 下 m a xAA aN N eN N e M RW W W 下 下 下上 上 上上 上 上 上m i n 0AA N N eN N e MW W W 下 下 下上 上 上上上 上 上 m i n aN N eN N e M RW W W 下 下
极管 T1 导 通一段时间,三极管导通时 +12V 的电源电压加在小电机上,可使其正转一段时间从而将窗帘打开。 而硅光电池产生的低电平对27 自动闭合电路却不会产生影响,因为硅光电池产生的低电平经过一个比较器后才输入 U2,比较器的功能如下图所示: 326+12v12VViVrVi1 图 25 LM107 比较器 5 当输入电压 Vi> Vr 时, Vi1=12V 即为低电平。 当输入电压