5.2 使用for语句实现循环结构
5.2.1 for语句的基本语法
1 可以应用于计数型的循环:循环变量赋初始值是一个赋值语句,用于给循环变量赋初始值;循环条件是一个关系表达式,决定何时终止循环;循环变量增量决定循环变量在完成一次循环后如何变化。三部分以”;“隔开。
2 for语句的一般形式中省略表达式1:省略表达式1时,可以将循环变量赋初值放在for之前。
3for语句的一般形式中省略表达式2:省略表达式2时,表达式不对循环进行控制,这时如果没有其它处理的话会形成死循环。
4 for语句的一般形式中省略表达式3:省略表达式3时,可以在循环体语句中加入修改循环变量的值的语句。
5 for语句的一般形式中表达式1和表达式3也可以是逗号表达式。
6 for语句的一般形式中表达式2的值只要非0,就执行循环体。
7for语句的一般形式中循环体语句可以省略。
5.2.2 for循环使用示例
5.3 使用while语句实现循环结构
5.3.1 while语句在使用是,总是先要判断一个条件,所以可以用while语句实现”当型“循环。
循环体为一体完整的if语句,若有多条一句时,必须使用复合语句的形式,使用while语句时,应注意以下几点:1 while后面的括号”()“不可省略。
2语句中的表达式可以时任意类型的表达式,若表达式的值为非0 时,则表式循环循环条件为”真“,执行循环体语句;若表达式的值为零,则表示循环条件为”假“不执行循环体语句,结束循环,执行循环结构的吓一条语句。如果表达式的值一开始就为”假“(0),则循环体一次也不执行,直接执行循环体后面的语句。
3循环体语句可以是符合语句,即当循环体由多条语句构成时,必须用一对大括号将这些语句括起来,形成复合语句。
4为使循环能正常结束,循环体中应对表达式进行修正,使表达式的值趋近于”假“避免出现死循环。
5.4 使用do——while语句实现循环结构
5.4.1 do——while语句的基本语法:do——while语句在使用时,首先执行循环语句,然后在判断条件。
使用do——while语句时,应注意以下几点:
1在do之后不能有语句结束符“;”,因为该语句还没有结束。
2在while之后必须有语句结束符“;”,表示do——while语句到此结束。
3在循环体中必须有改变循环条件的语句,否则会出现死循环。
5.5改变循环结构的跳转语句
5.5.1 break语句:break用在循环语句和switch语句中。
当break语句用于循环语句中时,可使程序终止循环而转去执行循环语句的后继语句。通常break语句总是与if语句一起配合使用,即满足条件使便跳出循环。
5.5.2 continue语句
continue语句的作用是跳过循环体中 continue后面的语句,继续下一次循环。 continue语句只能用于在循环语句中,常在if语句一起使用。
注意: continue语句与break语句有着本质的区别: continue语句只是结束本次循环,并不终止整个循环的执行;而break语句的作用是强制终止整个循环程序。
5.5.3 goto语句
说明:语句标号是一个有效的标识符,使用时在语句标号的后面跟一个“;”出现在函数中某语句的前面。程序执行到goto语句时,会控制跳转到该语句标号处,达到控制循环的目的。
注意:语句标号必须与goto语句处于同一个函数中,通常goto语句与if语句连用实现循环控制。大型程序中由于goto语句可能存在的不合理的使用,会使程序结构变坏,所以结构化程序设计中,不建议使用goto语句。
5.6 循环嵌套
当一个循环的循环体内又包含了另一个完整的循环结构时,称为循环的嵌套或者是二重循环。一般情况下最多使用到三重循环。
1for语句中嵌套for语句 2for语句中嵌套while语句
3while语句中嵌套while语句 4do——while语句中嵌套for语句
5do——while语句中嵌套do——while语句 6while语句中嵌套do——while语句
使用循环嵌套时,注意以下几点:
1外循环执行一次,内循环要执行一轮。即外循环执行一次,内循环一直要执行到条件不满足时为一轮;在执行外循环一次,内循环又一直执行到条件不满足时为第二轮;如此重复执行,直到外循环条件不满足时,整个循环嵌套结束。
2循环嵌套格式中的内循环体不允许出现交叉,即外循环要包含内循环。
3循环嵌套是,内循环体中使用break语句和continue语句时,只影响包含它们的内循环,与外循环无关。
5.7 典型算法举例
5.7.1 递推法
5.7.2 迭代法
5.7.3 穷举法
5.1
5.2
5.3
5.4
5.5
5.6
5.7
5.8
5.9
5.10
5.11
5.12
5.13
5.14
5.15
5.16
5.17
5.18
5.19
5.20
5.21
5.22
5.23
5.24
5.25
5.26
5.27
5.28
5.29
5.30
5.31
5.32
5.33
341.定义整型i,j;
2.若i<=5;转第3步,则转第步;
3.若i<=20-i;转第4步;则转第5步;
4.输出" ";
5.j++;转第3步;
6.若j<=2*i-1;转第7步;则转第9步;
7.输出"*";
8.j++;转第6步;
9.输出\n;
10.i++,转第2步;
35 1.定义m,n,count;
2.m=rand()%(80-10+1)+10;
3.输入一个10—80之间的整数;
4.判断是否为真,转第5步,则转第13步;
5.count++;
6.若m==n;转第7步;则转第9步;
7.m>n&&count<5;
8.输出"对不起!你猜对了!再来一次!";
9.m<n&&count<5;
10.输出"对不起!你猜大了!再来一次!";
11.若count==5;转第12步,则转第4步;
12.输出"对不起!n你没有机会!"
13.结束;
36 1.x,i,j=0,n,k=0
2.使x=100
3.判断x<1000,是转4,否转12
4.k=sqrt(x)
5.使i=2,判断i<=k,是转6,否转2
6.x%i==0是转7,否转5
7.判断i>k是转8,否转6
8.k=x,n=0,判断k>0是转9,否转7
9.n=n*10+k%10,k/=10,转10
10,x==n,是转11,否转8
11,输出x,++j%5==0,输出\n
12,结束
37 1.定义x,t;
2.输入"i|tpower\n";
3.若x<1000;转第4步;则第10步;
4.t=x*x;
5.若t!=0;转第6步;则转第9步;
6.若x==t%1000;转第7步;则转第8步;
7.输出x;x*x;
8.t=t/10;
9.x++,转第3步;
10.结束;