关于P31~P41练习-循环结构
1、while循环语句
语法:while(循环条件){循环语句}
//while循环
//在屏幕中打印0~9这10个数
int num = 0;
while(num < 10)
{
cout << num << endl;
num++;
}
2、while案例:猜数字
//while循环案例
//系统随机生成一个1~100之间的数字,玩家进行猜测。
//如果猜错,提示玩家数字过大或者过小;
//如果猜对,恭喜玩家胜利并且退出游戏
//加随机数种子,利用当前系统时间生成随机数,防止每次随机数都一样
srand((unsigned int)time(NULL));//开头加#include <ctime> //time系统头文件包含
//1、系统生成随机数
int num = rand() % 100 + 1;//生成0+1~99+1之间的随机数。伪随机数每次都是42,加随机数种子解决
//cout << num << endl;
//2、玩家进行猜测
int val = 0;//玩家输入的值
while(1)
{
cin >> val;
//3、判断玩家猜测
//猜错 提示猜的结果 过大或者过小 重新返回第2步
if (val > num)
{
cout << "你输入的值过大" << endl;
}
else if (val < num)
{
cout << "你输入的值过小" << endl;
}
else
{
//猜对 退出游戏
cout << "恭喜您,猜对了" << endl;
break;//在循环中,可以利用该关键字退出循环
}
}
注意:
1、while的条件用的1,一直循环,用break退出;
2、生成随机数是伪随机数,需要加入随机数种子
//加随机数种子,利用当前系统时间生成随机数,防止每次随机数都一样
srand((unsigned int)time(NULL));//开头加#include <ctime> //time系统头文件包含
//1、系统生成随机数
int num = rand() % 100 + 1;//生成0+1~99+1之间的随机数。
3、用time需要加头文件包含#include< stime>
#include <ctime>
3、do while循环语句
语法:do{循环语句} while(循环条件);
//do while循环语句
//在屏幕中输出0~9这10个数字
int num = 0;
do
{
cout << num << endl;
num ++;
}
while (num < 10);
注意:do while和while区别在于,do while会先执行一次循环语句
4、do while案例:水仙花数
//案例:水仙花数
//水仙花数是一个3位数,它的每个位上的数字的3次幂之和等于它本身
//例如:1^3+5^3+3^3=153
//利用do…while语句,求出所有3位数中的水仙花数
int ge = 0;
int shi = 0;
int bai = 0;
int num = 100;
//1、将所有三位数进行输出
//cout << num << endl;
do
{
//2、在三位数中找到水仙花数
//获取个位,十位,百位
bai = num / 100;
shi = num / 10 % 10;
ge = num % 10;
if (num == bai*bai*bai + shi*shi*shi + ge*ge*ge)//是水仙花数打印
{
cout << num << endl;
}
num++;
}
while (num < 1000);
5、for循环语句
语法:for(起始表达语句;条件表达式;末尾循环体){循环语句}
‘
//for循环语句
//从数字0打印到数字9
for (int a = 0 ; a < 10 ; a++)
{
cout << a << endl;
}
6、案例:敲桌子
//案例:敲桌子
//从1开始到数字100,
//如果数字个位含有7,或者数字十位含有7,或者该数字是7的倍数,我们打印敲桌子;
//其余数字直接打印输出。
//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;
}
}
7、嵌套循环案例:打印星图
//嵌套循环
//案例:打印10*10的星图
//外层执行一次,内层执行一周
//外层循环
for (int i = 0;i< 10;i++)
{
//内层循环
for (int j = 0;j < 10;j++)
{
cout << "* " ;
}
cout << endl;
}
显示结果:
8、案例:乘法口诀表
//案例:九九乘法口诀表
//分析:列数*行数=当前结果
//列数<=当前行数
for (int i = 1;i <= 9;i++)//行数
{
//cout << i << endl;
for (int j = 1;j <= i;j++)//列数
{
cout << j<<"*"<<i<<"="<< j*i<<" ";
}
cout << endl;
}
注意:千万想好需要打印出来的是什么
显示结果:
9、跳转语句-break
break使用的时机:
1、出现在swith语句中,终止case并跳出switch;
2、出现在循环语句中,跳出当前循环语句;
3、出现在嵌套循环中,跳出最近的内层循环语句。
//1、出现在swith语句中,终止case并跳出switch;
cout << "请选择副本难度" << endl;
cout << "1、普通" << endl;
cout << "2、中等" << endl;
cout << "3、困难" << endl;
int select = 0;//创建选择结果变量
cin >> select;//等待用户输入
switch (select)
{
case 1:
cout << "您选择的副本难度为:普通" << endl;
break;//退出switch语句
case 2:
cout << "您选择的副本难度为:中等" << endl;
break;//退出switch语句
case 3:
cout << "您选择的副本难度为:困难" << endl;
break;//退出switch语句
default:
break;
}
//2、出现在循环语句中,跳出当前循环语句;
for (int i = 0;i < 10;i++)
{
//如果i等于5,退出循环,不再打印
if (i == 5)
{
break;
}
cout << i << endl;
}
//3、出现在嵌套循环中,跳出最近的内层循环语句。
//10行5列星星
for (int i = 0;i < 10;i++)
{
for (int j = 0;j < 10;j++)
{
if (j == 5)
{
break;//退出内层循环,10行5列星星
}
cout << "* ";
}
cout << endl;
}
10、跳转语句-continue
作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环。
//continue,执行到本行,不再执行后面代码,执行下一次循环
for (int i = 1;i <= 100;i++)
{
//奇数输出,偶数不输出
if (i % 2 == 0)
{
continue; //可以筛选条件,执行到此不再向下,继续下一循环
//break; //退出循环,输出1
}
cout << i << endl;
}
注意:continue不会使整个循环结束,而break会跳出循环
11、跳转语句-goto
作用:无条件跳转语句(过于强大,不推荐使用)
语法:goto 标记;
解释:如果标记的名称存在,执行到goto语句时,会跳转到标记位置
//goto语句
cout << 1111 << endl;
cout << 2222 << endl;
goto FLAG;
cout << 3333 << endl;
cout << 4444 << endl;
FLAG:
cout << 5555 << endl;
cout << 6666 << endl;
显示结果:
1111
2222
5555
6666