使用棧實現,字首表示式變字尾表示式的原理,但是沒有轉換,是邊轉換邊實現:
#include
#include
#include
#include
#define max_size 50
char num[max_size];
//定義資料棧型別
typedef struct data
sd;//定義運算子棧型別
typedef struct symbol
ss;//子函式宣告
void allocate(char num, sd *data, ss *symb); //數和運算子分類
void check(char c,sd *data,ss *symb);//運算子分類處理
int ispra(char c);//判斷是括號
int getpri(char c); //計算優先順序
void calculate(sd *data,ss *symb);//計算棧頂元素
//void symbol(char c,sd *data,ss *symb);//c是運算子
//主函式
void main()
void allocate(char num, sd *data, ss *symb)
else//c不是數字
check(c,data,symb);//c 是運算子,進行運算子分類處理
}i++;
}if(num[i-1]>='0'&&num[i-1]<='9'&&num[i]=='\0')//解決最後乙個數字無法錄入問題
if(num[i]=='\0')//字元已經遍歷到最後}}
void check(char c,sd *data,ss *symb)//c 不是數字,進行運算子分類處理
if(ispra(c))//c是括號
else//c是右括號,則進行運算
else}}
else//c不是括號
else//當前棧頂運算子sym不是『(』,不會是)括號,有括號不會存入symb中
else//c的優先順序大於當前運算子棧棧頂運算子sym}}
}int ispra(char c)//判斷是不是括號
//獲得符號的優先性
int getpri(char c)
//return ;
} void calculate(sd *data,ss *symb)//計算data棧頂兩個元素}}
計算器 利用re模組 利用函式封裝 第二版
1 import re2 remove parentheses re.compile 34def remove parentheses obj,s 找到內層的括號並且返回單個括號 5while obj.search s 6 ret obj.search s group 7if in ret or i...
C程式語言(第二版) 1 8
1 8輸出所輸入字元中空格,製表符,換行符的個數 includevoid main printf 空格 d t製表符 d回車 t d n space,table,enter 1.換行符 n 與回車符 r 不是一回事兒,換行符ascii為10,回車符的ascii為13 2.換行符就是另起一行,回車符就...
C程式語言(第二版) 2 1
2 1 編寫乙個程式以確定分別由signed和unsigned限定的char short int以及long 型別變數的取值範圍。採用列印標準標頭檔案中的相應值 include include int main 輸出結果 size of char 8 size of char max 127 siz...