計算器第二版 C語言,VC 6 0

2021-08-20 10:04:02 字數 1231 閱讀 4418

使用棧實現,字首表示式變字尾表示式的原理,但是沒有轉換,是邊轉換邊實現:

#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...