閱讀以下說明和C函數(shù),將應(yīng)填入 (n) 處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】
計(jì)算機(jī)在處理算術(shù)表達(dá)式時(shí),首先將其轉(zhuǎn)換為后綴表達(dá)式。例如,表達(dá)式“46+5*(120-37)”的后綴表達(dá)式形式為“46 5 120 37 - * +”。
計(jì)算后綴表達(dá)式時(shí),從左至右掃描后綴表達(dá)式:若遇到運(yùn)算對(duì)象,則壓入棧中;遇到運(yùn)算符,則從棧中彈出相關(guān)運(yùn)算對(duì)象進(jìn)行計(jì)算,并將運(yùn)算結(jié)果壓入棧中,重復(fù)以上過程,直到后綴表達(dá)式掃描結(jié)束。例如,后綴表達(dá)式“46 5 120 37 - * +”的計(jì)算過程為:
a. 依次將46、5、120、37壓入棧中;
b. 遇到“-”,取出37、120,計(jì)算120–37,得83,將其壓入棧中;
c. 遇到“*”,取出83、5,計(jì)算5*83,得415,將其壓入棧中;
d. 遇到“+”,取出415、46,計(jì)算46+415,得461,將其壓入棧中;
e. 表達(dá)式結(jié)束,則計(jì)算過程完成。
函數(shù)computing(char expr[],int *result)的功能是基于棧計(jì)算后綴形式的表達(dá)式(以串形式存入字符數(shù)組expr)的值,并通過參數(shù)result 返回該值。函數(shù)的返回值為-1/0分別表示表達(dá)式有/無錯(cuò)誤。假設(shè)表達(dá)式中僅包含數(shù)字、空格和算術(shù)運(yùn)算符號(hào),其中所有項(xiàng)均以空格分隔,且運(yùn)算符僅包含加(“+”)、減(“-”)、乘(“*”)、除(“\”)。
函數(shù)computing中所用棧的基本操作的函數(shù)原型說明如下:
void InitStack(STACK *s):初始化棧。
void Push(STACK *s, int e): 將一個(gè)整數(shù)壓棧,棧中元素?cái)?shù)目增1。
void Pop(STACK *s):棧頂元素出棧,棧中元素?cái)?shù)目減1。
int Top(STACK s):返回非空棧的棧頂元素值,棧中元素?cái)?shù)目不變。
int IsEmpty(STACK s):若s是空棧,則返回1否則返回0。
【C函數(shù)】