程式相對簡單易懂,執行程式,
在命令列中輸入: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陣列將中綴表示式讀入,對陣列 第二步,讀出字尾表示式並進行計算 邊轉換邊計算的演算法 此演算法的基本思路是將中綴表示式按照轉換字尾的表達...