科学计算器
Description
给你一个不带括号的表达式,这个表达式只包含加、减、乘、除,请求出这个表达式的最后结果,最后结果一定是整数;
Input
一 个数学表达式,只包括数字,数字保证是非负整数,以及五种运算符"+","-","*","/","=";数字和运算符之间有一个或者多个空格,运算符的 总数不会超过100,最后以"="号结尾,表示表达式结束。注意:使用C的同学,在读取字符串的时候请使用scanf("%s",..);以免不必要的错 误。
Output
整数;
Sample Input
1 + 2 + 3 * 6 / 9 =
Sample Output
5
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 #include <iostream>
2 using namespace std;
3
4 double op(double n1,double n2,char sig)
5 {
6 if(sig=='*')
7 n1*=n2;
8 else if(sig=='/')
9 n1/=n2;
10 else if(sig=='+')
11 n1+=n2;
12 else if(sig=='-')
13 n1-=n2;
14 return n1;
15 }
16
17 int main()
18 {
19 double stNum[100],num;
20 int topNum=1,topSig=0;
21 char stSig[100],sig;
22 cin>>stNum[0];
23 while(cin>>sig && sig!='=')
24 {
25 cin>>num;
26 if(sig=='+' || sig=='-')
27 {
28 stNum[topNum++]=num;
29 stSig[topSig++]=sig;
30 }
31 else if(sig=='*' || sig=='/')
32 stNum[topNum-1]=op(stNum[topNum-1],num,sig);
33 }
34 double result=stNum[0];
35 for(int i=0;i<topNum-1;i++)
36 {
37 result=op(result,stNum[i+1],stSig[i]);
38 }
39 cout<<(int)result<<endl;
40 return 0;
41 }
2 using namespace std;
3
4 double op(double n1,double n2,char sig)
5 {
6 if(sig=='*')
7 n1*=n2;
8 else if(sig=='/')
9 n1/=n2;
10 else if(sig=='+')
11 n1+=n2;
12 else if(sig=='-')
13 n1-=n2;
14 return n1;
15 }
16
17 int main()
18 {
19 double stNum[100],num;
20 int topNum=1,topSig=0;
21 char stSig[100],sig;
22 cin>>stNum[0];
23 while(cin>>sig && sig!='=')
24 {
25 cin>>num;
26 if(sig=='+' || sig=='-')
27 {
28 stNum[topNum++]=num;
29 stSig[topSig++]=sig;
30 }
31 else if(sig=='*' || sig=='/')
32 stNum[topNum-1]=op(stNum[topNum-1],num,sig);
33 }
34 double result=stNum[0];
35 for(int i=0;i<topNum-1;i++)
36 {
37 result=op(result,stNum[i+1],stSig[i]);
38 }
39 cout<<(int)result<<endl;
40 return 0;
41 }