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 }