1、for语句循环结构定义
for语句循环结构的一般形式、流程图和执行过程如下:
注1:计算表达式2是循环的判定表达式。与前面一样,这个表达式可以是任意的,只要有值就行,遵循非0即真的原则。
注2:一个循环结构由四个要素构成:循环初始条件、循环判定条件、循环体和循环修正条件。循环初始条件就是循环结构的一些变量定义和初始化值设置,如上图计算表达式1。循环判定条件就是上图中的计算表达式2,即循环的判定表达式。循环体就是循环执行部分,如上图中的语句。循环修正条件就是为了进入下一轮循环,需要改变循环条件,如上图中的计算表达式3。
注3:for语句循环结构将表达式1、表达式2和表达式3全放在一块。但是,首轮循环执行顺序是表达式1、表达式2、循环体语句和表达式3,下轮循环执行顺序是表达式2、循环体语句和表达式3。
注4:表达式1、表达式2和表达式3都可以省略,但是两个;号不能省略。表达式1省略时,就需要将表达式1提到for语句的前面。表达式2省略时,就需要将表达式2以if语句的形式放在循环体中。表达式3省略时,就需要将表达式3放到循环体后面。
2、for语句循环结构示例
还是上面那个题目:求1+2+3+...+100的值。
根据上述定义和注解,我们对于这个问题,首先分析其个要素如下:
循环初始化条件:i=1, sum=0; //从上面问题来看,主要有要加的数(第一个为1,即i=1)和加的结果(在加之前结果为0,即sum=0)。
循环判断条件:i<=100; //从上面问题来看,要加的数是从1~100的,也就是小于等于100的数就要加起来,即i<=100。
循环体: sum+=i; // 从上面问题来看,对于每一个从1开始且小于等于100的数都要加起来,即每个i都要加进sum中,即sum+=i。
循环修正条件: i++; //从上面问题来看,每一个加进sum的数是变化的,所以i要+1,即i++。
有了这个四素,接下来就是套用for语句循环结构的一般形式就行,具体代码如下:
#include "stdio.h"
int main()
{
int i, sum=0; // 变量定义、其他初始化值
for(i=1;i<=100;i++) //循环初始条件、循环判定条件和循环修正条件
{
sum+=i; //循环体
}
printf("1+2+3+...+100=%d",sum);
return 0;
}
注1:省略表达式1和表达式3时,代码如下:
#include "stdio.h"
int main()
{
int i=1, sum=0; // 变量定义、循环初始条件
for(;i<=100;) //循环判定条件
{
sum+=i; //循环体
i++; //循环修正条件
}
printf("1+2+3+...+100=%d",sum);
return 0;
}
这与while语句的结构形式对应。
注2:省略表达式2时,就需要使用if....break形式,后面学for语句的break时再讲。
3、与while语句循环结构可以相互转换
(1)while语句循环结构——变for语句循环结构
如下为while语句循环结构代码:
#include "stdio.h"
int main()
{
int i=1, sum=0; //循环初始条件
while(i<=100) //循环判定条件
{
sum+=i; //循环体
i++; //循环修正条件
}
printf("1+2+3+...+100=%d",sum);
return 0;
}
转换为for语句循环结构只需要两步:
第一步,将while(i<=100)改为for(;i<=100;)。
第二步:将i=1和i++移至for(;i<=100;)中,改为for(i=1;i<=100;i++)。
得到代码如下:
#include "stdio.h"
int main()
{
int i, sum=0; // 变量定义、其他初始化值
for(i=1;i<=100;i++) //循环初始条件、循环判定条件和循环修正条件
{
sum+=i; //循环体
}
printf("1+2+3+...+100=%d",sum);
return 0;
}
(2) for语句循环结构——变while语句循环结构
#include "stdio.h"
int main()
{
int i, sum=0; // 变量定义、其他初始化值
for(i=1;i<=100;i++) //循环初始条件、循环判定条件和循环修正条件
{
sum+=i; //循环体
}
printf("1+2+3+...+100=%d",sum);
return 0;
}
转换为while语句循环结构只需要两步:
第一步,将i=1移到for语句前面,而将i++移到for语句循环体后面。
第二步:将for(;i<=100;)改为while(i<=100)。
得到代码如下:
#include "stdio.h"
int main()
{
int i=1, sum=0; //循环初始条件
while(i<=100) //循环判定条件
{
sum+=i; //循环体
i++; //循环修正条件
}
printf("1+2+3+...+100=%d",sum);
return 0;
}