C++学习日记--分支结构(if……else……)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010170012/article/details/19510131

文档下载

平时我们在说“如果……那么……”的时候,还经常和“否则……”连用。比如:如果明天天气好,就开运动会,否则就不开。按照之前的内容,我们只能这样说:如果明天天气好,就开运动会;如果明天天气不好,就不开运动会。虽然这样也能够把意思表达清楚,但是语句显得冗长,要是条件再多一点则更是杂乱。可见,在程序设计中,如果没有“否则……”语句将会多么麻烦。
和平时说话的习惯一样,“否则”应该与“如果”连用,其语法格式为:
if(条件)
{
    语句块1;
}
else
{
    语句块2;
}

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


我们来看一段程序
#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的嵌套
#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++中输入上面的程序,那么你一定会发现,每输入一次{},括号内部的语句就会自动向右侧缩进一段。而if……else……正是根据括号和缩进来进行判断他们是不是匹配的。具体的规则是,else向上寻找最近的一个和他处于相同缩进位置的if配对,我们把这种规则理解为“门当户对”。很显然,如果你没有改变过自动产生的缩进位置,else不会去找一个比他更右边或者更左边的if的。

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

 

猜你喜欢

转载自blog.csdn.net/u010170012/article/details/19510131