成績
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...