5 表示式求值(1)

2021-09-02 20:13:06 字數 1884 閱讀 5978

成績

10開啟時間

2023年10月10日 星期三 20:00

折扣0.8

折扣時間

2023年11月1日 星期四 23:55

允許遲交

否關閉時間

2023年11月11日 星期日 23:55

我們的教材中已經介紹了表示式求值的演算法,現在我們將該演算法的功能進行擴充套件,要求可以處理的運算子包括:+、-、*、/、%(整數取餘)、^(乘方)、(、)。

採用算符優先演算法,計算的中間結果只保留整數。

第一行為整數n。表示下面有n個表示式

從第二行起的後面n行為n個由整數構成的表示式

共n行,每行為相應表示式的計算結果。

如果判斷出表示式有錯誤,則輸出:error.

如果在計算過程中出現除數為0的情況,則輸出:divide 0.

特殊情況說明:

在表示式中,如果運算元出現負數(例如-8),則要特別注意。例如:

10加-8表示為:10+-8。

10減-8表示為:10--8。

#include "stdio.h"  

#include "string.h"

#include "math.h"

#define max 9999999

int figure[100];

char symbol[100];

int topf = -1, tops = -1;

char operation[9] = ;

char checklist[9][9] = ,

, ,

, ,

, ,

, };

int number(char *q)

void push_figure(int q)

int pop_figure()

char pop_symbol()

void push_symbol(char ch)

int operate(int x, int y, char symbol)

case '%': return (int)fmod(x,y);

case '^': if(y>=0) return (int) pow(x,y);

else

default: printf("error.\n");

return max;

} }

char compare(char x, char y)

} for(int i = 0; i <= 8; i++)

} return checklist[a][b];

} int main()

else

push_figure(number(p++));

flag = 0;

} else

} if(*p == '(') flag = 1;

else flag = 2;

if(tops == -1)

else

else if(ans == '<')

else if(ans == '=')

else

p++;

} }

} if(topf == 0 && tops == 0) printf("%d\n",figure[topf]);

else

j: memset(expression,'\0',100);

topf = -1;

tops = -1;

} return 0;

}

表示式求值(1)

描述 dr.kong設計的機械人卡多掌握了加減法運算以後,最近又學會了一些簡單的函式求值,比如,它知道函式min 20,23 的值是20 add 10,98 的值是108等等。經過訓練,dr.kong設計的機械人卡多甚至會計算一種巢狀的更複雜的表示式。假設表示式可以簡單定義為 1.乙個正的十進位制數...

表示式求值1

描述 acm隊的mdd想做乙個計算器,但是,他要做的不僅僅是一計算乙個a b的計算器,他想實現隨便輸入乙個表示式都能求出它的值的計算器,現在請你幫助他來實現這個計算器吧。比如輸入 1 2 4 程式就輸出1.50 結果保留兩位小數 輸入第一行輸入乙個整數n,共有n組測試資料 n 10 每組測試資料只有...

表示式求值

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