本节内容:循环结构、跳转语句。
#include<iostream>
using namespace std;
//#include<ctime> time系统时间函数需要的头文件,但这是vs2022不用加。
//循环结构
int main()
{
//while循环,猜数字
/*
系统随机生成一个1到100之间的数字,
玩家进行猜测,如果猜错,提示玩家数字过大或过小,
如果猜对恭喜玩家胜利,并且退出游戏。
*/
srand((unsigned int)time(NULL)); //添加随机种子,防止每次生成的随机数相同,这里是用当前系统时间生成随机数。
int num = (rand() % 100) + 1; //生成一个0-99的数,由于加了1,就是1-100;
int a = 0;
cout << "请输入您要猜的数字:" << endl;
cin >> a;
while (num != a)
{
if (a > num)
{
cout << "您猜的太大了!" << endl;
}
else
{
cout << "您猜的太小了!" << endl;
}
cout << "请再次输入您要猜的数字:" << endl;
cin >> a;
}
cout << "恭喜你,猜对了!!!" << endl;
//以上程序也可以设置while(1)让程序一直执行,再猜对了时用break退出循环。
//do...while语句,先执行一次语句,再开始判断条件
//求水仙花数
/*
水仙花数是指一个 3 位数,
它的每个位上的数字的 3次幂之和等于它本身
例如:1^3 + 5^3+ 3^3 = 153
请利用do...while语句,求出所有3位数中的水仙花数
*/
int num = 100;
int a = 0;
int b = 0;
int c = 0;
do
{
a = num / 100; //获取百位
b = (num / 10);
b = b % 10; //获取十位
c = num % 10; //获取个位
if (a*a*a + b*b*b + c*c*c == num)
{
cout << num << endl;
}
num++;
} while (num <= 999);
//for循环
//案例:敲桌子
/*
案例描述:从1开始数到数字100, 如果数字个位含有7,
或者数字十位含有7,或者该数字是7的倍数,
我们打印敲桌子,其余数字直接打印输出。
*/
int i = 1;
for (i = 1; i < 101; i++)
{
if (i % 10 == 7 || i / 10 == 7 || i % 7 == 0)
{
cout << "敲桌子!" << endl;
}
else
{
cout << i << endl;
}
}
//嵌套循环
//案例:输出九九乘法表
int i = 0;
int j = 0;
for (i = 1; i < 10; i++) //外层循环控制行数
{
for (j = 1; j <= i; j++) //内层循环控制列数
{
cout << j << "x" << i << "=" << i * j << "\t";
}
cout << endl;
}
//跳转语句
//break语句
/*
break使用的时机:
* 出现在switch条件语句中,作用是终止case并跳出switch
* 出现在循环语句中,作用是跳出当前的循环语句
* 出现在嵌套循环中,跳出最近的内层循环语句
*/
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (j == 5)
{
break; //退出内层循环
}
cout << "* ";
}
cout << endl;
} //结果是输出10行5列
//continue语句,跳过本次循环中余下尚未执行的语句,
//继续执行下一次循环
for (int i = 0; i <= 100; i++)
{
//如果是奇数就输出,偶数不输出
if (i % 2 == 0)
{
continue;
}
cout << i << endl;
}
//goto语句,可以无条件跳转语句
/*
语法:goto 标记;
解释:如果标记的名称存在,
执行到goto语句时,
会跳转到标记的位置
*/
cout << "************1***********" << endl;
cout << "************2***********" << endl;
goto flag;
cout << "************3***********" << endl;
cout << "************4***********" << endl;
cout << "************5***********" << endl;
flag:
cout << "************6***********" << endl;
cout << "************7***********" << endl;
system("pause");
return 0;
}
一节一篇代码,简单粗暴,适合快速学习/复习C++基础知识。