7 11 字尾式求值 25 分

2021-10-25 15:45:09 字數 1936 閱讀 2409

我們人類習慣於書寫「中綴式」,如 3 + 5 * 2 ,其值為13。 (p.s. 為什麼人類習慣中綴式呢?是因為中綴式比字尾式好用麼?)

而計算機更加習慣「字尾式」(也叫「逆波蘭式」,reverse polish notation)。上述中綴式對應的字尾式是: 3 5 2 * +

現在,請對輸入的字尾式進行求值。

輸入格式:

在一行中輸入乙個字尾式,運算數和運算子之間用空格分隔,運算數長度不超過6位,運算子僅有+ - * / 四種。

輸出格式:

在一行中輸出字尾式的值,保留一位小數。

輸入樣例:

3 5.4 2.2 * +
輸出樣例:

14.9
#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

intmain()

i++;if

(temp.

size()

==1&&temp[0]

=='+'

)else

if(temp.

size()

==1&&temp[0]

=='-'

)else

if(temp.

size()

==1&&temp[0]

=='*'

)else

if(temp.

size()

==1&&temp[0]

=='/'

) st.

push

(t1/t2);}

else}if

(!st.

empty()

)return0;

}

我發現我每次寫的都不一樣,感覺下面的版本更好理解

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

intmain()

if((isdigit

(s[i+1]

)&&(s[i]

=='+'

||s[i]

=='-'))

||isdigit

(s[i]

)||s[i]

=='.'

)else

while

(isdigit

(s[i+1]

)||s[i+1]

=='.'

) st.

push

(stod

(temp));

}else

else

if(s[i]

=='-'

)else

if(s[i]

=='*'

)else

if(s[i]

=='/'

) st.

push

(t2/t1);}

}}printf

("%.1f"

,st.

top())

;return0;

}

字尾式求值 25 分

題目描述 我們人類習慣於書寫 中綴式 如3 5 2,其值為13。p.s.為什麼人類習慣中綴式呢?是因為中綴式比字尾式好用麼?而計算機更加習慣 字尾式 也叫 逆波蘭式 reverse polish notation 上述中綴式對應的字尾式是 3 5 2 現在,請對輸入的字尾式進行求值。輸入格式 在一行...

字尾式求值

time limit 1000ms memory limit 65536k 有疑問?點這裡 對於乙個基於二元運算子的字尾表示式 基本運算元都是一位正整數 求其代表的算術表示式的值。輸入乙個算術表示式的字尾式字串,以 作為結束標誌。求該字尾式所對應的算術表示式的值,並輸出之。59 684 3 57 基...

字尾式求值

希望看到部落格的同學能夠告訴我為什麼乙個200的數組裝得下的資料,乙個棧裝不下 我們人類習慣於書寫 中綴式 如 3 5 2 其值為13。p.s.為什麼人類習慣中綴式呢?是因為中綴式比字尾式好用麼?而計算機更加習慣 字尾式 也叫 逆波蘭式 reverse polish notation 上述中綴式對應...