阅读以下说明和C函数,将(1)~(5)空缺处的字句填写完整。[说明] 计算机在处理算术表达式时,首先将其
阅读以下说明和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函数]
是一道考查栈结构在后缀表达式求值过程中应用的分析题。利用栈计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,则从栈中弹出对应数目的运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束,最后栈顶就是表达式的计算结果。 根据题干中的说明,由于后缀表达式以字符串方式存储且以空格分隔符号(数值、算符),因此遇到空格字符时,指向表达式中字符的指针ptr应增加1指向后续字符,因此,(1)空缺处应填入“ptr++”或其等价形式。下面以字符串“375”为例说明将一个数字串转换为数值的过程。 数值375=((0×10+3)×10+7)×10+5 (1)取得数字字符“3”(ASCII码值为51,字符0的ASCII码值为48)。 (2)取得数字字符“7” (ASCII码值为55)。 (3)取得数字字符“5” (ASCII码值为53)。 以下程序代码用于将一个数字字符串转换为对应的整数存入tnum,显然,tnum的初始值应为0。 因此,(2)空缺处应填入“0”。对于(3)空缺所在表达式的功能是:将数字字符转换为数值,因此 (3)空缺处填入“*ptr-48”。 (4)空缺处用于将转换所得的数值tnum压入栈顶,根据题目中Push的原型“void Push(STACK*s,int e)”,调用时第一个实际参数是STACK类型变量的地址,第二个实际参数是一个整数,因此,(4)空缺处填入“&s,tnum”。 由于函数computing(char expr[],int*result)通过参数result返回该表达式的值,因此需要将存在栈顶的运算结果赋值给result指向的整型变量,即(5)空缺处填入“*result”。 本试题目还考查了参数传递知识,读者可通过上机实践加强基本概念的理解,以及C程序设计能力的培养。
小明对薯片的包装内的气体成分进行探究取气:小明说用排水法收集,即将集气瓶装满水,倒扣在水槽,在水下 化学 2020-04-25 …
将单价为8元的商品按10元售出时,每天可卖出100个.若这种商品售价每涨一元,销售量就减少10个, 数学 2020-05-23 …
有一天小明对同学说:“我的步子大,一步能走三米(即两脚着地时的间距有三米”.有的同学将信将疑,而小 数学 2020-06-08 …
谁做过新东方IBT全真模考题与精解(紫色),page30--modeltest1,readingp 语文 2020-06-13 …
明明,亮亮,强强三人在社区运动场上踢足球,不小心将王老师的玻璃打碎了.当王老师问他们谁碎了玻璃时明 其他 2020-06-13 …
选出下列横线上依次填入词语最恰当的一项。(2分)学者说:“未来”是指在我们视野之外的明天,“将来” 语文 2020-06-21 …
明明、亮亮、强强三人在社区运动场上踢足球,不小心将王老师家的玻璃打碎了.当王老师问他们是谁打碎玻璃 数学 2020-06-27 …
请问下面这到道题为什么要乘以50%,题目并没能表明说在产品完成一半啊,如果有,是哪一句话说明一下? 数学 2020-07-26 …
如图所示,小明将书面折过来,该角顶点A落在G处,他以折痕BE为一边作角EBD=90度,此时小明说BD 数学 2020-10-30 …
小明说在A处看到了新月现象,小强说在D处看到了满月现象,他们两人中谁的话可信?为什么?A○○B地球D 物理 2020-11-03 …