目录
前言
这篇文章介绍一下C++中的基本控制语句
。
一、C++语句
在C++中,语句是构成程序的基本单位,用于执行特定的操作。
二、顺序结构
1.声明语句
声明语句:声明语句用于声明变量、函数、类等标识符。
2.表达式语句
表达式语句执行一个表达式,并且以分号结尾。
3.基本输入/输出语句
输出语句:使用 cout
对象可以将数据输出到标准输出流(通常是显示器)上
输入语句:使用 cin
对象可以从标准输入流(通常是键盘)读取数据。
4.复合语句和空语句
空语句:空语句不执行任何操作,只包含一个分号。通常用于语法要求的位置或者占位符
复合语句(也称为块语句)是一组语句的序列,它们被包裹在花括号 {}
中,并被视为一个独立的语句单元。在 C++ 中,复合语句允许将多个语句组合在一起,并在需要单个语句的地方使用。
#include <iostream>
using namespace std;
int main() {
int x = 5;
{
int y = 10;
cout << "Inside inner block: x = " << x << ", y = " << y << endl;
} // y的作用域在这里结束
// y在这里不可见
cout << "Outside inner block: x = " << x << endl;
return 0;
}
三、选择结构
1.if语句
C++ 中最基本和常用的控制流语句之一,用于根据条件选择执行不同的代码块。if
语句的基本语法如下:
如果 condition
的值为真(非零),则执行 if
语句后面的代码块;如果 condition
的值为假(零),则跳过 if
语句后面的代码块,继续执行程序的下一条语句。
if
语句还可以与 else
配合使用,形成 if-else
结构,用于在条件为假时执行另一段代码块。if-else
语句的语法如下:
下面是一个示例,演示了 if
和 if-else
语句的用法:
#include <iostream>
using namespace std;
int main() {
int x = 10;
// 简单的if语句
if (x > 5) {
cout << "x is greater than 5" << endl;
}
// 带有else的if语句
if (x > 20) {
cout << "x is greater than 20" << endl;
} else {
cout << "x is not greater than 20" << endl;
}
// 嵌套的if语句
if (x > 5) {
if (x < 15) {
cout << "x is between 5 and 15" << endl;
}
}
return 0;
}
2.switch语句
switch语句是 C++ 中另一种常用控制流语句,用于根据表达式的值选择不同的执行路径。
switch语句的基本语法如下:
switch语句首先计算表达式的值,然后将这个值与 case 标签中的值进行比较。如果找到一个匹配的 case 标签,则执行相应的代码块,并跳过后面的 case标签;如果没有找到匹配的 case 标签,则执行default标签后面的代码块(如果有),或者直接跳过 switch语句。
注意:
- 每个 case 标签后面都必须有一个 break语句,用于终止 switch语句的执行,否则将会继续执行下一个 case 标签后面的代码块。
- default标签是可选的,用于处理表达式的值与所有 case值都不匹配的情况。
下面是一个示例,演示了 `switch` 语句的用法:
#include <iostream>
using namespace std;
int main() {
int choice;
cout << "Enter a number between 1 and 3: ";
cin >> choice;
switch (choice) {
case 1:
cout << "You chose option 1" << endl;
break;
case 2:
cout << "You chose option 2" << endl;
break;
case 3:
cout << "You chose option 3" << endl;
break;
default:
cout << "Invalid choice" << endl;
break;
}
return 0;
}
在这个示例中,用户输入一个数字,然后根据这个数字执行相应的操作。根据用户的输入,switch语句会选择不同的执行路径。
四、循环结构
1.for语句
for循环是 C++ 中常用的一种循环结构,用于重复执行一段代码,直到条件不再足。
for循环的基本语法如下:
其中:
initialization 是循环开始前的初始化语句,通常用于初始化循环控制变量。
condition 是循环继续执行的条件,每次循环迭代之前都会进行检查。如果条件为真,则继续执行循环;如果条件为假,则结束循环。
update是循环迭代后更新循环控制变量的语句,通常用于增加或减少循环控制变量的值。
for 循环可以替代 while 循环,它的结构更加简洁明了,适合于循环次数已知的情况。
下面是一个示例,演示了 for循环的用法:
#include <iostream>
using namespace std;
int main() {
// 打印数字1到5
for (int i = 1; i <= 5; ++i) {
cout << i << " ";
}
cout << endl;
// 计算数字1到5的和
int sum = 0;
for (int j = 1; j <= 5; ++j) {
sum += j;
}
cout << "Sum of numbers 1 to 5: " << sum << endl;
return 0;
}
在这个示例中,我们使用 for循环打印了数字1到5,以及计算了数字1到5的和。在 for循环的括号中,我们分别进行了循环变量的初始化、条件的检查和循环变量的更新。
2.while语句
while 循环是 C++ 中另一种常用的循环结构,它用于重复执行一段代码,直到指定的条件不再满足。while循环的基本语法如下:
其中 condition是循环继续执行的条件。在每次循环迭代开始时,会检查 condition的值。如果 condition 为真,则执行循环体内的代码块;如果 condition为假,则结束循环,程序继续执行循环后面的代码。
while循环常用于循环次数不确定的情况,只要条件为真,循环就会继续执行。
下面是一个示例,演示了 `while` 循环的用法:
#include <iostream>
using namespace std;
int main() {
int num = 1;
// 打印数字1到5
while (num <= 5) {
cout << num << " ";
++num;
}
cout << endl;
// 计算数字1到5的和
num = 1;
int sum = 0;
while (num <= 5) {
sum += num;
++num;
}
cout << "Sum of numbers 1 to 5: " << sum << endl;
return 0;
}
在这个示例中,我们使用 while 循环打印了数字1到5,以及计算了数字1到5的和。在 `while` 循环的括号中,我们指定了条件 num <= 5,并在循环体内对循环控制变量 num进行递增操作。
3.do...while语句
do...while 循环是 C++ 中另一种循环结构,它和 while循环类似,但在执行循环体之前会先执行一次条件检查。这意味着无论条件是否为真,循环体至少会执行一次。
do...while 循环的基本语法如下:
其中 condition 是循环继续执行的条件。在每次循环迭代开始时,会先执行循环体内的代码块,然后再检查 condition 的值。如果 condition 为真,则继续执行循环;如果 condition为假,则结束循环,程序继续执行循环后面的代码。
do...while 循环适用于需要至少执行一次循环体的情况。
下面是一个示例,演示了 do...while循环的用法:
#include <iostream>
using namespace std;
int main() {
int num = 1;
// 打印数字1到5
do {
cout << num << " ";
++num;
} while (num <= 5);
cout << endl;
// 计算数字1到5的和
num = 1;
int sum = 0;
do {
sum += num;
++num;
} while (num <= 5);
cout << "Sum of numbers 1 to 5: " << sum << endl;
return 0;
}
在这个示例中,我们使用 do...while 循环打印了数字1到5,以及计算了数字1到5的和。无论条件 num <= 5是否为真,循环体至少会执行一次。
4.循环的嵌套
循环的嵌套是指在一个循环内部包含另一个循环。C++ 允许在任何循环体内部嵌套其他类型的循环,包括 for 循环、while 循环、do...while 循环等。通过循环的嵌套,可以实现更复杂的控制流程和算法逻辑。
下面是一个简单的示例,演示了循环的嵌套:
#include <iostream>
using namespace std;
int main() {
// 外层循环控制行数
for (int i = 1; i <= 5; ++i) {
// 内层循环控制每行打印的星号数量
for (int j = 1; j <= i; ++j) {
cout << "* ";
}
cout << endl;
}
return 0;
}
在这个示例中,外层循环控制行数,内层循环控制每行打印的星号数量。通过循环的嵌套,我们实现了一个打印直角三角形的功能。
循环的嵌套可以嵌套多层,可以结合条件判断语句,实现更复杂的控制逻辑。然而,过度的循环嵌套可能会导致代码可读性下降和性能问题,因此需要谨慎使用。
五、跳转语句
跳转语句是 C++ 中的一种特殊语句,用于改变程序的执行流程,通常用于控制程序的跳转和循环中的终止。
以下是几种常见的跳转语句:
1. break 语句:在循环语句 (for, while, do...while) 或 switch 语句中,break语句用于终止当前循环或 switch语句的执行,并跳出循环或 switch语句的代码块。
for (int i = 0; i < 10; ++i) {
if (i == 5) {
break; // 当 i 等于 5 时跳出循环
}
cout << i << endl;
}
2. continue 语句:在循环语句 (for, while, do...while) 中,continue 语句用于跳过当前迭代的剩余部分,直接进入下一次循环迭代。
for (int i = 0; i < 10; ++i) {
if (i % 2 == 0) {
continue; // 当 i 为偶数时跳过本次循环
}
cout << i << endl;
}
3. return 语句:在函数中,return语句用于返回函数的执行结果,并结束函数的执行。
int square(int x) {
return x * x; // 返回 x 的平方
}
4. goto 语句:goto语句是 C++ 中最基本的跳转语句,它可以直接跳转到指定标签(标签必须在当前作用域内)的语句处执行。
int x = 0;
loop:
cout << x << endl;
++x;
if (x < 10) {
goto loop; // 跳转到 loop 标签处继续执行
}
尽管 `goto` 语句在一些特定情况下可能会提供一种解决问题的途径,但通常不推荐使用,因为它会使程序的流程变得难以理解和维护。相比之下,使用结构化的控制语句(如 break、continue、return)可以使代码更加清晰易读。