65,210
社区成员
发帖
与我相关
我的任务
分享#include <iostream.h>
#include <stdlib.h>
int main()
{
float a,b,c;
char oper1,oper2;
cout <<"输入一个表达式:例如2+3*4" <<endl;
cin>>a>>oper1>>b>>oper2>>c;
switch(oper1)
{
case'+':
{
switch(oper2)
{
case'*':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b*c <<endl;
break;
}
case'/':
{
if(c!=0)
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b/c <<endl;
}
else
{
cout <<"erro" <<endl;
exit(1);
}
break;
}
case'+':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b+c <<endl;
break;
}
case'-':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b-c <<endl;
break;
}
default:
cout <<"error" <<endl;
exit(1);
}
break;
}
case'-':
{
switch(oper2)
{
case'*':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b*c <<endl;
break;
}
case'/':
{
if(c!=0)
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b/c <<endl;
}
else
{
cout <<"erro" <<endl;
exit(1);
}
break;
}
case'+':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b+c <<endl;
break;
}
case'-':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b-c <<endl;
break;
}
default:
cout <<"error" <<endl;
exit(1);
}
break;
}
case'*':
{
switch(oper2)
{
case'*':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a*b*c <<endl;
break;
}
case'/':
{
if(c!=0)
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a*b/c <<endl;
}
else
{
cout <<"erro" <<endl;
exit(1);
}
break;
}
case'+':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a*b+c <<endl;
break;
}
case'-':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a*b-c <<endl;
break;
}
default:
cout <<"error" <<endl;
exit(1);
}
break;
}
case'/':
{
if(b!=0)
{
switch(oper2)
{
case'*':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a/b*c <<endl;
break;
}
case'/':
{
if(c!=0)
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a/b/c <<endl;
}
else
{
cout <<"erro" <<endl;
exit(1);
}
break;
}
case'+':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a/b+c <<endl;
break;
}
case'-':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a/b-c <<endl;
break;
}
default:
cout <<"error" <<endl;
exit(1);
}
}
else
{
cout <<"error" <<endl;
exit(1);
}
break;
}
default:
cout <<"error" <<endl;
exit(1);
} //就是这个神奇的括号,它没有自动和第一个switch对应起来,手动调了位置才通过了编译。
return 0;
}