5.4.2 传统的for语句

练习5.15

(a)for语句头中定义的ix变量只在for循环体内课件。for循环结束后ix就不可用了。可以通过将ix定义在循环外来修改代码:

int main() {
	int ix = 0; //定义在循环外
	for (/*空语句*/; ix != sz; ++ix) {
		/*...*/
  }
	if (ix != sz)
}

(b)没有init-statement语句,即使为空,也不能省略分号。

int main() {
	int ix;
	for ( ;ix != sz; ++ix) {/*...*/ }
}

©如果sz=0,第一次求值结果就是false,则statement一次也不会执行,相反如果sz=1,那么每次执行完statement之后,sz和ix都加一,判断总是true,无法退出循环,必须在statement内部添加跳出循环的语句。

int main() {
	for (int ix = 0; ix != sz; ++ix, ++sz) {/*...*/ }
}

练习5.16

更习惯用while,循环的顺序比较清晰。
而for语句,有跳动,但更加简洁。

在这里插入图片描述
练习5.17

int main(){
	vector<int> i1 = { 0,1,1,2,3,5,8,10};
	vector<int> i2 = { 0,1,1,2,3,5,8 };
	decltype(i1.size()) index = 0;
	int a = 0;


	if (i1.size() <= i2.size()) //如果i1的元素数量小于或等于i2的元素数量
	{ 
		while (index != i1.size())
		{
			if (i1[index] == i2[index])
			{
				
				index++;
			}
			else 
				break; //跳出循环,保留最后一位相同元素的下标index
		}
		if (index == i1.size()) //如果index等于元素数量,说明前面已经全部循环完并相等
			a = 1;
		else
			a = 0;
		
		cout << ((a == 1) ? "i1 是i2的前缀或等于i2" : "i1 不是i2的前缀");;
	}
	

	if (i1.size() > i2.size()) //如果i1的元素数量大于i2的元素数量
	{
		while (index != i2.size())
		{
			if (i1[index] == i2[index])
			{

				index++;
			}
			else
				break; //跳出循环,保留最后一位相同元素的下标index
		}
		if (index == i2.size()) //如果index等于元素数量,说明前面已经全部循环完并相等
			a = 1;
		else
			a = 0;
	
		cout << ((a==1)? "i2 是i1的前缀":"i2 不是i1的前缀");
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值