我是靠谱客的博主 开放纸飞机,最近开发中收集的这篇文章主要介绍C语言日记 10 if的嵌套语句(分支结构程序设计)if语句的嵌套,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

if语句的嵌套

同样的,在这里,我们又遇到(犯)了和之日记9相同的错误:

#include <iostream>
using namespace std;
int main()
{
    int a, b;
    cin >> a, b;
    if (a == 1)
        if(b==2)
        a = a + 1;
    cout << a;
}

一.

if(<表达式1>)

if(<表达式2>)语句

例:

#include <iostream>
using namespace std;
int main()
{
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    if (a == b)//表达式1
        if (c == 1)//表达式2
            d = d + 1;//语句1
    cout << d;
}

结果:

输入输出
1211

1

11112
11211
123444

结果说明:

只有“if (a == b)//表达式1”,“if (c == 1)//表达式2”同时满足时,

才执行“d = d + 1;//语句1” ,即:

 二.

    if (<表达式 1>)
        if(<表达式2>)
        语句1; 
        else 
          if (<表达式3>)
            语句2;

例:

#include <iostream>
using namespace std;
int main()
{
    int a, b, c;
    cin >> a >> b >> c ;
    if (a == 1)
        if (b == 1)
            cout << "1" << endl;
        else
            if (c == 1 )
                cout << "2" <<endl;
}

这里,就涉及到嵌套配对问题。

嵌套配对问题: 

书P42:

    if (表达式 1)
    if (表达式2)
        语句 1; 
    else 
        语句 2;

其else与哪个if配对?

应理解为

    if (表达式 1)
        if (表达式2)
            语句 1; 
    else 
        语句 2;

还是理解为

    if (表达式 1)
        if (表达式2)
            语句 1;
        else 
        语句 2;

转化为具体程序,即:

    if (a==1)
    if (b==1)
        cout << 1 << endl;
    else
        cout << 2 << endl;

等价于

        if (b == 1)
            cout << 1 << endl;
    else
        cout << 2 << endl;

还是

    if (a == 1)
        if (b == 1)
            cout << 1 << endl;
        else
        cout << 2 << endl;

书P42:

为了避免这种二义性,C++语言规定:

else 总是与它前面最近的未配对过的if迁配。

因此对上述例子应按后一种情况理解。

实践出真知:

有意思的是:

tm这两种编译方式最后结果输入一样的输入我们会得到同样的输出

也就是说,这两种方式在运行时没有任何区别。即:

输入

输出

00

/(空)

01

/(空)

102
111
cnmd
你tm把老子当傻逼是吧?
耍得老子团团转
 

 当然,经过半天的费尽周折,这里作者想要表达的意思我们是明白了:

即:

对上面的if嵌套程序,

"认为else后的语句对应表示的是:

上面所有条件(两个if语句)都被满足(为真)

以外的所有情况

都执行的操作"

这样的理解方式是错的

 如书P42所言:

C++语言规定:

else 总是与它前面最近的未配对过的if迁配。

(同理)同样的,对于前面我们最开始提到的(有关于嵌套)的:

 二.

    if (<表达式 1>)
        if(<表达式2>)
        语句1; 
        else 
          if (<表达式3>)
            语句2;

例:

#include <iostream>
using namespace std;
int main()
{
    int a, b, c;
    cin >> a >> b >> c ;
    if (a == 1)
        if (b == 1)
            cout << "1" << endl;
        else
            if (c == 1 )
                cout << "2" <<endl;
}

结果:

输入

输出

1101
1111
1012
010/(空)
001/(空)

画出流程图,即:

 

  书P42例3-6:

#include <iostream>
using namespace std;
int main()
{
    int a, b;
    cout << "please input a,b:      ";
        cin>>a>>b;
        if (a != b)
            if (a > b)
                cout << "a>b" << endl;
            else
                cout << "a<b" << endl;
        else
            cout << "a=b" << endl;
}

流程图如下:

  书P43例3-7:

#include <iostream>
using namespace std;
int main()
{
    int a, b;
    cout << "please input a,b:   ";
        cin>>a>>b;
        if (a > b)   cout << "a>b" << endl;
        else if (a < b)   cout << "a<b" << endl; 
        else   cout << "a=b" << endl;
}

流程图如下:

例3-8:

用条件表达式对例3-4重新编程。源程序:

#include <iostream>
using namespace std;
int main()
{
    int a, b, max;
    cout << "Please input two numbers: " << endl;
    cin >> a >> b;
    max = a > b ? a : b;
    cout << "max=" << max << endl;
}

最后

以上就是开放纸飞机为你收集整理的C语言日记 10 if的嵌套语句(分支结构程序设计)if语句的嵌套的全部内容,希望文章能够帮你解决C语言日记 10 if的嵌套语句(分支结构程序设计)if语句的嵌套所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部