C++蓝桥杯基础篇(三)

片头

哈喽!小伙伴们,大家好~,今天我们来学习蓝桥杯基础篇(三),继续练习相关习题,准备好了吗?我们开始啦~


一、while循环

   可以简单理解为循环版的if语句。if语句是判断1次,如果条件成立,则执行后面的语句;while是每次判断,如果成立,则执行循环体中的语句,否则停止。

int main() {
	int i = 0;
	while (i < 10) {
		cout << i << endl;
		i++;
	}
	return 0;
}
题目1: 求1~100中所有数的立方和
int main() {
	int sum = 0 , sum2 = 0;
	int i = 1;
	while (i <= 100) {
		sum1 += i * i * i;
		i++;
	}
	cout << "1~100中所有数的立方和为: " << sum << endl;

	return 0;
}
题目2:求斐波那契数列的第n项。f(1)=1,f(2)=1,f(3)=2,f(4)=3,f(n)=f(n-1)+f(n-2)

首先,我们来观察斐波那契数列,规律是:后一个数=前2个数相加

f(1)=1,f(2)=1

f(3)=f(1)+f(2)

f(4)=f(2)+f(3)

f(5)=f(3)+f(4)

.....

f(n)=f(n-2)+f(n-1)

为此,我们可以列出一张表,表示 i,a,b的关系

i a b
0 f(1) f(2)
1 f(2) f(3)
2 f(3) f(4)
3 f(4) f(5)
4 f(5) f(6)
5 f(6) f(7)
... ... ...
n-3 f(n-2) f(n-1)
n-2 f(n-1) f(n)
n-1 f(n) f(n+1)

通过这张表,我们可以看到,i的范围在0~n-2,采用while循环

//求斐波拉契数列的第n项,
//f(1)=1,f(2)=1,f(3)=2,
//f(4)=3,f(5)=5,f(6)=8,f(7)=13,f(8)=21,f(9)=34,f(10)=55

//f(1)=1,f(2)=1
//f(3)=f(1)+f(2),
//f(4)=f(2)+f(3),
//f(5)=f(3)+f(4),
//...
//f(n)=f(n-2)+f(n-1)

//  i    a       b
//  0   f(1)    f(2)
//  1   f(2)    f(3)
//  2   f(3)    f(4)
//  3   f(4)    f(5)
//  4   f(5)    f(6)
//  5   f(6)    f(7)
//  6   f(7)    f(8)
//...
// n-3  f(n-2)  f(n-1)
// n-2  f(n-1)  f(n)
// n-1  f(n)    f(n+1)

//当i=n-1时,应该退出循环
//i的取值范围在0~n-2

int main() {
	int i = 0;
	int n;
	cin >> n;

	int a = 1;
	int b = 1;

	while (i < n - 1) {
		int c = a + b;
		a = b;
		b = c;
		i++;
	}

	cout << a << endl;

	return 0;
}

死循环:循环永久执行,无法结束。我们要避免写出死循环。

//死循环: 循环永久执行,无法结束。我们要避免写出死循环
int main4() {
	int x = 1;

	while (x == 1) puts("!");

	return 0;
}

二、do-while循环

do-while循环不常用。do-while语句与while语句非常相似。唯一的区别:do-while语句限制性循环体后检查条件。不管条件的值如何,我们都要至少执行1次循环。

int main() {
	int x = 1;
	while (x < 1) {
		cout << "x!" << endl;
		x++;
	}

	int y = 1;
	do {
		cout << "y!" << endl;
	} while (y < 1);

	return 0;
}

输出结果:

y!

再来举一个例子:

int main() {
	int r = 0;
	int j = 1;
	w
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值