文章目录
1. while循环结构
-
满足循环条件,执行循环语句
-
while (循环条件){ 循环语句 }
只要循环条件结构为真,就执行循环语句
执行语句时,必须提供跳出循环的出口,否则会出现死循环
while循环练习案例:猜数字
-
案例描述:系统随机生成一个1到100之间的数字,晚间进行猜测,如果猜错,提示玩家数字过大或过小,如果柴堆恭喜玩家胜利,并且退出游戏。
-
#include<iostream> #include<cstdlib> using namespace std; //time系统时间头文件包含 #include<ctime> int main() { //田间随机数种子 作用利用当前系统时间生成随机数,防止每次随机数都一样 srand((unsigned int)time(NULL)) ;//srand和rand都需要头文件cstdlib或stlib.h //1.系统生成随机数 int num = rand() % 100 + 1;//rand()%n的结果时[0,n-1]的一个整数 //2.玩家进行猜测 int val = 0; while(1) { cin >> val; //3. 判断玩家的猜测 if (val > num) { cout << "猜测过大" << endl; } else if (val < num) { cout << "猜测过小" << endl; } else { cout << "恭喜您猜对了" << endl; //猜对 退出游戏 break; } } system("pause"); return 0; }
2. do…while循环语句
-
满足循环条件,执行循环语句
-
do { 循环语句 }while(循环条件)
与while循环相比,do…while语句无论如何都会先执行一次循环,再判断循环条件
do…while循环练习案例:水仙花数
-
案例描述:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
-
#include<iostream> using namespace std; int main() { //1.先答应所有三位数字 int num = 100; do { //2.从所有数字中找到水仙花数 int a = 0;//个位 int b = 0;//十位 int c = 0;//百位 a = num % 10;//获取个位 b = num / 10 % 10;//获取十位 c = num / 100;//获取百位 if (a * a * a + b * b * b + c * c * c == num)//如果是水仙花数,才打印 { cout << num << endl; } num++; }while (num < 1000); system("pause"); return 0; }
3. for循环语句
-
满足循环条件,执行循环语句
-
for(起始表达式;条件表达式;末尾循环体) { 循环语句 }
for循环首先执行起始表达式,然后对条件表达式进行判断,若满足条件表达式,则执行循环语句,然后进行末尾循环体,否则直接执行末尾循环体
起始表达式、条件表达式、末位循环体均可省略,但三种情况的三个”;“均不可省略
没有条件表达式,循环会缺少退出条件,陷入死循环
与while和do…while相比,for循环结构更清晰,比较常用
for循环练习案例:敲桌子
-
案例描述:从1开始数到数字100, 如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,我们打印敲桌子,其余数字直接打印输出。
-
#include<iostream> using namespace std; int main() { //1.先输出1~100数字 for (int i = 1; i <= 100; i++) { //2.从100个数字中找到特殊数字,打印”敲桌子“ //如果是7的背书、个位有7、或者十位有7,打印敲桌子 if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) { cout << "敲桌子" << endl; } else { cout << i << endl; } } system("pause"); return 0; }
4. 嵌套循环
- 在循环体里再加循环
嵌套循环练习案例:乘法口诀表
-
案例描述:利用嵌套循环,实现九九乘法表
-
#include<iostream> using namespace std; int main() { 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; }