l 在程序中C++有5种方法执行重复操作:
1. for: 循环前检查条件
2. while: 循环前检查条件
3. do/while循环后检查条件
4. 递归
5. 无条件分支: 局部(goto)和非局部(setjmp和longjmp)
for 循环
l 通用形式
for (<initialize>; <exit test>; <increment>)
<stmt>
Initialize: 初始化
exit test: 退出条件测试
increment: 循环条件值增加
stmt: 循环体中的语句
l For循环把初始化、退条条件测试和循环条件值增加集中放在一起。
l 循环头部的三个部分都是可选的,并都可以包含任意的表达式。
l 注意:可以在<initialize>部分声明变量 (与C不同之处)。
l 使用示例
for ( ; ;) ; /* 永久循环 */
/* 把stdin复制到 stdout */
for (int c, (c = getchar()) != EOF; putchar (c));
/* 求 n的阶乘 */
for (int i = n; n > 2; n--) i *= (n – 1);
/* 遍历链表*/
for (List *p = head; p != 0; p = p->next) action (p);
while 循环
l 通用形式
while (<condition>)
<stmt>
<condition>: 循环条件
<stmt>: 循环体中的语句
l 当检查到循环条件为非0时重复执行循环体中的语句。
l 实际上,for 循环可以用while循环来表达:
<initialize>
while (<exit test>)
{
<loop body>
<increment>
}
l 使用示例:
while (1) ; /* 永久循环 */
int c;
while ( (c = getchar ()) != EOF)
putchar();
/* 求 n的阶乘 */
i = n;
while (n >=0 )
i *= --n;
/* 遍历链表*/
p = head;
while (p != 0)
{
action (p);
p = p->next;
}
do while 循环
l 通用形式:
do <stmt> while ( <condition> );
l do while没有for 和while 常见。
l 注意:检查退出条件是在循环体的后面,所以循环体至少要被执行一次。
int main( void )
{
const int MAX_LEN = 80;
char name_str [MAX_LEN];
do {
cout << “ enter name (exit to quit”);
cin.getline (name_str,MAX_LEN);
process (name_str);
} while (strcmp (name_str,”exit”)!=0);
return 0;
}
break 和 continue 语句
l 提供在循环体中的类似goto 的控制形式
#include <stream.h>
int main (void)
{
/* 找出第一个负数*/
int number;
while (cin >> number)
if (number < 0)
break;
cout << “number = “ << number << “/n”;
//…
/* 从控制台读取数据,将其中的偶数累加起来*/
int sum, total;
for (sum = total = 0; cin >> number; total++)
{
If (number & 1)
continue;
sum += number;
}
cout << “sum = “ << sum << “, total = “ << total << “/n”;
return 0;
}