第四章 程序选择结构
4.2 循环结构
4.2.1 while 循环
//在屏幕中打印0-9这十个数字
int num = 0;
while (num < 10)
{
cout << num << endl;
num++;
}
while 循环练习案例:
案例练习:系统随机生成一个1到100的数字,玩家进行
猜测,如果猜错,提示玩家数字过大或者过小,如果猜对,
恭喜玩家胜利,并且退出游戏
//添加随机数的种子:利用当前系统时间生成随机数,防止每次随机数都一样
srand((unsigned int) time(NULL));//添加#include<ctime>头文件
//系统生成随机数
int num1;
num1=rand() % 100+1;//rand() % 100生成0~99的随机数
//玩家进行猜测
int num2 = 0;
cout << "请玩家猜大小:" << endl;
//判断玩家的猜测
//猜对,退出游戏
//猜错,提示过大或者过小
while (1)//num2 != num1
{
cin >> num2;
if (num2 > num1)
cout << "输入数字过大" << endl;
else if (num2 < num1)
cout << "输入数字过小" << endl;
else
{
cout << "胜利" << endl;//breask,可以利用该关键字来退出当前循环
break;
}
}
4.2.2 do…while 语句
//在屏幕中输出0~9这十个数字
int num3 = 0;
do
{
cout << num3 << endl;
num3++;
}
while (num3 < 10);
//while (num3)
//{
// cout << num3 << endl;
// num3++;
//}
//do...while循环语句练习实例
//水仙花数
//案例描述:水仙花数是指一个3位数,他的每个位上的数字的三次幂之和等于它本身
//例如:1^3+5^3+3^3=153
//请用do...while语句,求出所有3位数中的水仙花数
//思路
//1.将所有的三位数进行输出(100 ~999)
//2、在所有的三位数中找到水仙花数
//以153为例
/*获取个位 153%10=3 对数字取模于10,可以获取到个位
获取十位 153/10=15 15%10=5
获取百位 153/100=1*/
int num4 = 100;
do
{
//输出水仙花数
int a = 0, b = 0, c = 0;
a = num4 / 100;
b = num4 / 10% 10;
c = num4 % 10;
int aa, bb, cc;
aa = pow(a, 3);//次方需要调用cmath头文件:include<cmath>
bb = pow(b, 3);
cc = pow(c, 3);
if (num4 == ( aa+cc+bb))
//if(num4==(a*a*a+b*b*b+c*c*c))
{
cout << num4 << endl;
}
num4++;
} while (num4 < 1000);
4.2.3 for 循环语句
//for循环
//从数字0打印到数字9
int num5 = 0;
for (num5 = 0; num5 < 10; num5++)//可以做拆分
{
cout << num5 << endl;
}
//练习:敲桌子
//案例描述:从1开始数到100,如果个位数字含有七,或者
// 数字十位有7,或者该数字是七的倍数,我们打印敲桌子,
// 其余数字直接打印输出
cout << "开始游戏:" << endl;
for ( int num6 = 1; num6 <= 100; num6++)
{
int judge_one, judge_two, judge_three;
judge_one = num6 % 10;
judge_two = num6 / 10;
judge_three = num6 % 7;
if (judge_one == 7 || judge_two == 7 || judge_three == 0)
{
cout << "敲桌子" << endl;
}
else
{
cout << num6 << endl;
}
}
4.2.4 嵌套循环
//利用嵌套循环实现星图
//打印一行星星
for(int j=0;j<=9;j++)
{
for (int i = 0; i <= 9; i++)
{
cout << "* ";
}
cout << endl;
}
//练习案例:乘法口诀表
//案例描述:利用嵌套循环,实现九九乘法表
for (int i1 = 1; i1 <= 9; i1++)
{
for (int j1 = 1; j1 <= i1; j1++)
{
cout << j1 << "*" << i1 <<"="<< j1 * i1 <<" " ;
}
cout << endl;
}
4.3 跳转语句
4.3.1 break 语句
//使用时机
//1.出现在switch语句
cout << "请选择副本难度" << endl;
cout << "1.普通" << endl;
cout << "2.中等" << endl;
cout << "3.困难" << endl;
int select = 0;//创建选择结果的变量
cin >> select;//等待用户输入
switch (select)
{
case 1:
cout << "您选择的是普通难度 " << endl;
break;
case 2:
cout << "您选择的是中等难度 " << endl;
break;
case 3:
cout << "您选择的是困难难度 " << endl;
break;
default :
cout << "您选择的难度不在选择范围之内" << endl;
break;
}
//2.出现在循环的语句中
for (int i2 = 0; i2 < 10; i2++)
{
//如果i2等于5,退出循环,不再打印
if (i2 == 5)
{
break;//退出循环
}
cout << i2 << endl;
}
//3.出现在嵌套循环语句中
//利用嵌套循环实现星图
//打印一行星星
for (int j3 = 0; j3 <= 9; j3++)
{
for (int i3 = 0; i3 <= 9; i3++)
{
if (i3 > j3)
{
break;
}
cout << "* ";
}
cout << endl;
}
4.3.2 continue语句
int counter = 0;
for (int i4 = 0; i4 <= 100; i4++)
{
//如果是奇数,输出,否则不输出
if (i4 % 2 == 0)
{
continue;//可以筛选条件,执行到此就不会再向下执行,执行下一次循环
//break会退出循环,而continue不会
}
cout << i4 << endl;
counter++;
}
cout << "一共有" << counter << "个奇数" << endl;
4.3.3 goto语句
//作用:可以无条件跳转语句
//语法:goto标记
cout << "11111" << endl;
cout << "22222" << endl;
goto FLAG;
cout << "33333" << endl;
FLAG:
cout << "44444" << endl;
cout << "55555" << endl;