C程式語言逆波蘭式計算器學習心得

2021-08-14 09:43:25 字數 1232 閱讀 5783

因為需要應試的原因需要刷刷c,在大家的推薦下,選用了《c程式語言》brain等著的版本。今天在刷第四章的時候,學習了逆波蘭式計算器,書上**及我的注釋如下,心得跟在後面。

#include#include#define maxop 100//這個是最大一次輸入的長度

#define number '0'//乙個標誌,意味著接收到的是數字,換成其他也無妨

int getop(char);//宣告函式,分別是獲取乙個有意義的值、入棧、出棧

void push(double);

double pop(void);

main()

}return 0;

}#define maxval 100//棧 val的最大深度

int sp = 0;//下乙個空棧位置

double val[maxval];//值棧val用於在計算中儲存所有有效資料(不儲存任何計算符號!)//運算符號在被getop函式錄入的同時,計算後的值就已經被錄入到了val,且被肌酸的數也會出棧。

// push 函式:把 f 壓入值棧中,並把空棧位置後移(乾淨利落)

void push(double f)

//pop 函式:彈出並返回棧頂!頂的值,也就是最後一位的值,同時把空棧標記前移

double pop(void)

}//以下是獲取下乙個輸入的函式

#includeint getch(void);//這兩個函式可以被稱作是,「壓入」和「釋放」緩衝區

void ungetch(int);

int getop(char s)

#define bufsize 100

//緩衝區

char buf[bufsize];

int bufp=0;

//取乙個字元,可能是壓回的運算子或者其他符號。

int getch(void)

void ungetch(int c)

**很優秀,唯一需要注意的就是要按照逆波蘭式寫法輸入資料。

逆波蘭計算器

include include include define stack init size 20 初始化棧的空間 define stackincrement 10 擴充套件空間 define maxbuffer 10 最大緩衝區 typedef double elemtype 建立乙個棧 type...

逆波蘭計算器

1.逆波蘭表示式用途 逆波蘭表示式是一種十分有用的表示式,它將複雜表示式轉換為可以依靠簡單的操作得到計算結果的表示式。例如 a b c d 轉換為ab cd 2.逆波蘭表示式邏輯實現 如果當前字元為變數或者為數字,則壓棧,如果是運算子,則將棧頂兩個元素彈出作相應運算,結果再入棧,最後當表示式掃瞄完後...

逆波蘭計算器

遍歷表示式。碰到數字將其放到棧中。遇到計算符 從棧中彈出兩個數用計算然後再從新入棧。a 在棧中的最後乙個數即為結果 轉換前 2 9 6 3 5 4轉換後 2963 5 4 使用逆波蘭計算結果為 16.0public class rpncalculator 如果是不是計算符,直接入棧 stack.pu...