问题描述
编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值。输入格式为:“运算符 对象1 对象2”,其中,运算符为“+”(加法)、“-”(减法)、“*”(乘法)或“/”(除法),运算对象为不超过10的整数,它们之间用一个空格隔开。要求:对于加、减、乘、除这四种运算,分别设计相应的函数来实现。
输入格式:输入只有一行,即一个前缀表达式字符串。
输出格式:输出相应的计算结果(如果是除法,直接采用c语言的“/”运算符,结果为整数)。
输入输出样例
样例输入
+ 5 2
样例输出
编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值。输入格式为:“运算符 对象1 对象2”,其中,运算符为“+”(加法)、“-”(减法)、“*”(乘法)或“/”(除法),运算对象为不超过10的整数,它们之间用一个空格隔开。要求:对于加、减、乘、除这四种运算,分别设计相应的函数来实现。
输入格式:输入只有一行,即一个前缀表达式字符串。
输出格式:输出相应的计算结果(如果是除法,直接采用c语言的“/”运算符,结果为整数)。
输入输出样例
样例输入
+ 5 2
样例输出
7
实现代码:
#include<iostream>
#include<cstring>
using namespace std;
int ff( char ch , int x , int y){
if(ch == '+')
return x + y ;
else if(ch == '-')
return x - y ;
else if(ch == '*')
return (x) * (y) ;
else if(ch == '/')
{
if( y ) // 如果除数不为零则进行下面的运算
return (x) / (y) ;
}
}
int main()
{
int m , n ,t;
string s_char ;
while(getline( cin , s_char )) //使用 getline来使输入的字符串含有空格
{
//表示前一个运算对象是 10
if(s_char[3] == '0' ){
if(s_char[6] == '0') //后一个对象是 10
cout << ff(s_char[0] , 10 , 10 ) << endl ;
else if(s_char[6] == '\0') //后一个运算对象小于 10
{
cout << ff(s_char[0] , 10 , s_char[5] - '0' ) << endl ;
}
}
else if(s_char[3] == ' ')//表示前一个运算对象小于 10
{
if(s_char[5] == '0') //后一个运算对象为 10
cout<<ff(s_char[0] , s_char[2] , 10 ) << endl ;
else if(s_char[5] == '\0') //后一个运算对象小于 10
cout<<ff(s_char[0] , s_char[2] - '0' , s_char[4] - '0') << endl ;
}
}
return 0;
}