C語言 計算給定字串表示式的值

2021-10-07 03:53:48 字數 1441 閱讀 1135

#include

#include

#define maxn 100005

char s[maxn]

,infixlist[maxn][10

];char suffix[maxn][10

];int p=0;

char tmp[maxn]

;int p1=0;

//把字串根據運算元、運算子、括號拆開,儲存到infixlist陣列中

inttoinfixexpression

(char

*s) tot++;}

else

}return tot;

}//獲得優先順序

intgetpriority

(char c)

//轉換成字尾表示式

void

parsesuffixexpression

(char s[

10],int n)

else

if(s[i][0

]=='(')

else

if(s[i][0

]==')')

p1--;}

else

tmp[p1++

]=s[i][0

];}}

while

(p1!=0)

}//計算乙個以字串形式儲存的數的值

intparseint

(char

*s)return ans;

}//將數k轉化成字串形式儲存到指標s開始的地方

void

parsestring

(char

*s,int k)

while

(k!=0)

;for

(int i=point-

1,j=

0;i>=

0;i--

,j++)*

(s+point)

='\0';}

//計算字尾表示式的值

intcalculate()

else

else

if(suffix[i][0

]=='-')

else

if(suffix[i][0

]=='*')

else

if(suffix[i][0

]=='/')

res=a/b;

printf

("(%d) %d / %d = %d\n"

,m++

,a,b,res);}

parsestring

(t[point]

,res)

; point++;}

}return

parseint

(t[0])

;}intmain()

}

計算字串表示式的值

舉個簡單的例子,平常我們寫的數學表示式a b,就是一種中綴表示式,寫成字尾表示式就是ab 再舉乙個複雜的例子,中綴表示式 a b c a b e的逆波蘭式是ab c ab e 1 首先,需要分配1個棧,用於臨時儲存運算子,此運算子在棧內遵循越往棧頂優先順序越高的原則 2 從中綴式的左端開始逐個讀取字...

字串表示式計算C 程式設計

字串表示式計算c 程式設計 在程式設計應用程式過程中,有時需要字串表示式的值。如字串 23 56 102 100 36 24 8 6 結果 191。根據資料結構棧的應用介紹,通過把表示式由中序式轉換成後序式,再用棧來進行計算。如上述字串表示式 23 56 102 100 36 24 8 6 轉換為後...

字串 中綴 字尾 計算表示式的值

includeusing namespace std include define maxsize 100 stackstack1 棧來放字尾表示式的符號 char suffix maxsize 轉化後的字尾表示式 int n 1 表示suffix字元陣列的index,初始化為 1 int prio...