求用以下類似程序編一個(gè)可以計(jì)算括號的計(jì)算器
求用以下類似程序編一個(gè)可以計(jì)算括號的計(jì)算器
#include
#define smax 10
#define emax 255
int power(int x,int y)
{
int t,s=1;
for (t=0; t=48 && ex[i]=rinput && rtop!=0)
{
//計(jì)算
//數(shù)字出戰(zhàn)
top=top-1;
x=s[top];
top=top-1;
y=s[top];
s[top]=calc(o,x,y);
top=top+1;
//讀出下一個(gè)棧頂符號
otop=otop-1;
o=op[otop];
if (o=='+')
rtop=0;
else
if (o=='-') rtop=1;
}
//原先的放回
op[otop]=o;
otop=otop+1;
//新的符號入棧
op[otop]=ex[i];
otop=otop+1;
}
}
i=i+1;
}
while (otop!=0)
{
//數(shù)字出戰(zhàn)
top=top-1;
x=s[top];
top=top-1;
y=s[top];
//符號出棧
otop=otop-1;
o=op[otop];
s[top]=calc(o,x,y);
top=top+1;
}
ans= s[0];
//輸出結(jié)果
printf("%s=%d\n",ex,ans);
}
#include
#define smax 10
#define emax 255
int power(int x,int y)
{
int t,s=1;
for (t=0; t=48 && ex[i]=rinput && rtop!=0)
{
//計(jì)算
//數(shù)字出戰(zhàn)
top=top-1;
x=s[top];
top=top-1;
y=s[top];
s[top]=calc(o,x,y);
top=top+1;
//讀出下一個(gè)棧頂符號
otop=otop-1;
o=op[otop];
if (o=='+')
rtop=0;
else
if (o=='-') rtop=1;
}
//原先的放回
op[otop]=o;
otop=otop+1;
//新的符號入棧
op[otop]=ex[i];
otop=otop+1;
}
}
i=i+1;
}
while (otop!=0)
{
//數(shù)字出戰(zhàn)
top=top-1;
x=s[top];
top=top-1;
y=s[top];
//符號出棧
otop=otop-1;
o=op[otop];
s[top]=calc(o,x,y);
top=top+1;
}
ans= s[0];
//輸出結(jié)果
printf("%s=%d\n",ex,ans);
}
其他人氣:381 ℃時(shí)間:2020-06-02 06:32:30
優(yōu)質(zhì)解答
將()當(dāng)成op處理即可可以具體編寫一下么?謝謝/*上面同原程序*/void main(){ int s[smax]; char op[smax]; int top=0; int otop=0; int i,num,x,y; int rtop,rinput; char o; char ex[emax]; scanf("%s", ex); i=0; num=0; s[0]=0; top=1; op[0]='+'; otop=1;while (1) {if (ex[i] >=48 && ex[i]<58) { while (ex[i] >=48 && ex[i]<58)num=num*10+ex[i++]-48; s[top++]=num; num=0; } else if (ex[i]==0) break; else if (ex[i]=='(') op[otop++]=ex[i++];else if (ex[i]==')'){o=op[--otop];while (o!='(') {x=s[--top];y=s[--top];s[top++]=calc(o,x,y); o=op[--otop]; }i++;} else { rinput=rank(ex[i]);o=op[--otop];rtop=rank(o);while (rtop>=rinput && rtop!=0 && o!='('){x=s[--top]; y=s[--top]; s[top++]=calc(o,x,y); o=op[--otop]; rtop=rank(o); }op[otop++]=o;op[otop++]=ex[i++];} } while (otop!=0) {x=s[--top];y=s[--top];o=op[--otop];s[top++]=calc(o,x,y); } printf("%s=%d\n",ex,s[0]); getch();}
我來回答
類似推薦
- 一個(gè)計(jì)算器中設(shè)計(jì)了這樣的計(jì)算程序(如左下圖),根據(jù)左邊的計(jì)算規(guī)律,在下邊的括號里填上合適的數(shù).
- 一個(gè)計(jì)算器中設(shè)計(jì)了這樣的計(jì)算程序(如左下圖),根據(jù)左邊的計(jì)算規(guī)律,在右邊的括號內(nèi)填上合適的數(shù)
- 某人用392牛的力豎直向上提質(zhì)量為30千克的物體,他能否提起?物體受到的合力是多大?方向如何?
- 英語翻譯
- (X 3)的平方-X平方=39如何解
- 占地面積943.9千平方米等于多少畝
- over the two days .over two days 和in over two
- 小數(shù)和整數(shù)的意義相同嗎?
- 從視覺,聽覺,嗅覺,味覺角度描寫春天景物的詩句
- 請問1/(x^1/2)怎么算
- 取一粒浸軟的小麥種子,穿在鐵絲上,放到火上燒.種子燃燒后,剩下的灰燼與燒掉的物質(zhì)分別
- 鼻子塞住了,這會(huì)影響英語發(fā)音嗎?
猜你喜歡
- 1You are the love of my life 中文意思
- 2小學(xué)六年級英語考卷的題目,急!
- 3袋中裝的球,除去兩個(gè)以外都是紅色,除去兩個(gè)以外都是黃色球,除去兩個(gè)以外都是藍(lán)色球,請問袋中共裝有幾個(gè)球?
- 4青山水泥廠要把一批水泥運(yùn)到碼頭,用本廠的一輛貨車來運(yùn)需10才能運(yùn)完;如果用運(yùn)輸公司的一輛大貨車來運(yùn)只需5次就能運(yùn)完.現(xiàn)由本廠的一輛貨車運(yùn)送了4次,剩下部分由本廠一輛貨車和運(yùn)輸公司的一輛大貨車共同運(yùn)送,問剩下的需要幾次才能運(yùn)完(要算式)
- 5∫dx/(sinx+cosx)
- 6請教關(guān)于泰語的發(fā)音問題
- 7有關(guān)當(dāng)幸福來敲門的英文介紹
- 8小明的臥室經(jīng)測量長是3米,寬是5米,高是2.8米,其中門窗所占的面積是6平方米求粉刷臥室的面積
- 9歌頌父母之愛的名言警句
- 10下列生活里常見現(xiàn)象中,一定涉及化學(xué)變化的是( ?。?A.冰雪融化 B.冰箱中放入活性炭后,異味消失 C.點(diǎn)燃酒精加熱火鍋 D.榨取果汁
- 11下面的小動(dòng)物分別代表哪個(gè)數(shù)字?
- 12工字開頭的成語