C++循环结构

一、循环结构

1、while 循环

1.1 语法

while(循环条件){//符合条件执行循环语句;否则退出循环
循环语句//重复执行
}
执行顺序:先判断循环条件,再执行循环语句
在这里插入图片描述

1.2 练习题

1.输出66遍 “Hello World”

	int a = 1;
	while (a <= 66)
	{
		cout << "第" << a << "遍: Hello World" << endl;
		a++;//a++ 是非常重要的,如果去掉的话,a 的值永远保持 1,第二行行中的表达式将永远为 true,则循环就变成了“死循环”,必不可少的。
	}

2.水仙花数
求出100~999中的水仙花数(while)
分析:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
例如:1^3 + 5^3+ 3^3 = 153

		int num = 100;
		while (num < 1000) {
		int gw = num % 10;//个位数,对num进行余10,结果为个位数
		int sw = num / 10 % 10;//十位数,先将num除以10得到十位和百位,再余10得到十位数
		int bw = num / 100;//百位数,除以100 得出百位数
		if (gw * gw * gw + sw * sw * sw + bw * bw * bw == num)
		{
			cout << num << endl;
		}
		num++;
	}

1.3 代码找错

	//第一个
	int i = 1;//1 
	while (i <= 66);//2
	{
		cout << "Hello World" << endl;//3
		i++;//4 
	}
	
	//第二个
	int i = 1;//1 
	while (i <= 66) //2
	{
		cout << "Hello World" << endl;//3
	}

2、do-while 循环

2.1 语法

do{
循环语句
} while(循环条件);

执行顺序:先执行循环语句,再判断循环条件

2.2 练习题

1.输出66遍 “Hello World”

int a = 1;
	do
	{
		cout << "Hello World" << endl;
		a++;
	} while (a <= 66);

2.水仙花数
求出100~999中的水仙花数(do-while)
分析:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
例如:1^3 + 5^3+ 3^3 = 153

	int num = 100;
	do
	{
		int gw = num % 10;//个位数
		int sw = num / 10 % 10;//十位数
		int bw = num / 100;//百位数
		if (gw*gw*gw + sw*sw*sw + bw*bw*bw == num)
		{
			cout << num << endl;
		}
		num++;

	} while (num < 1000);

3、for 循环

3.1 语法

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

3.2 练习题

1.输出66遍 “Hello World”

	for (int i = 1; i <= 66; i++)
	{
		cout << "Hello World" << endl;
	}

2.水仙花数
求出100~999中的水仙花数(for)

	for (int i = 100; i < 1000; i++)
	{
		int gw = i % 10;//个位数
		int sw = i / 10 % 10;//十位数
		int bw = i / 100;//百位数
		if (gw * gw * gw + sw * sw * sw + bw * bw * bw == i)
		{
			cout << i << endl;
		}
	}

4、三种循环执行顺序

在这里插入图片描述while 和 for 相同,先进行循环条件判断,后执行循语句
do-while 是先执行循语句,后判断循环条件

二、循环嵌套

在二重循环中,外层循环每执行一次,内层循环要执行一圈。

1.输出正方形

在这里插入图片描述

	for (int i = 1; i <= 6; i++)
	{
		for (int j = 1; j <= 6; j++)
		{
			cout << "* ";
		}
		cout << endl;
	}

当外层 i = 1 时,此时, j 从 1 开始,循环 6 次。
接下来返回外层循环 i = 2 ,准备打印下一行,依此类推,直到循环条件不成立

2.输出乘法口诀

一开始不知道怎么输出,可以先将乘法口诀表的九行九列输出
在这里插入图片描述
然后只需要更改输出那一行代码:cout << j << “" << i << “=”<<ij<<” ";
被除数第几列,除数是第几行,商i*j
在这里插入图片描述

	for (int i = 1; i <= 9; i++)
	{
		for (int j = 1; j <= i; j++) 
		{
			 //cout << "*";//先构建一个大框架
			cout   << j << "*" << i << "="<<i*j<<" ";//输出乘法口诀表
		}
		cout << endl;
	}

3.输出平行四边形

在这里插入图片描述

	for (int i = 1; i <=6; i++)
	{
		for (int j = 1; j <=6-i ; j++)
		{
			cout << " ";
		}
		for (int j = 1; j <=6 ; j++)
		{
			cout << "*";
		}
		cout << endl;
	}

4.输出数字菱形

在这里插入图片描述

	int b = 7;
	for (int i = 1; i <= b; i++)
	{
		for (int j = 1; j <=b-i; j++)
		{
			cout << " ";//输出的空格
		}
		for (int j = 1; j <= i; j++)
		{
			cout << j;//正着输出的数
		}
		for (int j = i-1; j >= 1; j--)
		{
			cout << j;//倒着输出的数
		}
		cout << endl;
	}
	for (int i = 1; i <= b; i++)
	{
		for (int j = 1; j <= i-1; j++)
		{
			cout << " ";
		}
		for (int j = 1; j <= b+1-i; j++)
		{
			cout << j;
		}
		for (int j = b-i; j >= 1; j--)
		{
			cout << j;
		}
		cout << endl;
	}

5.输出空心菱形

	int b = 7;
	for (int i = 1; i <= b; i++)
	{
		for (int j = 1; j <= b - i; j++)
		{
			cout << " ";//输出的空格
		}
		for (int j = 1; j <= i; j++)
		{
			if (j == 1) {
				cout << j;
			}
			else {
				cout << " ";
			}
		}
		for (int j = i - 1; j >= 1; j--)
		{
			if (j == 1) {
				cout << j;
			}
			else {
				cout << " ";
			}
		}
		cout << endl;
	}
	for (int i = 1; i <= b; i++)
	{
		for (int j = 1; j <= i - 1; j++)
		{
			cout << " ";
		}
		for (int j = 1; j <= b + 1 - i; j++)
		{
			if (j == 1) {
				cout << j;
			}
			else {
				cout << " ";
			}
			
		}
		for (int j = b - i; j >= 1; j--)
		{
			if (j == 1) {
				cout << j;
			}
			else {
				cout << " ";
			}
		}
		cout << endl;
	}

三、跳转语句

1.break语句

break :跳出循环,
break关键字在 switch 中,可以跳出 switch,在循环中只跳出1层循环。

1.1 在 switch 中

	int a = 0;
	cout << "请输入你要看的书(1-4):1 三国演义,2 红楼梦,3 西游记,4 水浒传" << endl;
	cin >> a;
	switch (a)
	{
	 case 1:
		 cout << "看三国演义" << endl;
		 break;
	 case 2:
		 cout << "看红楼梦" << endl;
		 break;
	 case 3:
		 cout << "看西游记" << endl;
		 break;
	 case 4:
		 cout << "看水浒传" << endl;
		 break;
	default:
		cout << "请输入正确的编号!" << endl;
		break;
	}

如下图:满足条件,break直接跳出switch
在这里插入图片描述

1.2 在循环中

	for (int i = 1; i <= 20; i++)
	{
		for (int j = 1; j <= 20; j++)
		{
			if (j == 10)
			{
				break;
			}
			else {
				cout << j << " ";
			}
		}
		cout << endl;
	}

break在循环中只跳出1层循环。
如下图所示,第二层循环小于等于20,等于10的时候跳出,只是跳出本层循环,外层循环接着执行。
在这里插入图片描述

2.continue语句

continue,跳出本次循环,继续下一次循环。

	for (int i = 1; i <= 20; i++)
	{
		for (int j = 1; j <= 20; j++)
		{
			if (j % 2 == 0)
			{
				continue;
			}
			else {
				cout << j << " ";
			}
		}
		cout << endl;
	}

continue不会使循环终止,而是将满足条件的跳过,继续向下执行。图中条件是余2跳出,右边控制台部分没有显示余2为零的数。
在这里插入图片描述

3. goto语句

goto:无条件转移语句
语法: goto 语句标号;(命名规则和标识符的命名规则与变量名称相同)
执行goto语句后,程序就会跳转到语句标号处,并接着执行其后的语句。

	cout << "A" << endl;
	cout << "B" << endl;
	goto FLAG;
	cout << "C" << endl;
	cout << "D" << endl;
	FLAG:
	cout << "E" << endl;

执行结果:
在这里插入图片描述

  • 14
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1024节

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值