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
}