表示式求值

2021-06-29 16:41:29 字數 800 閱讀 6013

/*

表示式求值,需要設定兩個棧,操作符棧、數字棧。

add(x,y) sub(x,y) min(x,y) max(x,y)

*/#include

#include

#define max 300

int main()

switch(s[i])

else

case

')': //遇到右括號,則可以做運算了(使用最近遇到的運算子)

y=data_stack[--top_d]; //到數字棧裡取兩個資料。

x=data_stack[--top_d];

oper=fuhao_stack[--top_f]; //到符號棧裡取運算子

switch(oper)

data_stack[top_d++]=r;

i++; //case ')'

}} 不是數字字元

else

//是數字字元,轉化為整數,累加

//累加器清0,準備累加, 設定進入數字狀態標誌

sum=sum*10+s[i]-'0'; //將數字字元轉化成整數,並累加。注意原來的數前移1位(擴大10倍 )

i++;

//printf("\n===sum=%d \n", sum); //本句可測試用

}

}printf("%d\n", data_stack[top_d-1]);

sum=0;

}return

0;}

表示式求值

程式的說明見清華大學出版社 資料結構 c語言版 include include define stack init size 40 define stackincrement 20 define ok 1 define false 0 typedef structs stack typedef st...

表示式求值

既然是表示式求值,自然需要在記憶體中儲存計算結果以及中間值。在 用c語言寫直譯器 一 中提過 變數要求是若型別,而 c 語言中的 view plaincopy to clipboardprint?in basic io.h define memery size 26 typedef enum var...

表示式求值

寫了乙個下午,各種糾結,各種問,終於搞明白了。但是自己還是想出來的一點東西的。很爽歪歪的,哈哈。先貼第一次的 include include include include include includeusing namespace std char data 7 7 int sign char ...