#include
#include
#define n 50 //表示式長度
#define m 10 //括號個數
#define l 10 //區域性結果長度
int operate(char s)
if(t==j)
if(t!=j)
}opera_nd[k] = sum ;
//現在有k個運算子,k+1乙個運算元
for(t=0 ; t < k ; t++)
if(opera_tor[t]=='/')
}//遇到*或/,則計算,並且兩元素全都變為結果
for( m = t-1;(opera_tor[m]=='*'||opera_tor[m]=='/')&&m>=0 ; m--)
opera_nd[m] = opera_nd[m+1] ; //遇到連著的*和/,則把相關元素全變成結果
sum = opera_nd[0];
for(t=0;t
return sum;
}void main()
i++;
}if(j==0) //表示式不含(),則退出迴圈
break;
i = m[j-1]+1;
for(a=0 ; s[i]!=')' ; ) //擷取最先運算的「塊」,把其中的表示式賦給sec
sec[a++]=s[i++];
sec[a]='\0'; //detail
p = operate(sec); //計算出「塊」的結果
for(a=0;p!=0;a++) //把結果p各個數字上的數分離
for(b=m[j-1];a>0;) //把"塊"的結果插入原始表示式
s[b++]=result[--a];
for(c=m[j]+1 ; s[c]!='\0';)//把"塊"的後面的東西前移
s[b++]=s[c++];
s[b]='\0'; //detail
printf("=%s\n",s); //輸出計算「一次」後的表示式
}printf("=%d\n",operate(s)); //輸出結果
}
表示式求值
程式的說明見清華大學出版社 資料結構 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 ...