章节目录:
- 一、选择结构
- 1.1 if 语句
- 1.2 if...else 语句
- 1.3 嵌套 if
- 1.4 if...else if...else
- 1.5 三目运算符
- 1.6 switch 语句
- 二、循环结构
- 2.1 while 语句
- 2.2 do...while 语句
- 2.3 for 语句
- 2.4 嵌套循环
- 三、跳转语句
- 3.1 break 语句
- 3.2 continue 语句
- 3.3 goto 语句
- 四、结束语
一、选择结构
选择结构:依据条件是否满足,有选择的执行相应功能。
1.1 if 语句
一个
if
语句 由一个布尔表达式后跟一个或多个语句组成。
- 语法:
if(boolean_expression)
{
// 如果布尔表达式为真将执行的语句。
}
- 示意图:
- 代码示例:
#include <iostream>
int main() {
int score = 0;
std::cout << "请输入您的分数: " << std::endl;
std::cin >> score;
if (score > 60) {
std::cout << "很好,及格了!" << std::endl;
// 请输入您的分数:
// 61
// 很好,及格了!
}
return 0;
}
1.2 if…else 语句
一个
if
语句 后可跟一个可选的else
语句,else
语句在布尔表达式为假时执行。
- 语法:
if (boolean_expression) {
// 如果布尔表达式为真将执行的语句。
} else {
// 如果布尔表达式为假将执行的语句。
}
- 示意图:
- 代码示例:
#include <iostream>
int main() {
int score = 0;
std::cout << "请输入您的分数: " << std::endl;
std::cin >> score;
if (score > 600) {
std::cout << "考上了不错的大学。" << std::endl;
// 请输入您的分数:
// 650
// 考上了不错的大学。
} else {
std::cout << "只考上了一般的大学。" << std::endl;
// 请输入您的分数:
// 480
// 只考上了一般的大学。
}
return 0;
}
1.3 嵌套 if
在
if
语句中,可以嵌套使用if
语句,达到更精确的条件判断。
- 语法:
if( boolean_expression 1)
{
// 当布尔表达式 1 为 true 时执行。
if(boolean_expression 2)
{
// 当布尔表达式 2 为 ture 时执行。
}
}
- 代码示例:
#include <iostream>
int main() {
int score = 0;
std::cout << "请输入您的分数: " << std::endl;
std::cin >> score;
if (score > 0) {
if (score < 60) {
std::cout << "分数不及格。" << std::endl;
// 请输入您的分数:
// 58
// 分数不及格。
} else {
std::cout << "分数及格了。" << std::endl;
// 请输入您的分数:
// 60
// 分数及格了。
}
} else {
std::cout << "分数输入异常。" << std::endl;
// 请输入您的分数:
// -1
// 分数输入异常
}
return 0;
}
1.4 if…else if…else
一个
if
语句后可跟一个可选的else
if
…else
语句,这可用于测试多种条件。
- 语法:
if (boolean_expression 1) {
// 当布尔表达式 1 为 true 时执行。
} else if (boolean_expression 2) {
// 当布尔表达式 2 为 true 时执行。
} else if (boolean_expression 3) {
// 当布尔表达式 3 为 true 时执行。
} else {
// 以上都不满足执行的语句。
}
- 代码示例:
#include <iostream>
int main() {
int score = 0;
std::cout << "请输入考试分数:" << std::endl;
std::cin >> score;
if (score > 600) {
std::cout << "我考上了一本大学" << std::endl;
} else if (score > 500) {
std::cout << "我考上了二本大学" << std::endl;
} else if (score > 400) {
std::cout << "我考上了三本大学" << std::endl;
} else {
std::cout << "我未考上本科" << std::endl;
}
return 0;
}
1.5 三目运算符
三目运算符可以实现简单的判断。
- 语法:
// 表达式1 ? 表达式2 :表达式3
expression 1 ? expression 2 : expression 3
// 如果表达式1的值为真,执行表达式2,并返回表达式2的结果;
// 如果表达式1的值为假,执行表达式3,并返回表达式3的结果。
- 代码示例:
#include <iostream>
int main() {
int a = 100;
int b = 200;
int max = 0;
max = a > b ? a : b;
std::cout << max << std::endl;
// 200
return 0;
}
- 和
if
语句比较,三目运算符优点是短小整洁,缺点是如果用嵌套,结构不清晰,会增加理解的难度。
1.6 switch 语句
用于执行多条件分支语句。
- 语法:
switch(expression){
case constant-expression :
statement(s);
break; // 可选的
case constant-expression :
statement(s);
break; // 可选的
// 您可以有任意数量的 case 语句
default : // 可选的
statement(s);
}
- 代码示例:
#include <iostream>
int main() {
int score = 0;
std::cout << "请输入电影评分(满分10分):" << std::endl;
std::cin >> score;
switch (score) {
case 10:
case 9:
std::cout << "优秀。" << std::endl;
break;
case 8:
case 7:
std::cout << "还不错" << std::endl;
break;
case 6:
case 5:
std::cout << "一般" << std::endl;
break;
default:
std::cout << "不怎么样" << std::endl;
break;
}
return 0;
}
- 注意事项:
switch
语句中表达式类型只能是整型或者字符型。case
里如果没有break
,那么程序会一直向下执行
- 总结:与
if
语句比,对于多条件判断时,switch
的结构清晰,执行效率高,缺点是switch
不可以判断区间。
二、循环结构
2.1 while 语句
只要给定的条件为真,
while
循环语句会重复执行一个目标语句。
- 语法:
while(condition)
{
statement(s);
}
- 代码示例:
#include <iostream>
#include <random>
int main() {
// 创建一个 1~ 10 的随机数。
// 使用随机设备作为种子
std::random_device rd;
// 使用 Mersenne Twister 引擎。
std::mt19937 gen(rd());
// 定义要生成随机数的范围。
std::uniform_int_distribution<int> dis(1, 10);
// 生成随机数。
int system_num = dis(gen);
// 接收用户输入。
int input_number = 0;
while (input_number != system_num) {
std::cout << "请输入一个数(10以内):" << std::endl;
std::cin >> input_number;
if (input_number == system_num) {
std::cout << "恭喜你,猜对啦!" << std::endl;
} else {
std::cout << "差一点点,请继续猜数!" << std::endl;
}
std::cout << "\n" << std::endl;
}
return 0;
}
- 注意:在执行循环语句时候,程序必须提供跳出循环的出口,否则出现死循环。
2.2 do…while 语句
不像
for
和while
循环,它们是在循环头部测试循环条件。do...while
循环是在循环的尾部检查它的条件。
do...while
循环与while
循环类似,但是do...while
循环会确保至少执行一次循环。
- 语法:
do
{
statement(s);
}while( condition );
- 代码示例:
#include <iostream>
int main() {
int num = 0;
do {
std::cout << num << std::endl;
// 0
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
num++;
} while (num < 10);
return 0;
}
2.3 for 语句
for
循环允许编写一个执行特定次数的循环的重复控制结构。
- 语法:
for ( init; condition; increment )
{
statement(s);
}
- init 会首先被执行,且只会执行一次。这一步可以声明并初始化任何循环控制变量。也可以不在这里写任何语句,只要有一个分号出现即可。
- 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着
for
循环的下一条语句。 - 在执行完
for
循环主体后,控制流会跳回上面的 increment 语句。该语句可以更新循环控制变量。也可以留空,只要在条件后有一个分号出现即可。 - 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,
for
循环终止。 - 代码示例:
#include <iostream>
int main() {
for (int i = 0; i < 5; i++) {
std::cout << i << std::endl;
// 0
// 1
// 2
// 3
// 4
}
return 0;
}
2.4 嵌套循环
一个循环内可以嵌套另一个循环。
- 嵌套
for
:
for ( init; condition; increment )
{
for ( init; condition; increment )
{
statement(s);
}
statement(s);
// 可以放置更多的语句。
}
- 嵌套
while
:
while(condition)
{
while(condition)
{
statement(s);
}
statement(s); // 可以放置更多的语句
}
- 代码示例:
#include <iostream>
int main() {
// 利用嵌套 for 打印星形矩阵。
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
std::cout << "*" << " ";
// * * *
// * * *
// * * *
}
std::cout << std::endl;
}
return 0;
}
三、跳转语句
3.1 break 语句
关键字
break
用于跳出选择结构或者循环结构。
-
用法:
- 当
break
语句出现在一个循环内时,循环会立即终止,且程序流将继续执行紧接着循环的下一条语句。 - 它可用于终止
switch
语句中的一个case
。 - 出现在嵌套循环中,可跳出最近的内层循环语句。
- 当
-
代码示例:
#include <iostream>
int main() {
int n = 0;
while (true) {
std::cout << "n=" << n << std::endl;
// n=0
// n=1
// n=2
// n=3
// n=4
// n=5
if (n == 5) {
// n 等于 5 的时候跳出循环。
break;
}
n += 1;
}
return 0;
}
3.2 continue 语句
在循环语句中,
continue
用于跳过本次循环中余下尚未执行的语句,继续执行下一次循环。
- 代码示例:
#include <iostream>
int main() {
for (int a = 10; a > 0; a--) {
// 跳过偶数。
if (a % 2 == 0) {
continue;
}
std::cout << a << std::endl;
// 9
// 7
// 5
// 3
// 1
}
return 0;
}
- 注意:
continue
并没有使整个循环终止,而break
会跳出循环。
3.3 goto 语句
语句允许把控制无条件转移到同一函数内的被标记的语句。
- 注意:在任何编程语言中,都不建议使用
goto
语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。 - 任何使用
goto
语句的程序可以改写成不需要使用goto
语句的写法。 - 语法:
goto label;
..
.
label: statement;
- 代码示例:
#include <iostream>
int main() {
std::cout << "1" << std::endl;
// 1
goto FLAG;
std::cout << "2" << std::endl;
std::cout << "3" << std::endl;
std::cout << "4" << std::endl;
FLAG:
std::cout << "5" << std::endl;
// 5
return 0;
}
goto
语句一个很好的作用是退出深嵌套:
for(...) {
for(...) {
while(...) {
if(...) goto stop;
.
.
.
}
}
}
stop:
std::cout << "Error";
四、结束语
“-------怕什么真理无穷,进一寸有一寸的欢喜。”
微信公众号搜索:饺子泡牛奶。