跳至正文
View Categories

3 min read

1. 判断语句 #

人生总是有很多选择,我们无时不刻不在做着各种各样的选择。

对于程序而言,也是如此。那么,C++ 是怎么表示选择的呢?

/*
    判断语句 if 
    假设,图中的人需要根据抛硬币的结果,来选择道路。
    # 正面:向左走;
    # 反面:向右走;
*/

if(硬币是正面)
{
    向左走; // 正面硬币 
}
else
{
    向右走; // 反面硬币
}

说明:
小括号()里面的内容,是“关系表达式”;
小括号()里面的内容,也可以是 bool 变量;
if,是“如果”的意思; 小括号()里面的关系表达式若为“真”(true),则执行后面 { } 里面的内容。
else,是“否则”的意思; 小括号()里面的关系表达式若为“假”(false),则执行后面 { } 里面的内容。

1.1 判断语句 if … else … #

下面给出可以运行的代码:

#include <iostream>
using namespace std;
int main()
{
    int a(0);
    cout << "请输入(1 表示正面,0 表示反面):" << endl;
    cin >> a;
    if(a == 1)
    {    
        cout << "输入为 1 ,向左走" << endl;
    }
    else
    {
        cout << "输入为 0 ,向右走" << endl;
    }    

    return 0;
}

1.2 判断语句 if … #

else 部分,可以省略。

#include <iostream>
using namespace std;
int main()
{
    int a(0);
    cout << "请输入(1 表示正面,0 表示反面):" << endl;
    cin >> a;
    if(a == 1)
    {    
        cout << "输入为 1 ,向左走" << endl;
    }

    return 0;
}

1.3 省略大括号 #

假如,处理语句只有一句,大括号可以省略。比如:

#include <iostream>
using namespace std;
int main()
{
    int a(0);
    cout << "请输入(1 表示正面,0 表示反面):" << endl;
    cin >> a;
    if(a == 1)
        cout << "输入为 1 ,向左走" << endl; // 大括号可以省略
    else
        cout << "输入为 0 ,向右走" << endl; // 大括号可以省略

    return 0;
}

假如,含有超过一条处理语句,大括号不可以省略。比如:

#include <iostream>
using namespace std;
int main()
{
    int a(0);
    cout << "请输入(1 表示正面,0 表示反面):" << endl;
    cin >> a;
    if(a == 1)
    {
        cout << "输入为 " << a << endl; // 大括号不可以省略
        cout << "请向左走" << endl; 
    }
    else
    {
        cout << "输入为 " << a << endl; // 大括号不可以省略
        cout << "请向右走" << endl; 
    }

    return 0;
}

1.4 if 的嵌套 #

小练习:
请用两次判读语句,检查输入整数,是否大于0,并且小于等于10。
是则输出 Yes;否则什么都不做。

#include <iostream>
using namespace std;
int main()
{
    // 请编程






    return 0;
}

示例程序:

#include <iostream>
using namespace std;
int main()
{
    int a(0);
    cout << "请输入一个整数:" << endl;
    cin >> a;

    if(a > 0)
    {
        if(a <= 10)
            cout << "Yes" << endl;
    }  

    return 0;
}

从这个程序中,我们可以看到这样的结构

if( 条件表达式 1 )
{
    if( 条件表达式 2 )
    {
        // 执行语句
    }
}

这种结构就被称为“if 的嵌套”。

“if 的嵌套”可以有多层。比如:

if( 条件表达式 1 )
{
    if( 条件表达式 2 )
    {
        if( 条件表达式 3 )
        {
            if( 条件表达式 4 )
            {
                // 执行语句
            }
        }
    }
}

1.5 判断语句 else if #

小练习:
假如,我们遇到一个多条道路的路口,若使用上述的判断逻辑,
我们应该如何书写代码?请试一试。
(请输入 0,1,2 中的一个数,判断并输出指定的文字。 0,1,2 分别对应输出“左转”,“直行”,“右转”。)

示例代码:

#include <iostream>
using namespace std;
int main()
{
    int a(0);
    cout << "请输入(0,1,2):" << endl;
    cin >> a;
    if(a == 0)
        cout << "左转" << endl;

    if(a == 1)
        cout << "直行" << endl;

    if(a == 2)
        cout << "右转" << endl;

    return 0;
}

在 C++ 中,还有一种等价写法。我们一起来看一下。

#include <iostream>
using namespace std;
int main()
{
    int a(0);
    cout << "请输入(0,1,2):" << endl;
    cin >> a;
    if(a == 0)
    {
        cout << "左转" << endl;           // 只有一条语句的话,大括号可以省略。
    }
    else if(a == 1)                          // else if 结构
        cout << "直行" << endl;
    else if(a == 2)
        cout << "右转" << endl;
    else
        cout << "输入错误!" << endl;

    return 0;
}

1.5.1 else if 的几种结构 #

  • 基本结构
if(表达式 1)
{
    // 执行语句 1 // 只有一条语句的话,大括号可以省略。
}
else if(表达式 2)
{
    // 执行语句 2
}
else
{
    // 执行语句 3
}
  • 省略 else
if(表达式 1)
{
    // 执行语句 1 // 只有一条语句的话,大括号可以省略。
}
else if(表达式 2)
{
    // 执行语句 2
}
  • 嵌套
if(表达式 1)
{
    // 执行语句 1 // 只有一条语句的话,大括号可以省略。
}
else if(表达式 2)
{
    if(表达式 2-1)
    {
        // 执行语句 2-1 // 只有一条语句的话,大括号可以省略。
    }
    else if(表达式 2-2)
    {
        // 执行语句 2-2
    }
}
else
{
    // 执行语句 3
}

2. 课后练习 #

  1. 简单判断
  2. 预算够吗
  3. 能否构成直角三角形
  4. 判断奇数
  5. 最小的数