for循环是编程语言中一种循环语句,而循环语句由循环体及循环的判定条件两部分组成,其表达式为:for(单次表达式;条件表达式;末尾循环体){中间循环体;}。12

for循环语法

1.语句最简形式为:

for( ; ; )

2.一般形式为:

for(单次表达式;条件表达式;末尾循环体)

{

中间循环体;

}

for ( init; condition; increment ){ statement(s);}

其中,表示式皆可以省略,但分号不可省略,因为“;”可以代表一个空语句,省略了之后语句减少,即为语句格式发生变化,则编译器不能识别而无法进行编译。1

for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。

“;”号之间的条件表达式是一个关系表达式,其为循环的正式开端,当条件表达式成立时执行中间循环体。

执行的中间循环体可以为一个语句,也可以为多个语句,当中间循环体只有一个语句时,其大括号{}可以省略,执行完中间循环体后接着执行末尾循环体。

执行末尾循环体后将再次进行条件判断,若条件还成立,则继续重复上述循环,当条件不成立时则跳出当下for循环。1

3.for循环流程图

执行过程为:

求解表达式1;

求解表达式2。若其值为真,则执行 for 语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步;

求解表达式3;

转回上面第2步继续执行;

循环结束,执行 for 语句下面的语句。

执行过程中,“表达式1”只执行一次,循环是在“表达式2”“表达式3”和“内嵌语句”之间进行的。1

四种运行模型

(1)三角基本模型:2

示例:

<pre data-lang="cpp">#include<stdio.h>int main(){int a,b,c;scanf("%d,%d",&a,&b);for(;a<b;b=c){c=a;a=b;}printf("由大到小排序:%d,%d",a,b);}

(2)中间循环体被省略,只剩下“;”空语句时的左右往返模型:21

条件表达式——末尾循环体

示例:

<pre data-lang="cpp">#include<stdio.h>int main(){int a,b,c;scanf("%d,%d",&a,&b);for(;a<b;c=a,a=b,b=c);printf("由大到小排序:%d,%d",a,b);}

(3)末尾循环体被省略后的上下往返模型条件表达式——中间循环体

示例:

<pre data-lang="cpp">#include<stdio.h>int main(){int a,b,c;scanf("%d,%d",&a,&b);for(;a<b;)c=a,a=b,b=c;printf("由大到小排序:%d,%d",a,b);}

(4)条件表达式被省略得只剩下“;”空语句时,中间循环体或末尾循环体带有跳出语句时的模型:32

示例:

<pre data-lang="cpp">#include<stdio.h>int main(){int a,b,c;scanf("%d,%d",&a,&b);for(c=a;;){break;}if(a<b)a=b,b=c;printf("由大到小排排序:%d,%d",a,b);}

(3)注意事项

1.for循环中的变量可以是一个也可以是多个。

2.for循环中语句可以为语句体, 语句体外加大括号"{}"将参加循环的语句括起来。

3. for循环中的"单次表达式"、"条件表达式"和"循环体语句"都是选择项, 即可以缺省成只剩下“;”的空语句,。

其他用法

1. for循环可以有多层嵌套。示例:

<pre data-lang="cpp">#include<stdio.h>int main(void){int i,j,k;printf("ijk\n");for(i=0;i<2;i++) for(j=0;j<2;j++) for(k=0;k<2;k++)printf("%d%d%d\n",i,j,k);return 0;}

输出结果为: i j k 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

2. for循环中的变量生存周期为一次循环迭代。

<pre data-lang="cpp">#include<stdio.h>int main(void){int i;for(i=0;i<9;i=i+1){int a=i;printf("%d\n",a);}return 0;}

C语句中变量必须声明在前才能使用,在定义语句之前使用变量是不合法的。4

和while的功能比较

一、循环的结构不同

for循环的表达式为:

for(单次表达式;条件表达式;末尾循环体)

{

中间循环体;

}

while循环的表达式为:while(表达式){循环体}

二、执行条件的判断方式不同

for循环执行末尾循环体后将再次进行条件判断,若条件还成立,则继续重复上述循环,当条件不成立时则跳出当下for循环(遇到不满足的条件就立刻退出)。5

while循环当满足条件时进入循环,进入循环后,当条件不满足时,执行完循环体内全部语句后再跳出,而不是立即跳出循环(计算条件不满足时,也仍会执行完当前循环)。5

三、语法不同

for循环的语法为:for (变量 = 开始值;变量 <= 结束值;变量 = 变量 + 步进值) {需执行的代码 }。

while循环的语法为:while (<条件>) {需执行的代码 }。1

不同语言的用法比较

不同语言的用法比较(Python、Java、C):

前述的用法主要是从C语言出发的,Java与Python中的 for 循环与 C 语言中的 for 循环在语法上非常相似,但在某些方面有一些细微的差别:

1. 初始化变量的作用域:

在C语言中,初始化的变量在整个函数范围内可见,而在 Java与Python中,初始化的变量仅在 for 循环内可见。这意味着在这两种语言中,不能在 for 循环外部访问初始化的变量。

2. 变量类型推断:

在 Java 10 及更高版本中,可以使用局部变量类型推断来声明 for 循环中的初始化变量,而在 C 中,必须显式地声明变量的类型。在Python中,可以不声明变量类型,使用默认变量类型,也可以声明特殊类型变量。

3. 遍历方式:

在 Python 中,for 循环通常用于迭代遍历集合类型(如列表、元组、字典等)的元素。Python 的 for 循环是一种迭代器形式,可以直接遍历集合中的元素。而在 Java 中,传统的 for 循环更常用于指定循环的次数,并且需要通过索引来访问数组或列表中的元素。但是,Java 也有类似于 Python 的 for-each 循环,可以更简洁地遍历集合类型。C语言使用的是传统的遍历,需要使用到索引变量。

4. 语法:

在 Python 中,for 循环的语法非常简洁,通常是通过 for item in iterable: 的形式进行迭代。在 Java和C语言中,传统的 for 循环具有明确的初始化、条件和迭代部分,通常采用 for (initialization; condition; iteration) 的形式。

Python、Java 和 C 中的 for 循环示例比较:

在 Python 中:

<pre data-lang="python">for i in range(5): print(i)

在 Java 中:

<pre data-lang="clike">for (int i = 0; i < 5; i++) { System.out.println(i);}

在 C 中:

<pre data-lang="clike">int i;for (i = 0; i < 5; i++) { printf("%d\n", i);}

尽管 Python、Java 和 C 中的 for 循环都可以用于迭代,但它们在语法和用法上有一些区别,主要取决于编程语言的设计和用途。

来源: 百度百科

内容资源由项目单位提供