目录
- 4 循环语句
- 4.1 while循环
- 4.2 do...while
- 4.3 for循环
- 4.4 循环控制
- 4.5 循环嵌套
4 循环语句
- 循环控制:控制程序重复执行,当不符合循环条件时停止循环。
- 循环控制种类:while循环、do…while循环和for循环语句。
4.1 while循环
- while循环: 当while表达式为真时,开始循环执行语句,当表达式的值为假时退出循环,执行循环外的下一条语句。循环每次都是执行完语句后回到表达式处重新开始判断,重新计算表达式的值,一旦表达式的值为假时就退出循环,为真时就继续执行语句。
/*
while循环形式:
while(表达式)
{语句}*/
#include <iostream>
using namespace std;int main(int argc, const char * argv[]) {// 使用while循环计算1~100的累加int i=1,sum=0; // 初始化while(i<101) //表达式不可以为空.表达式可以用非0代表逻辑值真true,用0代表逻辑值false。{sum += i;if (i%20 == 0){cout<<i<< " " <<sum<<endl;}++i; //循环体中必须有改变条件表达式值的语句,否则为死循环}cout<< "hs " <<endl;return 0;
}/* 运行结果20 21040 82060 183080 3240100 5050hs
Program ended with exit code: 0
*//*
while(1) // 死循环
{...}while(0) // 不会进行循环的语句
{...}*/
4.2 do…while
- do…while循环语句一般形式如下:do(语句)while(表达式)。
- do…while循环的执行顺序是执行循环体的内容,然后判断表达式的值,如果表达式的值为真就跳到循环体处继续执行循环体,循环一直到表达式的值为假,表达式的值为假时跳出循环,执行下一条语句。do…while循环和while循环实现累加的循环体语句相同,只是执行循环体的先后顺序不同。
/*
do(语句)while(表达式)
*/#include<iostream>
using namespace std;int main(int argc, const char * argv[]) {// 使用do{}while();循环计算1~100的累加int i=1,sum=0;do // 循环先执行循环体,如果循环条件不成立,循环体已经执行一次了,使用时注意变量变化。{sum += i;if (i%20 == 0){cout<<i<< " " <<sum<<endl;}++i; // 循环体中必须有改变条件表达式值的语句,否则将成为死循环。}while(i<101); // 表达式不可以为空, while循环语句后要有分号“;”cout<<i<< " " <<sum<<endl;cout<< "hs " <<endl;return 0;
}/* 运行结果20 21040 82060 183080 3240100 5050101 5050hs
Program ended with exit code: 0
*/
4.3 for循环
- for循环格式:for(表达式1;表达式2;表达式3){语句}。
- 表达式1:该表达式通常是一个赋值表达式,负责设置循环的起始值,也就是给控制循环的变量赋初值。
- 表达式2:该表达式通常是一个关系表达式,用控制循环的变量和循环变量允许的范围值进行比较。
- 表达式3:该表达式通常是一个赋值表达式,对控制循环的变量进行增大或减小。
5.for循环语句的执行过程:(1)先求解表达式1。
(2)求解表达式2,若其值为真,则执行for语句中指定的内嵌语
句,然后执行(3)。若表达式2值为假,则结束循环,转到(5)。
(3)求解表达式3。
(4)返回(2)继续执行。
(5)循环结束,执行for语句下面的一个语句。
/*
for(表达式1;表达式2;表达式3)
{语句}
*/#include <iostream>
using namespace std;int main(int argc, const char * argv[]) {// 使用do{}while();循环计算1~100的累加int i=0,sum=0;for(i=0; i<101; ++i) {sum += i; // 当i小于101时,一直执行sum += i; 然后i自增。}cout<<i<< " " <<sum<<endl;cout<< "hs " <<endl;return 0;
}/* 运行结果
101 5050
hs
Program ended with exit code: 0
*/
4.4 循环控制
- 循环控制: 包含两方面的内容,一方面是控制循环变量的变化方式,一方面是控制循环的跳转。
- break:中断循环。
/*
break:中断循环
*/
#include <iostream>
using namespace std;int main(int argc, const char * argv[]) {// 循环计算1~100的累加,sum>90时跳出循环。int i=0,sum=0;for(i=0; i<101; ++i){cout<<i<< " " <<sum<<endl;if (sum>90)break; // 如果遇到循环嵌套的情况,break语句将只会使程序流程跳出包含它的最内层的循环结构,只跳出一层循环。sum += i; // 当i小于101时,一直执行sum += i; 然后i自增。}cout<<i<< " " <<sum<<endl;cout<< "hs " <<endl;return 0;
}/* 运行结果0 01 02 13 34 65 106 157 218 289 3610 4511 5512 6613 7814 9114 91hs
Program ended with exit code: 0
*/
- continue:跳出本次循环体的执行。continue不是立即跳出循环体,而是跳过本次循环结束前的语句,回到循环的条件测试部分,重新开始执行循环。
#include <iostream>
using namespace std;int main(int argc, const char * argv[]) {// 取输出0~10内的偶数int i=0;for(i=0; i<11; ++i){if (i%2 !=0)continue;cout<<i<<endl;}cout<< "hs " <<endl;return 0;
}/* 运行结果0246810hs
*/
4.5 循环嵌套
- 循环嵌套:循环有for、while、do…while 3种方式,这3种循环可以相互嵌套.
/*
打印乘法口诀表
*/
#include <iostream>
#include <iomanip>
using namespace std;int main(int argc, const char * argv[]) {// 取输出0~10内的偶数int i=1,j=1;for(i=1; i<10; ++i){for(j=1;j<=i;++j){cout<<setw(2)<<i<<"x"<<j<<"="<<setw(1)<<i*j;}cout<<endl;}cout<<setw(4)<< "hs " <<endl;return 0;
}/* 运行结果1x1=12x1=2 2x2=43x1=3 3x2=6 3x3=94x1=4 4x2=8 4x3=12 4x4=165x1=5 5x2=10 5x3=15 5x4=20 5x5=256x1=6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=367x1=7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=498x1=8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=649x1=9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81hsProgram ended with exit code: 0
*/
参考《C++从入门到精通》