# 4.2 循环结构

### 1.**while循环语句**

**作用：**&#x6EE1;足循环条件，执行循环语句

**语法：**`while(循环条件){ 循环语句 }`

**解释：**&#x53EA;要循环条件的结果为真，就执行循环语句

&#x20;**示例：**

```
int main() {

	int num = 0;
	while (num < 10)
	{
		cout << "num = " << num << endl;
		num++;
	}
	
	system("pause");

	return 0;
}
```

{% hint style="info" %}
在执行循环语句时候，程序必须提供跳出循环的出口，否则出现死循环
{% endhint %}

&#x20;**while循环练习案例：**&#x731C;数字

**案例描述：**&#x7CFB;统随机生成一个1到100之间的数字，玩家进行猜测，如果猜错，提示玩家数字过大或过小，如果猜对恭喜玩家胜利，并且退出游戏。

### 2. **do…while循环语句**

**作用：** 满足循环条件，执行循环语句

**语法：** `do{ 循环语句 } while(循环条件);`

**注意：**&#x4E0E;while的区别在于do…while会先执行一次循环语句，再判断循环条件

**示例：**

```
int main() {

	int num = 0;

	do
	{
		cout << num << endl;
		num++;

	} while (num < 10);
	
	
	system("pause");

	return 0;
}
```

**练习案例：水仙花数**

**案例描述：**&#x6C34;仙花数是指一个 3 位数，它的每个位上的数字的 3次幂之和等于它本身

例如：1^3 + 5^3+ 3^3 = 153

请利用do…while语句，求出所有3位数中的水仙花数

### 3.**for循环语句**

**作用：** 满足循环条件，执行循环语句

**语法：**`for(起始表达式;条件表达式;末尾循环体) { 循环语句; }`

**示例：**

```
int main() {

	for (int i = 0; i < 10; i++)
	{
		cout << i << endl;
	}
	
	system("pause");

	return 0;
}
```

{% hint style="info" %}
**1.**&#x66;or循环中的表达式，要用分号进行分隔

**2.**&#x77;hile , do…while, for都是开发中常用的循环语句，for循环结构比较清晰，比较常用
{% endhint %}

**练习案例：敲桌子**

案例描述：从1开始数到数字100， 如果数字个位含有7，或者数字十位含有7，或者该数字是7的倍数，我们打印敲桌子，其余数字直接打印输出。

### 4.**嵌套循环**

**作用：** 在循环体中再嵌套一层循环，解决一些实际问题

例如我们想在屏幕中打印如下10\*10的图，就需要利用嵌套循循环

![](https://1708013427-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MDFgOd2FwFfDdJGTjTV%2F-MNHFHQZAP0TH4jWL7Yk%2F-MNHJOSGfTlBRolkYdQr%2Fimage.png?alt=media\&token=51506e7c-bf56-44f3-a4c5-68c97b6a4bd3)

**示例：**

```
int main() {

	//外层循环执行1次，内层循环执行1轮
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			cout << "*" << " ";
		}
		cout << endl;
	}

	system("pause");

	return 0;
}
```

### **5.练习案例：**&#x4E58;法口诀表

**案例描述：**&#x5229;用嵌套循环，实现九九乘法表

**代码：**

```
#include <iostream>

using namespace std;

int main() {

	//定义i为行数，j为列数
	for (int i = 1; i <= 9;i++) {
		for (int j = 1; j <= i; j++) {

			cout << j << "*" << i<< "=" << i * j << " ";
		}
		cout << endl;
	}
	system("pause");
	return 0;
}
```

**效果：**

![](https://1708013427-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MDFgOd2FwFfDdJGTjTV%2F-MNIFCsQLhOJthP7UcA_%2F-MNIL7qbgZR-PK510ngA%2Fimage.png?alt=media\&token=ad56de66-548c-4338-9f07-b562fab55f44)
