从键盘上输入一个后缀表达式,试编写算法计算表达式的值。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作数之间用空格分隔,操作符只可能有+、-、*、/四种运算。例如:234 34+2*$。

从键盘上输入一个后缀表达式,试编写算法计算表达式的值。规定:逆波兰表达式的长度不超过一行,以$符作为输入结束,操作数之间用空格分隔,操作符只可能有+、-、*、/四种运算。例如:234 34+2*$。


相关考题:

试题四(共 15 分)阅读以下说明和 C 函数,将应填入 (n) 处的字句写在答题纸的对应栏内。[说明]计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 5 120 37 - * +” 。计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中,重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5 120 37 - * +”的计算过程为:a. 依次将 46、5、120、37 压入栈中;b. 遇到“-”,取出 37、120,计算 120–37,得 83,将其压入栈中;c. 遇到“*”,取出 83、5,计算 5*83,得 415,将其压入栈中;d. 遇到“+”,取出 415、46,计算 46+415,得 461,将其压入栈中;e. 表达式结束,则计算过程完成。函数 computing(char expr[],int *result)的功能是基于栈计算后缀形式的表达式(以串形式存入字符数组 expr)的值,并通过参数 result 返回该值。函数的返回值为-1/0 分别表示表达式有/无错误。假设表达式中仅包含数字、空格和算术运算符号,其中所有项均以空格分隔,且运算符仅包含加(“+”)、减(“-”)、乘(“*”)、除(“\”)。函数 computing 中所用栈的基本操作的函数原型说明如下:void InitStack(STACK *s):初始化栈。void Push(STACK *s, int e): 将一个整数压栈,栈中元素数目增 1。void Pop(STACK *s):栈顶元素出栈,栈中元素数目减 1。int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。int IsEmpty(STACK s):若s 是空栈,则返回1 否则返回 0。[C 函数]int computing(char expr[], int *result){STACK s; int tnum, a,b; char *ptr;InitStack(s);ptr = expr; /*字符指针指向后缀表达式串的第一个字符*/while (*ptr!='\0') {if (*ptr==' ') { /*当前字符是空格*/(1) ; /*字符指针指向下一字符*/continue;}elseif (isdigit(*ptr)) {/*当前字符是数字,则将该数字开始的数字串转换为数值*/tnum = (2) ;while (*ptr=’0’ *ptr =’9’) {tnum = tnum * 10 + (3) ;ptr++;}Push( (4) );}else /*当前字符是运算符或其他符号*/if (*ptr=='+'||*ptr=='-'||*ptr =='*'||*ptr =='/'){if (!IsEmpty(s)) {a = Top(s); Pop(s); /*取运算符的第二个运算数*/if (!IsEmpty(s)) {b = Top(s); Pop(s); /*取运算符的第一个运算数*/}else return -1;}else return -1;switch (*ptr) {case '+': Push(s,b+a); break;case '-': Push(s,b-a); break;case '*': Push(s,b*a); break;case '/': Push(s,b/a); break;}}elsereturn -1;ptr++; /*字符指针指向下一字符*/} /* while */if (IsEmpty(s)) return -1;else {(5) = Top(s); Pop(s); /*取运算结果*/if (!IsEmpty(s)) return -1;return 0;}}

逆波兰表示法表示表达式时,什么按实际计算顺序从左到右排列()。 A运算符B运算对象C括号D代码

阅读以下说明和C函数,将(1)~(5)空缺处的字句填写完整。[说明]计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*120-37)”的后缀表达式形式为“46 5 120 37-*+”。计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5 120 37-*+”的计算过程如下:a.依次将46、5、120、37压入栈中;b.遇到“-”,取出37、120,计算120-37=83,将其压入栈中;c.遇到“*”,取出83、5,计算5×83=415,将其压入栈中;d.遇到“+”,取出415、46,计算46+415=461,将其压入栈中;e.表达式结束,则计算过程完成。函数computing(char expr[],int*result)的功能是基于栈计算后缀形式的表达式(以串形式存入字符数组 expr)的值,并通过参数result返回该值。函数的返回值为-1/0,分别表示表达式有/无错误。假设表达式中仅包含数字、空格和算术运算符号,其中所有项均以空格分隔,且运算符仅包含加(“+”)、减(“-”)、乘(“*”)、除(“\”)。函数computing中所用栈的基本操作的函数原型说明如下。● void InitStack(STACK*s):初始化栈。● void Push(STACK*s,int e):将一个整数压栈,栈中元素数目增1。● void Pop(STACK*s):栈顶元素出栈,栈中元素数目减1。● int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。● int IsEmpty(STACKs):若s是空栈,则返回1;否则返回0。[C函数]

阅读以下说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。4、【说明】 计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 512037-*+”。 计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇,到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5120 37-*+”的计算过程如下。 a.依次将46、5、120、37压入栈中; b.遇到“-”,取出37、120,计算120-37=83,将其压入栈中: c.遇到“*”,取出83、5,计算5×83=415,将其压入栈中; d.遇到“+”,取出415、46,计算46+415=461,将其压入栈中; e.表达式结束,则计算过程完成。 函数computing(char expr[],int *result)的功能是基于栈计算后缀形式的表达式(以串形式存入字符数组expr)的值,并通过参数result返回该值。函数的返回值为-1/0,分别表示表达式有/无错误。假设表达式中仅包含数字、空格和算术运算符号,其中所有项均以空格分隔,且运算符仅包含加(“+”)、减(“-”)、乘(“*”)、除(“\”)。 函数computing中所用栈的基本操作的函数原型说明如下。 · void InitStack(STACK *s):初始化栈。 · void Push(STACK,s,int e):将一个整数压栈,栈中元素数目增1。 · void Pop(STACK *s):栈顶元素出栈,栈中元素数目减1。 · int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。 · int IsEmpty(STACKs):若s是空栈,则返回1;否则返回0。【C函数】 int computing (char expr[],int *result) { STACK s; int tnum,a,b; char *ptr; InitStack(&s); ptr=expr;pstr /*字符指针指向后缀表达式串的第一个字符*/ while(*ptr!='\0') { if(*ptr==' ') { /*当前字符是空格*/ (1) ; /*字符指针指向下一字符*/ continue; } else if(isdigit (*ptr)) { /*当前字符是数字,则将该数字开始的数字串转换为数值*/ tnum= (2) ; while (*ptr>='0' && *ptr <='9') { tnum=tnum * 10 + (3) ; ptr++; } Push( (4) ); } else /*当前字符是运算符或其他符号*/ if (*ptr=='+'||*ptr=='-'||*ptr=='*'||*ptr=='/'){ if(!IsEmpty(s)) { a=Top(s);Pop(&s); /*取运算符的第二个运算数*/ if(!IsEmpty(s)) { b=Top(s);Pop(&s);/*取运算符的第一个运算数*/ } else return -1; } else return -1; switch (*ptr) { case '+': Push(&s,b+a); break; case '-':Push(&s,b-a); break; case '*':Push(&s,b*a); break; case '/':Push(&s,b/a); break; } } else return -1; ptr++; /*字符指针指向下一字符*/ }/*while*/ if(IsEmpty(s)) return -1; else{ (5) =Top(s); Pop(&s); /*取运算结果*/ if(!IsEmpty(s)) return -1; return 0; } }

可包括后缀表达式求值、中缀表达式求值、括号匹配等栈的综合应用。 举例如下: 题目:中缀表达式求值 [问题描述] 中缀表达式是我们熟悉的表达式形式。为了能正确表示运算的先后顺序,中缀表达式中难免要出现括号。假设我们的表达式中只允许有圆括号。 读入一个浮点数为操作数的中缀表达式后,对该表达式进行运算。 要求中缀表达式以一个字符串的形式读入,可含有加、减、乘、除运算符和左、右括号,并假设该表达式以“#”作为输入结束符。 如输入“3.5*(20+4)-1#”,则程序运行结果应为83。

若k为int整型变量且赋值11。请写出运算k++后表达式得值_____ 和变量的值____(答案之间用一个空格分隔)

9、表达式有操作数和运算符构成,根据运算符的含义计算出一个结果值。表达式中不包含等号。

3、请编写Python程序完成以下要求: 提示用户从键盘上输入一个有效的年份,在屏幕上打印这个年份是否为闰年,要求使用条件运算符完成程序中的功能。条件运算符的语法为:表达式1 if 表达式2 else 表达式3,其中若表达式2的值为True,则整个算式的值为表达式1的值,否则,整个算式的值为表达式3的值。 (得分点提示:程序的可读性、是否有注释、功能是否正确、输入输出是否有提示信息)

6.对运算数依照表达式中运算符规定的运算后计算出来的 称为表达式的值,表达式的值具有 性。