計算字尾表示式 C語言實現

2021-08-21 06:52:25 字數 953 閱讀 9559

程式相對簡單易懂,執行程式,

在命令列中輸入:123+*#(注意:由於輸入字元,以『#』結束)

輸出:5.000000

#include #include typedef struct

stack;

//建立乙個棧,100為maxsize,#define無法定義

void createstack(stack &s)

//棧頂指標

float top(stack s)

return *(s.top-1);

}// 入棧程式

void push(stack &s,float elem)

*s.top++ = elem;

}//出棧程式

void pop(stack &s)

s.top--;

}//判斷輸入運算子

int operate(char c)

}//輸入表示式

float cal(float a,float b,char c)

}//主函式

int main()

else

} printf("%f\n",result);

system("pause");

//建立乙個新棧,用於計算n的階乘

stack m;

createstack(m);

float i,n,item = 1;

printf("請輸入乙個數字:");

scanf("%f",&n) ;

for (float i = n; i >= 1; i--)

push(m, i);

while (m.top != m.base)

printf("n的階乘為:");

printf("%f",item) ;

return 0;

}

C語言實現計算器 字尾表示式

對於平時我們書寫的算術表示式是 12 3 4 6 8 2 這種習慣的寫法是中綴表示式 但是計算機一般執行方式是字尾表示式,從左向右依次執行 12 3 4 6 8 2 這就是字尾表示式 這個是如何轉換的呢 有兩種 1.根據樹的遍歷 2.利用棧 今天主要說的是利用棧的轉換 中綴表示式轉換為字尾表示式1....

C語言實現中綴表示式轉換為字尾表示式

中綴表示式轉換為字尾表示式 思路 1.建立棧 2.從左向右順序獲取中綴表示式 a.數字直接輸出 b.運算子 情況一 遇到左括號直接入棧,遇到右括號將棧中左括號之 棧的運算子全部彈棧輸出,同時左括號出棧但是不輸出。情況二 遇到乘號和除號直接入棧,直到遇到優先順序比它更低的運算子,依次彈棧。情況三 遇到...

76C語言實現表示式計算

一 設計思想 兩種演算法首先都要建立兩個棧,乙個是存放運算元的數 中綴轉字尾再計算的演算法 此演算法的基本思路是先將中綴表示式轉換成字尾表示式 首先,用乙個char陣列將中綴表示式讀入,對陣列 第二步,讀出字尾表示式並進行計算 邊轉換邊計算的演算法 此演算法的基本思路是將中綴表示式按照轉換字尾的表達...