C++编程学习(第14天)

循环结构

循环结构主要由while语句、do...while语句和for语句构成。

while语句

while语句的一般形式为 while(表达式)语句

当指定的表达式为真(表达式为非0)时,执行while语句中的内嵌语句,即循环体。特点是先判断表达式,后执行语句,while循环成为当型循环。

使用while语句求1-100的和。

#include <iostream>
using namespace std;

int main()
{
	int i = 1, sum = 0;
	while (i<=100)
	{
		sum = sum + i;
		i++;
	}
	cout << "sum = " <<sum<< endl;
}

//结果为:sum = 5050

需要注意的是,循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句形式出现。如果不用花括号,则while语句的范围只到while后面的第一个分号处。

在循环体中应有使循环体趋向于结束的语句,没有结束语句,循环将永不结束。

do...while语句

do...while语句的特点是先执行循环体,然后判断循环条件是否成立,一般形式为 do 语句 while(表达式);

其先执行一次指定的语句,即循环体,然后判别表达式,当表达式的值为真(非0)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。

使用do...while语句求1-100的和。

#include <iostream>
using namespace std;

int main()
{
	int i = 1, sum = 0;
	do
	{
		sum = sum + i;
		i = i + 1;
	} while (i <= 100);
	cout << "sum = " << sum << endl;
}

//结果为:sum = 5050
for语句

C++中的for语句使用最为广泛和灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。

for语句的一般形式为 for(表达式1;表达式2;表达式3)语句

执行过程为

1、先求解表达式1

2、求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句,然后求解表达式3,循环继续,求解表达式2的值。

3、求解表达式2,若其值为假(值为0),则结束循环,执行for语句下面的一个语句。

for语句最容易理解的格式为 for(循环变量赋初值;循环条件;循环变量增值)语句

其中的语句就是循环体,可以是一个简单的语句,也可以是一个用花括号抱起来的复合语句。

需要注意的是

1、for语句的一般格式中的表达式1可以省略,此时应在for语句之前给循环变量赋初值,省略表达式1时,其后的分号不能省略。

2、如果表达式2省略,即不判断循环条件,循环无终止的执行下去,也就是认为表达式2始终为真。

3、表达式3也可以省略,但此时应另外设法保证循环能正常结束。

4、可以省略表达式1和表达式3,只保留表达式2,即只给循环条件。

5、表达式一般是关系表达式(如i<=100)或逻辑表达式(如a<b && x<y),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。

使用for语句求1-100的和。

#include <iostream>
using namespace std;

int main()
{
	int sum = 0;
	for (int i = 1; i <= 100; i++) sum = sum + i;
	cout << "sum = " << sum << endl;
}

//结果为:sum = 5050
循环的嵌套

一个循环体内又包含另一个完整的循环结构,成为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环

while循环、do...while循环和for循环可以互相嵌套

提前结束循环

有时需要在某种条件下使循环提早结束,这时可以用break语句和continue语句。

1、用break语句提前结束循环过程

一般格式为 bereak;

break语句用于循环体内,其作用是使流程从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。

需要注意的是,break语句只能用于循环语句和switch语句内,不能单独使用或用于其它语句中。

2、用continue语句提前结束本次循环

一般格式为 continue;

其作用为结束本次循环,即跳出循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

区别:continue语句只结束本次循环,而不是终止整个循环的执行,而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

实例

1、用公式求圆周率Π的近似值:Π/4=1-1/3+1/5-1/7+...,直到最后一项的绝对值小于10的负七次方为止。

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main()
{
	int s = 1;
	double n = 1, t = 1, pi = 0;
	while (fabs(t) > 1e-7)
	{
		pi = pi + t;
		n = n + 2;
		s = -s;
		t = s / n;
	}
	pi = pi * 4;
	cout << "pi = " << setiosflags(ios::fixed) << setprecision(8) << pi << endl;
	return 0;
}

//结果为: pi = 3.14159245

2、找出100-200之间的全部素数。

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main()
{
	int n = 101, m, i, j=0;
	bool b;
	while (n<=200)
	{
		m = sqrt(n);
		b = true;
		for (i = 2; i <= m; i++)
			if (n % i == 0)
			{
				b = false;
				break;
			} 
		if (b)
		{
			cout <<setw(5)<< n;
			j++;
			if (j % 3 == 0)
				cout << '!' << endl;
		}
		n += 2;
	}
	return 0;
}

结果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

武当豆豆

为国家GDP快速增长做贡献

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

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

打赏作者

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

抵扣说明:

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

余额充值