首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

表达式求值C语言(多位数求值,2位数以上)

文章目录 表达式 表达式求值 表达式转后缀表达式 步骤 运算符表 例子 【代码】支持2位以上的数字 相关链接: 表达式求值汇总 多位数表达求值 表达式 前缀表达式 中缀表达式 后缀表达式 表达式a×...b + (c-d/e)×f + ×ab ×-c/def a×b + c-d/e×f ab× cde/ -f×+ 定义 OP S1 S2 S1 OP S2 S1 S2 OP 计算结果 和原表达式相同 失去了括号导致结果和原表达式不同...和原表达式相同 计算过程 扫描到S2->往前找S1->再往前找OP->计算 没有意义 扫描到OP->往前找S2->往前找S1->计算 表达式求值 【步骤】表达式–>后缀表达式–>求值 表达式转后缀表达式...: 后缀表达式求值表达式转后缀表达式 步骤 Stack OPND; //存储后缀【表达式】的栈 Stack OPTR; //存储【符号】的栈 OPTR.push('#') //将一个#压在最下面...return S1*S2; case '/': return S1/S2; case '^': return (int)pow(S1,S2); } return 0; } //表达式求值

64140

C语言-用栈实现表达式求值(顺序栈)

(In) 表达式求值函数(evaluateExpression) 其他:操作符栈(OPTR),操作数栈(OPND) ---- 谈谈我遇到的问题: 1.该选择数字栈还是字符栈?...3.表达式输入方式的选取 输入方式1:请输入表达式:3*(5-2) 输入方式2: 请输入表达式: 3 * ( 5 — 2 ) 第一种输入方式是直接打出表达式进行整体输入,而第二种则是以一个一个的方式读入...\n"); exit(0); } } } int In(char c) //判断是否为运算符,是运算符返回1,若不是返回0 { switch(c)...evaluateExpression(exp); printf("\n"); printf("%s%d\n",exp,result); return 0; } 执行结果: ---- 参考: 数据结构(C语言第二版...)——严蔚敏 栈的经典应用——yuluows 栈的应用(表达式求值)——Sup_klz ---- 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/149219.html

1.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    “栈”的典型应用—表达式求值C语言实现)

    表达式求值是程序设计语言编译中的一个基本问题。它的实现就是对“栈”的典型应用。本文针对表达式求值使用的是最简单直观的算法“算符优先法”。 我们都知道算术四则运算的运算规则是: 先乘除,后加减。...“#”,这一对“#”表示一个表达式求值完成。...依次读入表达式中的每个字符,若是操作数则进OPND栈,若是运算符则和OPTR栈的栈顶运算符比较优先权作相应操作,直至整个表达式求值完毕(OPTR栈顶元素和当前读入的字符均为“#”) 代码实现: 首先先熟悉一下栈的相关操作...*p); return OK; } //输出元素e Status output(SElemType e){ printf("%d ",e); return OK; } 实现表达式求值的代码...: /*计算整数表达式的值 *表达式必须以#结束 *表达式中可以出现多位数字, *表达式中可以出现空格 *运算符包括+,-,*,/,(,) *运算结果可以是多位整数,并以整数的形式返回 */

    75910

    【栈】实现表达式求值(C++)(详解)

    【栈】实现表达式求值 思路 && 理解 && 注意 给定一串表达式,字符串类型,依次遍历从头开始遍历每一个位置的内容。...进栈的运算符进行优先级比较,如果当前运算符优先级大,那就接着push进来,反之,pop出栈,运算前面的式子之和(之后判断运算符栈中是否还有内容,并且当前运算符的优先级是否小于等于已有的运算符,小于等于就接着运算前面的表达式...rhs == '-') && (lhs == '*' || lhs == '/')) { return true; } return false; } //计算左右操作数+运算符 (对运算符求值...isLarger(input[i],*getTop(opt_stack)));//自动再往前判断,是否可以对前面的表达式进行运算 //运算符栈不为空 并且当前运算符优先级小于等于栈顶运算符(

    29620

    表达式求值

    表达式求值 描述 ACM队的mdd想做一个计算器,但是,他要做的不仅仅是一计算一个A+B的计算器,他想实现随便输入一个表达式都能求出它的值的计算器,现在请你帮助他来实现这个计算器吧。...这个表达式里只包含+-*/与小括号这几种符号。其中小括号可以嵌套使用。数据保证输入的操作数中不会出现负数。 数据保证除数不会为0输出每组都输出该组运算式的运算结果,输出结果保留两位小数。...,char c2)//运算符大小等级比较 ,(栈顶,下个字符, { if(c1=='+'||c1=='-') { if(c2=='+'||c2=='-'||c2==')'||c2=='=') return...'>'; else return '<'; } else if(c1=='*'||c1=='/') { if(c2=='+'||c2=='-'||c2=='*'||c2=='/'||c2==')'||...c2=='=') return '>'; else return '<'; } else if(c1=='('||c1=='=') { if((c1=='('&&c2==')')||(c1=='='&&

    47620

    如何深入掌握C语言操作符及表达式求值(详解)

    目录 前言 操作符 算术操作符 移位操作符 左移操作符移位规则 ​ 右移操作符移位规则 大小的变化 位操作符 一道有意思的例题 异或(^)的特点  赋值操作符 复合赋值符   单目操作符 对于sizeof...整型提升 两个例子 算术转换 操作符的属性 C语言运算符优先级 ---- 前言 ---- 本文章主要讲解点: ​​​​​​​各种操作符的介绍   表达式求值 操作符 ---- 分类: 算术操作符 移位操作符...    (两数二进制位都为1 —>1) |  //按位或     (两数二进制位有一个为1 —>1) ^  //按位异或 (两数二进制位不同为1,相同为0) 注:他们的操作数必须是整数 一道有意思的例题...---- 表达式求值顺序一部分是由操作符的优先级和结合性决定 有些表达式的操作数在求值的过程中可能需要转换类型 隐式类型转换 ---- 概念 C的整型算术运算总是至少以缺省整型类型的精度来进行的,为了获得这个精度...是否控制求值顺序 注:两个相邻的操作符先执行优先级高的;如果优先级相同,取决于结合性 C语言运算符优先级 ---- 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[

    60740

    c语言switch例题注释,switch语句例子大全 C语言switch语句例题

    switch-case语句的一般表达形式为: switch〈选择判断量〉 Case 选择判断值1 选择判断语句1 case 选择判 C语言switch语句例题 main() { int k; scanf...=3; 但case 3没有中断语句,case4也会执行,所以结果是8 如果只想执行符合条件的case, 那么就在case 后面加个break; 比如: case 3{ y+= 3; break; } c语言中...C语言程序语句switch: switch用在编程中,如C语言中它经常跟case一起使用,是一个判断选择代码。其功能就是控制业务流程流转的。...switch语句的语法如下(switch,case和default是关键字): switch ( controllingExpression ) { case constantExp C语言里的switch...有时算法中包含一系列判断,用一个变量或表达式测试每个可能的常量值,并相应采取不同操作。 有关C语言 switch语句的例题讲解 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    2.5K40

    表达式求值(中缀转后缀及后缀表达式求值

    举例:a+b*c+(d*e+f)g ———> abc+de*f+g*+ 图示上述过程: 因为比较懒,而刚好在网上看到画的还不错的图,所以就直接贴过来了哦。希望作者不要怪罪哦。。。...在这里也就是弹出+输出,弹出(不输出: 遇到*,优先级高于栈顶+,将*入栈 遇到g,直接输出: : 此时已经没有新的字符了,依次出栈并输出操作直到栈为空: 因为后缀表达式求值过程较为简单...下面代码实现中缀转后缀以及后缀表达式求值: 使用的栈是自定义栈(自己实现的): //stack.h #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream...int SuffixToValue(char *suffix, char *prefixion);//后缀表达式求值 中缀表达式转后缀表达式: //prefixionToSuffix.cpp #...s.Empty()) { *tmp++ = s.Top(); s.Pop(); } } 后缀表达式求值: //SuffixToValue.cpp #include"Stack.h

    72820

    表达式求值(1)

    表达式求值 描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min(20,23)的值是20 ,add(10,98) 的值是108等等。...经过训练,Dr.Kong设计的机器人卡多甚至会计算一种嵌套的更复杂的表达式。 假设表达式可以简单定义为: 1. 一个正的十进制数 x 是一个表达式。 2. ...如果 x 和 y 是 表达式,则 函数min(x,y )也是表达式,其值为x,y 中的最小数。 3. 如果 x 和 y 是 表达式,则 函数max(x,y )也是表达式,其值为x,y 中的最大数。...4.如果 x 和 y 是 表达式,则 函数add(x,y )也是表达式,其值为x,y 之和。 例如, 表达式 max(add(1,2),7) 的值为 7。...输入第一行: N 表示要计算的表达式个数 (1≤ N ≤ 10)  接下来有N行, 每行是一个字符串,表示待求值表达式表达式中不会有多余的空格,每行不超过300个字符,表达式中出现的十进制数都不

    63920

    NYOJ-------表达式求值

    时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min(20,23)的值是...经过训练,Dr.Kong设计的机器人卡多甚至会计算一种嵌套的更复杂的表达式。 假设表达式可以简单定义为: 1.一个正的十进制数x是一个表达式。...2.如果x和y是表达式,则 函数min(x,y)也是表达式,其值为x,y 中的最小数。 3.如果x和y是表达式,则 函数max(x,y)也是表达式,其值为x,y 中的最大数。...4.如果x和y是表达式,则 函数add(x,y)也是表达式,其值为x,y 之和。 例如,表达式max(add(1,2),7)的值为7。...输入第一行: N 表示要计算的表达式个数 (1≤ N ≤ 10) 接下来有N行, 每行是一个字符串,表示待求值表达式表达式中不会有多余的空格,每行不超过300个字符,表达式中出现的十进制数都不 超过

    704100
    领券