表示式計算

2021-10-03 03:24:41 字數 1818 閱讀 9714

/*

問題描述

輸入乙個只包含加減乖除和括號的合法表示式,求表示式的值。其中除表示整除。

輸入格式

輸入一行,包含乙個表示式。

輸出格式

輸出這個表示式的值。

樣例輸入

1-2+3*(4-5)

樣例輸出

-4資料規模和約定

表示式長度不超過100,表示式運算合法且運算過程都在int內進行。

*/

#include

#include

typedef

struct

nur;

typedef

struct

fh;void

calcu

(nur*

,fh*);

void

popfh

(fh*

,char*)

;void

pushfh

(fh*

,char);

void

pushnur

(nur*

,int);

intssz

(char*)

;void

popnur

(nur*

,int*)

;void

cal(

char*)

;int

yxj(

char);

intmain

(void

)void

popfh

(fh*fhs,

char

*s)void

calcu

(nur*nurs,fh*fhs)

pushnur

(nurs,a);}

void

pushfh

(fh*f,

char ch)

void

pushnur

(nur*n,

int num)

intssz

(char

*z)void

popnur

(nur*n,

int*v)

void

cal(

char

*zfc)

; nurs.top =-1

; fh fhs =

; fhs.top =-1

;int flag =0;

while

(*zfc !=

'\0'

)else

flag =1;

tmp =

10*tmp +

(*zfc -

'0')

;pushnur

(&nurs,tmp);}

elseif(

*zfc ==

'+'||

*zfc ==

'-'||

*zfc ==

'*'||

*zfc ==

'/')

pushfh

(&fhs,

*zfc);}

elseif(

*zfc ==

'(')

else

char ch;

popfh

(&fhs,

&ch);}

zfc++;}

while

(fhs.top >=0)

printf

("%d"

,nurs.sz[0]

);}int

yxj(

char c)

}

表示式計算

棧的應用舉例 棧在表示式計算過程中的應用 建立運算元棧和運算子棧。運算子有優先順序。規則 自左至右掃瞄表示式,凡是遇到運算元一律進運算元棧。當遇到運算子時,如果它的優先順序比運算子棧棧頂元素的優先順序高就進棧。反之,取出棧頂運算子和運算元棧棧頂的連續兩個運算元進行運算,並將結果存入運算元棧,然後繼續...

表示式計算

表示式計算對於我們人來說,喜歡通過中綴表示式來計算,而計算機則不一樣,需要通過字尾表示式來計算,首先通過例項來介紹一下中綴表示式和字尾表示式 例子 中綴表示式 3 5 2 3 6 字尾表示式 3 5 2 3 6 那麼轉換規則是怎麼樣的呢?規則 從左到右遍歷中綴表示式的每個數字和符號,若是數字就輸出,...

表示式計算

表示式計算 時間限制 1.0s 記憶體限制 256.0mb 問題描述 輸入乙個只包含加減乖除和括號的合法表示式,求表示式的值。其中除表示整除。輸入格式 輸入一行,包含乙個表示式。輸出格式 輸出這個表示式的值。樣例輸入 1 2 3 4 5 樣例輸出 4資料規模和約定 表示式長度不超過100,表示式運算...