首页 > 编程 > C++ > 正文

C++教程:C++ if else语句讲解

2020-05-23 14:28:26
字体:
来源:转载
供稿:网友
平时我们在说“如果……,那么……”的时候,还经常和“否则……”连用。比如:如果明天天气好,就开运动会,否则就不开。按照我们上一节学的内容,我们只能这样说:如果明天天气好,就开运动会;如果明天天气不好,就不开运动会。虽然这样也能够把意思表达清楚,但是语句显得冗长,要是条件再多一些则更是杂乱。可见,在程序设计中,如果没有“否则……”语句将会多么麻烦。

和平时说话的习惯一样,“否则”应该与“如果”连用,其语法格式为:
C++教程:C++ if else语句讲解if (条件)
   语句块1;
else
   语句块2;


运行到该语句时,当条件满足,则运行语句块1中的语句;当条件不满足,则运行语句块2中的语句。我们也可以用流程图(图4.2.1)来直观地表示if……else……语句。和if语句一样,else语句的结尾是没有分号的。

我们来看一段程序:(程序4.2.1)
#include "iostream.h"
int main() 
{
   int a,b,max;
   cout <<"请输入两个数:"<<endl;
   cin >>a >>b;
   if (a>=b)//如果a大于等于b,则把a的值放到max中
   {
      max=a;
   }
   else//否则把b的值放到max中
   {
      max=b;
   }
   cout <<"较大的数是" <<max <<endl;
   return 0;
}

第一次运行结果:
请输入两个数:
1 5
较大的数是5
第二次运行结果:
请输入两个数:
5 8
较大的数是8
通过以上程序,我们基本上可以了解if……else……的使用了。

if...else...嵌套使用

我们知道了,if语句的主要功能是给程序提供一个分支。然而,有时候程序中仅仅多一个分支是远远不够的,甚至有时候程序的分支会很复杂,要在一个分支里面再有一个分支。根据if语句的流程图,我们不难想象如果要在分支里再形成分支,就应该在if语句中使用if语句。这类在一种语句的内部多次使用这种语句的现象叫做嵌套。

我们来看一段程序,熟悉一下if的嵌套。(程序4.2.2)
#include "iostream.h"
int main()
{
   float a,b;
   char oper;//创建一个字符型变量用于存放操作符
   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的。
C++教程:C++ if else语句讲解

在有些高级语言中,是没有缩进的。缩进不仅是为了美观,也是为了让程序的层次更加分明。我们通过缩进就能很容易看出一段代码应该从哪里开始,运行到哪里结束。如果没有缩进的话,就要去找保留字,这给大型程序开发带来了麻烦。所以保持缩进是一种好习惯。  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表