ZOJ 3782

Complete the ternary calculation.Input

There are multiple test cases. The first line of input contains an integer T indicating the number of test cases. For each test case:

There is a string in the form of "number1 operatora number2 operatorb number3". Each operator will be one of {'+', '-' , '*', '/', '%'}, and each number will be an integer in [1, 1000].

Output

For each test case, output the answer.

Sample Input

5
1 + 2 * 3
1 - 8 / 3
1 + 2 - 3
7 * 8 / 5
5 - 8 % 3

Sample Output

7
-1
0
11
3

Note

The calculation "A % B" means taking the remainder of A divided by B, and "A / B" means taking the quotient.

分析:简单模拟 ,各种符号的运算单独开一个函数就好。

自己需要注意的问题:cin>>  输入的时候 空格和回车符不会被读入,但会留在缓冲区。

如果用scanf读入单个字符需要清理缓冲区 cin>>读入单个字符的话如果缓冲区里只有空格和回车就不用清理缓冲区。

代码如下:

#include <bits/stdc++.h> 
using namespace std;
char  s[100];
int cal(int a,int  b,char ch)
{
        if(ch=='+')
        return a+b;
      else if(ch=='-')
      return a-b;
      else if(ch=='*')
      return a*b;
      else if(ch=='/')
      return a/b;
      else if(ch=='%')
      return a%b;
}
int main()
{ 
  std::ios::sync_with_stdio(false);
  int t,sum1,sum2;
  while(cin>>t)
  {
  while(t--)
  {
      int sum=0;
     int a,b,c;
     char ch1,ch2;
     cin>>a>>ch1>>b>>ch2>>c;  
     if((ch1=='+'||ch1=='-')&&(ch2=='*'||ch2=='/'||ch2=='%'))
       {
           sum=cal(b,c,ch2);
           sum=cal(a,sum,ch1);
       }
       else 
       {
           sum=cal(a,b,ch1);
           sum=cal(sum,c,ch2);
       }
     cout<<sum<<endl;  
  }
}
    return 0;
}
原文地址:https://www.cnblogs.com/a249189046/p/6734353.html