第五章——循环和关系表达式

for循环

很多情况下都需要程序执行重复的任务

#include<iostream>
using namespace std;
int main()
{
	int i;
	for (i = 0; i < 5; i++)
	{
		cout << "C++ knows loop.\n";
	}
	cout << "C++ knows when to stop.\n";
	return 0;
}

 

 for循环的组成部分

for循环的组成部分完成下面这些步骤

1、设置初始值

2、执行测试,看看循环是否应当继续进行

3、执行循环操作

4、更新用于测试的值

初始化、测试和更新操作构成了控制部分,这些操作由括号括起。其中每部分都是一个表达式,彼此由分号隔开。控制部分后面的语句叫做循环体,只要测试表达式为true,它便被执行:

for(initialization;test-expression;update-expression)
    body

下面就是for循环设计的流程

 

 for语句看上去有些像函数调用,因为它使用一个后面跟一对括号的名称。然而,for是一个C++关键字,因此编译器不会将for视为一个函数。

递增运算符(++)和递减运算符(--)

这两个运算符将循环计数加1或减1。他们分别有两种版本,前缀版本位于操作数前面(如++x),后缀版本位于操作数后面(如--x)。两个版本对操作数的影响是一样的,但是影响的时间不同

#include<iostream>
using namespace std;
int main()
{
	int a = 20;
	int b = 20;
	cout << "a = " << a << " ,b = " << b << endl;
	cout << "a++ = " << a++ << " , ++b = " << ++b << endl;
	cout << "a = " << a << " ,b = " << b << endl;
	return 0;
}

 a++意味着使用a的当前值计算表达式,然后将a的值加1;而++b的意思是先将b的值加1,然后使用新的值来计算表达式(区别就在于”使用后修改“和”修改后使用“)

int x = 5;
int y = ++x;	//x is 6, y is 6

int z = 5;
int y = z++;	//y is 5, z is 6

对于内置类型,采用这两种格式不会有差别;但是对于用户定义的类型,则前缀格式的效率更高

组合赋值运算符

 

 逗号运算符允许将两个表达式放到C++句法只允许放一个表达式的地方。(C++规定,逗号表达式的值是第二部分的值)

关系表达式

同时注意不要混淆 等于运算符(==)和赋值运算符(=) 

基于范围的for循环(C++11)

C++11新增了一种基于范围的for循环,简化了一种常见的循环任务:对数组(或容器)的每个元素执行相同的操作,例如

double price[5] = { 2.99,10.5,6.78,5.52,8.69 };
for (double x : price)
cout << x << endl;

其中x最初表示数组的第一个元素,显式第一个元素后不断执行循环,而x依次表示数组的其他元素

如果需要修改数组的元素,则需要换一种循环变量的语法

double price[5] = { 2.99,10.5,6.78,5.52,8.69 };
for (double& x : price)
	x = x * 0.80;

符号&表示x是一个引用变量,就可以修改原始的值

while循环

while循环是没有初始化和更新部分的for循环,它只有测试条件和循环体

while(test-condition)
    body

 首先,程序计算圆括号内的测试条件(test-condition)表达式。如果该表达式为true,则执行循环体中的语句。执行完循环体后,程序返回测试条件,对它进行重新评估,如果该条件非0,则再次执行循环体,测试和执行将一直进行下去,直到测试条件为false为值。显然如果希望循环最终能够结束,循环体中的代码必须完成某种影响测试条件表达式的操作

#include<iostream>
const int ArSize = 20;
using namespace std;
int main()
{
	char name[ArSize];
	cout << "Your first name,please: ";
	cin >> name;
	cout << "Here is your name,verticalized and ASCIIized:\n";
	int i = 0;
	while (name[i] != '\0')
	{
		cout << name[i] << ": " << int(name[i]) << endl;
		i++;
	}
	return 0;
}


死循环是常见的循环问题之一。

在设计循环时,需要记住下面几条指导原则

  • 指定循环的终止条件
  • 在首次测试之前初始化条件
  • 在条件被再次测试之前更新条件

 do while循环

这种循环首先执行循环体,然后再判定测试表达式,决定是否应继续执行循环。如果条件为false,则循环终止;否则,进入新一轮的执行和测试

 这样的循环至少执行一次,因为其程序流必须经过循环体后才能到达测试条件。

do 
    body
while(test-expression);

猜你喜欢

转载自blog.csdn.net/yangSHU21/article/details/131619381