這個題嚴重不符普及組的身份、、雖然是模擬,但如果想不清楚是很難入手的
首先判斷哪個位置有數,肯定先找運算子、、
(+ : +號前一定有數
)+ : +號前一定沒有數
+ +: +號前一定有數
* +: +號前一定有數
所以只要+號前不是)就有數
而且要考慮運算子後面的,就需要對右括號進行同「+」的處理,不同的是這個右括號要一直推到左括號
用運算子優先順序的方法建立兩個棧處理運算::能放就放,如果+號前是*號就一直把*法做完、
碼:
#include#includeusing namespace std;
int n,i,shucnt,fucnt;
char ch[100006],fu[100006];
struct oo
zhan[100006];
int main()
ch[0]='(';
ch[++n]=')';
for(i=0;i<=n;i++)
while(fu[fucnt]=='*')
++fucnt;
fu[fucnt]='+';
}if(ch[i]=='*') }
if(ch[i]==')')
while(fu[fucnt]!='(')
else
fucnt--;
} fucnt--;
}if(ch[i]=='(')++fucnt,fu[fucnt]='(';
} printf("%d",zhan[shucnt].ling%10007);
}
表示式的值
乙個由1到n n 3,4,5.9 的數字組成的遞增序列 1,2,3,4.n。請在數列中插入 表示加法,表示減法,表示連線兩個數 比如1 2 3 就等於1 23 按照這樣的方法將每一對數字組合在一起。計算該表示式是否為0,你寫乙個程式找出所有產生和為零的長度為n的數列。7 1 2 3 4 5 6 7 ...
表示式的值
求乙個包含 四則運算符號和數字的表示式的值,郭煒老師的 講的好好啊。為了自己以後還能反覆看懂學習,我加了一堆備註。include include include includeusing namespace std int factor value 宣告函式 int term value int e...
中綴表示式轉字尾表示式 求表示式的值
中綴轉字尾需要遵守以下規則 1 運算元 直接輸出 2 直接入棧 3 將 以前的直接輸出,並將 出棧 不輸出 4 運算子 將優先順序不小於該運算子的操作符出棧,最後將該運算子入棧 5 最後將棧中的元素依次彈出 6 優先順序 大於 大於 class intosuf if op i equals if o...