cout <<"请输入一个表达式(eg.1+2):" <<endl;
cin >>a >>oper >>b;//输入表达式,操作符处于中间
if (oper=='+')//如果操作符是加号
{
cout <<a <<oper <<b <<'=' <<a+b <<endl;//输出两数的和
}
else//否则
{
if (oper=='-')//如果操作符是减号
{
cout <<a <<oper <<b <<'=' <<a-b <<endl;//输出两数的差
}
else//否则
{
if (oper=='*')//如果操作符是乘号
{
cout <<a <<oper <<b <<'=' <<a*b <<endl;//输出两数的积
}
else//否则
{
if (oper=='/' && b!=0)//如果操作符为除号且除数不为零
{
cout <<a <<oper <<b <<'=' <<a/b <<endl;//输入两数的商
}
else//否则
{
cout <<"出错啦!" <<endl;//操作符不正确或除数为零,输出错误信息
}
}
}
}
return 0;
}
第一次运行结果:
请输入一个表达式(eg.1+2):
1.5+3
1.5+3=4.5
第二次运行结果:
请输入一个表达式(eg.1+2):
8/0
出错啦!
第三次运行结果:
请输入一个表达式(eg.1+2):
5p3
出错啦!
以上这段程序能够基本实现表达式的识别。它所使用的if嵌套能够分辨出到底要进行什么运算,并且把引起错误的操作符或数据分支出来。
如何判断哪个if...else...是一对
当一个程序中出现多个if……else……的时候,也可能会引来一些麻烦的事情。因为每个if都具有和else配对的功能。那么我们在阅读一段程序的时候,怎么才能够知道哪个if和哪个else是在一起的呢?如果你尝试过在VC++中输入程序4.2.2,那么你一定会发现,每输入一次{},括号内部的语句就会自动向右侧缩进一段。而if……else……正是根据括号和缩进来判断它们是不是匹配的。具体的规则是,else向上寻找最近的一个和它处于相同缩进位置的if配对,我们把这种规则理解为“门当户对”。很显然,如果你没有改变过自动产生的缩进位置,else不会去找一个比它更右边或者更左边的if的。










