5.1引例
例5.1
5.2使用for语句实现循环结构
5.2.1 for 语句的基本语法
for语句的执行过程如下:
1首先计算表达式1
2判断表达式2,若其值为真(非0),则执行循坏体语句,然后执行第三步;若值为假(0),结束循坏,转到五步执行
3计算表达式3
4返回第二步继续执行
5循坏结束,继续执行for语句的下一条语句大部分情况下,循坏体语句为一复合语句
注意:表示式1只是在进行循坏之前计算一次。表达式2,循坏体语句和表达式3将重复执行
根据for语句格式的特点,其实际应用可以有很多种形式
1.可以用于技数型的循坏
格式如下:
for(循坏变量赋初值;循坏条件;循坏变量增量)
2.for语句的一般形式中省略表达式1
格式如下:
for(;表达式2;表达式3)
循坏体语句;
说明:省略表达式1时,可以将循坏变量赋初值放在for之前。注意,此时不能省略第一个
“;”
例如,例5.3循坏语句:
for(i=1;i<=n;i++)
sum=sum+i;
等价于
i=1;
for(;i<=n;i++)
sum=sum+i;
3.for语句的一般形式中省略表达式2
格式如下:
for(表达式1; ;表达式3)
循坏语句;
时说明:省略表达式2,表示不对循坏进行控制,这时如果没有其他处理的话,会形成死循坏。应避免这样使用for结构
4.for语句的一般形式中省略表达式3
格式如下:
for(表达式1;表达式2;)
循坏语句;
时说明:省略表达式3,可以在循坏语句中加入修改循坏变量的值的语句。
例如,例5.4循坏语句:
for(i=1;i<=n;i++)
factorial=factorial*i;
等价于;
for(i=1;i<=n;)
{factorial=factorial*i;;
i++;
}
5.for语句的一般形式中表达式1和表达式3也可以是逗号表达式
sum=0;
for(i=1;i<=n;i++)
sum=sum+i;
等价于:
for(sum=0,i=1;i<=n;i++)
sum=sum+i
表达式sum=0,i=1为逗号表达式。
6for语句的一般形式中表达式2的值只要非0,就执行循坏体
for(;(ch=getchar()!='\n';)
printf("%c",ch);
7.for语句的一般形式中循坏语句可以省略
for(i=1;i<=n;i++)
sum=sum+i;
等价于:
for(i=1;i<=n;sum=sum+i,i++);
循坏体语句sum=sum+i;放到表达式3中,与i++构成一个一个逗号表达式,此时循坏体语句实际为一个空语句“;”(单独一个“;”称为空语句)。
5.2.2 for循坏使用示例
例5.5
例5.6
例5.7
例5.8
例5.9
例5.10
例5.11
例5.12
5.3使用while语句实现循环结构
5.3 使用while语句实现循环结构
5.3.1 while语句的基本语法
while语句在使用时,总是先要判断一个条件,所以可以用while语句实现“当型”循环。while语句的一般形式如下:
while(表达式)
循环体;
注意,while语句的特点是先判断循环条件,后执行循环体。
5.3.2while循环使用示范
例5.13
例5.14
例5.15
5.4 使用do-while语句实现循环结构
5.4.1 do-while语句的基本语法
do-while语句在使用时,首先执行循环体语句,然后再判断条件。所以可以用do-while语句实现“直到型”循环。do-while语句一般形式如下:
do
循环体
while(表达式);
注意,do-while语句的特点是先执行循环体,后判断循环条件。因此,do-while循环至少执行一次循环体。
例5.16
例5.17
例5.18
5.5改变循环结构的跳转语句
.5.1 break语句
break语句用在循环语句和switch语句中,在switch语句中的用法第4章已经介绍,这里介绍其在循环语句中的用法。
break语句的一般形式如下:
break;
当break语句用于循环语句中时,可使程序终止循环而转去执行循环语句的后继语句。通常break语句总是与if语句一起配合使用,即满足条件时跳出循环。
例5.19
例5.20
例5.21
5.5.3 goto语句
除了前面介绍的3种循环控制语句,即for循环语句,while循环语句及do-while循环语句之外,在c语言中,还有一种可以实现循环控制的语句,即goto语句。
goto语句的一般形式如下:
goto语句标号;
说明:语句标号是一个有效的标识符,使用时在语句标号的后面跟一个“:”出现在函数中某语句的前面。程序执行到goto语句,会控制跳转到该语句标号处,达到控制循环的目的。
例5.24
5.6循环嵌套
例5.25
例5.26
例5.27
例5.28
5.7典型算法举例
例5.29
例5.30
5.7.2迭代法
例5.31
5.7.3穷举法
例5.32
例5.33
5.8循环程序设计示例
例5.34
例5.35
例5.36
例5.37