點擊下載「C-postfix」 右鍵另存「C-postfix」 阿思修改版(if版) 以上為拙作-_-|,參考課本&老師程式所寫,確定跑的出來。 只挑幾個可能有問題的地方解釋,看不懂請直接跟我說囧" 裡面可能有些解釋錯誤,請大大們指點Orz #include /*為了使用atoi所必需宣告(參考課本p.251)*/ int sp=0; /*格子的位置*/ double val[100]; /*格子*/ int getnextword(char x[],int pos,char y[]) /*把字挑出來的副程式*/ void push(double f) /*把東西放進格子裡的副程式*/ double pop(void) /*把東西從格子裡拿出來的副程式*/ switch(word[0]) /*類似if的東西(見圖)*/ case '/': /*遇到除法時就...*/ op1=pop(); op2=pop(); /*把兩個會用到的數字從格子裡取出,分別存到op1跟op2*/ if(op1!=0) /*確定被除數不為0就...*/ ans=op2/op1; /*計算*/ printf("%f / %f = %f\n",op2,op1,ans); /*將計算的數字和結果都印出來*/ push(ans); /*將結果丟回格子裡*/ 其他語法問題…嘿嘿嘿,我就偷懶啦~ 請愛用課本Orz 5/5更新 應阿思要求,增補push跟pop的說明 PUSH的說明 void push(double f){ /*宣告一個不用回傳的副程式,參數格式為double(倍精準小數)*/ if(sp<100) /*sp為格子的位置,程式一開始設定格子為0~99,故位置小於100才能放進格子裡*/ val[sp++]=f; /*將主程式送過來的參數值放入格子中,並把位置+1,以便放下一個*/ else printf("error: stack full, can't push\n"); /*若是位置超過100,則無放置入格子裡,故顯示錯誤訊息*/ } POP的說明 double pop(void){ /*宣告一個要回傳值(double),但不用輸入參數值的副程式*/ if(sp>0) /*因位置為0~99,故小於0的位置為不存在,所以大於0的才要做*/ return val[--sp]; /*將格子裡對應位置的傳回傳主程式,並將位置減一,便於做下一步*/ else printf("error: stack empty\n"); return 0.0; /*若位置為負,則顯示錯誤訊息,並回傳0.0*/ }
創作者介紹
創作者 隱狼原 的頭像
otn147

隱狼原

otn147 發表在 痞客邦 留言(0) 人氣( 103 )