zoukankan      html  css  js  c++  java
  • C

    - 题目大意

        给出一个四则运算计算式,然后来求值。

    - 解题思路

        根据符号来利用栈将数变换成对应的形式,比如如果是’+’的话,便将后面的那个数字压入栈中,’-‘号的话,将后面的数字取反压入栈中,而如果遇到乘法或除法,则将栈顶取出与符号后面的数字计算后压入栈中,这样最后在栈中的数字全部相加即是表达式的值了。

    - 代码

    #include<iostream>
    #include<stack>
    #include<iomanip>
    using namespace std;
    
    int main()
    {
    
    	double a, b,temp;
    	double s = 0.00;
    	char c;
    	stack<double>sum;
    	while (cin >> a)
    	{
    		c = getchar();
    		if (c == '
    '&&a == 0)
    			break;
    		sum.push(a);
    		while (cin>>c>> b)
    		{
    			if (c == '*')
    			{
    				temp = sum.top();
    				sum.pop();
    				sum.push(temp * b);
    			}
    			else if (c == '/')
    			{
    				temp = sum.top();
    				sum.pop();
    				sum.push(temp / b);
    			}
    			 
    			else if (c == '+')
    			{
    				sum.push(b);
    			}
    			else if(c == '-')
    			{
    			    sum.push(-b);
    			}
    			if (getchar() == '
    ')
    				break;
    		}
    		while (!sum.empty())
    		{
    			s += sum.top();
    			sum.pop();
    		}
    		cout << setprecision(2) << std::fixed << s << endl;
    		s = 0;
    	}
    	
    	return 0;
    	
    }
    

      

  • 相关阅读:
    20200116
    20200115
    20191214数组之四:数字不相同的完全平方数(关于数位上数字判断与sprintf)
    结构体与C++sort()函数的用法
    字符串常用函数
    sscanf用法
    螺旋矩阵
    模m的k次根
    梅森素数与完全数
    bit_reverse_swap
  • 原文地址:https://www.cnblogs.com/alpacadh/p/8438493.html
Copyright © 2011-2022 走看看