#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
float a,b,s;
char op;
int flag=1;
cin>>a>>op>>b;
if(op=='+')
{
s=a+b;
}
else if(op=='-')
{
s=a-b;
}
else if(op=='*')
{
s=a*b;
}
else if(op=='/')
{
if(b==0)
{
flag=0;
}
else
{
s=a/b;
}
}
else if(op!='+'&&op!='-'&&op!='*'&&op!='/')
{
flag=0;
}
if(flag==1)
{
cout<<fixed<<setprecision(2);
cout<<s<<endl;
}
if(flag==0)
{
cout<<"Wrong input!"<<endl;
}
return 0;
}
你可以判断字符串中有没有连续出现运算符,但是这个代码中,使用的是float和char来接收运算符,没法判断是否输入了连续的运算符,如果非要判断的话,可以判断op是运算符并且b是否是负数,如果同时满足上面的两个条件,就说明读入了连续的运算符,但是这样的话,这个代码就没法处理负数了。
输入1+-5并不是按-算,他收到的是a=1,op=+,b=-5了,因此结果像a-b的样子。这个输入在逻辑上没问题的。