早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

阅读以下说明和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*sint e)”调用时第一个实际参数是STACK类型变量的地址第二个实际参数是一个整数因此(4)空缺处填入“&stnum”。 由于函数computing(char expr[]int*result)通过参数result返回该表达式的值因此需要将存在栈顶的运算结果赋值给result指向的整型变量即(5)空缺处填入“*result”。 本试题目还考查了参数传递知识读者可通过上机实践加强基本概念的理解以及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程序设计能力的培养。
看了阅读以下说明和C函数,将(1)...的网友还看了以下:

小明对薯片的包装内的气体成分进行探究取气:小明说用排水法收集,即将集气瓶装满水,倒扣在水槽,在水下 化学 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 …