複製鏈接
請複製以下鏈接發送給好友

for循環

鎖定
for循環是編程語言中一種循環語句,而循環語句循環體及循環的判定條件兩部分組成,其表達式為:for(單次表達式;條件表達式;末尾循環體){中間循環體;}。 [1-2] 
中文名
for循環
外文名
For cycle
類    別
編程語言
功    能
循環執行
形    式
for (表達式1; 表達式2; 表達式3)

for循環for循環語法

1.語句最簡形式為:
for( ; ; )
2.一般形式為:
for(單次表達式;條件表達式;末尾循環體
{
中間循環體;
}
for ( init; condition; increment ){ statement(s);}
其中,表示式皆可以省略,但分號不可省略,因為“;”可以代表一個空語句,省略了之後語句減少,即為語句格式發生變化,則編譯器不能識別而無法進行編譯。 [1] 
for循環小括號裏第一個“;”號前為一個為不參與循環的單次表達式,其可作為某一變量的初始化賦值語句, 用來給循環控制變量賦初值; 也可用來計算其它與for循環無關但先於循環部分處理的一個表達式。
“;”號之間的條件表達式是一個關係表達式,其為循環的正式開端,當條件表達式成立時執行中間循環體。
執行的中間循環體可以為一個語句,也可以為多個語句,當中間循環體只有一個語句時,其大括號{}可以省略,執行完中間循環體後接着執行末尾循環體。
執行末尾循環體後將再次進行條件判斷,若條件還成立,則繼續重複上述循環,當條件不成立時則跳出當下for循環。 [1] 
3.for循環流程圖
for循環示意圖 for循環示意圖
執行過程為:
求解表達式1;
求解表達式2。若其值為真,則執行 for 語句中指定的內嵌語句,然後執行第3步;若表達式2值為假,則結束循環,轉到第5步;
求解表達式3;
轉回上面第2步繼續執行;
循環結束,執行 for 語句下面的語句。
執行過程中,“表達式1”只執行一次,循環是在“表達式2”“表達式3”和“內嵌語句”之間進行的。 [1] 

for循環四種運行模型

(1)三角基本模型: [2] 
三角基本模型圖示 三角基本模型圖示
示例:
#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)中間循環體被省略,只剩下“;”空語句時的左右往返模型: [2]  [1] 
條件表達式——末尾循環體
示例:
#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)末尾循環體被省略後的上下往返模型條件表達式——中間循環體
示例:
#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)條件表達式被省略得只剩下“;”空語句時,中間循環體或末尾循環體帶有跳出語句時的模型: [2-3] 
示例:
#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循環中的"單次表達式"、"條件表達式"和"循環體語句"都是選擇項, 即可以缺省成只剩下“;”的空語句,。

for循環其他用法

1. for循環可以有多層嵌套。示例:
#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循環中的變量生存週期為一次循環迭代。
#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] 

for循環和while的功能比較

一、循環的結構不同
for循環與while循環結構對比 for循環與while循環結構對比
for循環的表達式為:
for(單次表達式;條件表達式;末尾循環體)
{
中間循環體;
}
while循環的表達式為:while(表達式){循環體}
二、執行條件的判斷方式不同
for循環執行末尾循環體後將再次進行條件判斷,若條件還成立,則繼續重複上述循環,當條件不成立時則跳出當下for循環(遇到不滿足的條件就立刻退出)。 [5] 
while循環當滿足條件時進入循環,進入循環後,當條件不滿足時,執行完循環體內全部語句後再跳出,而不是立即跳出循環(計算條件不滿足時,也仍會執行完當前循環)。 [5] 
三、語法不同
for循環的語法為:for (變量 = 開始值;變量 <= 結束值;變量 = 變量 + 步進值) {需執行的代碼 }。
while循環的語法為:while (<條件>) {需執行的代碼 }。 [1] 

for循環不同語言的用法比較

不同語言的用法比較(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 中:
for i in range(5):
    print(i)
在 Java 中:
for (int i = 0; i < 5; i++) {
    System.out.println(i);
}
在 C 中:
int i;
for (i = 0; i < 5; i++) {
    printf("%d\n", i);
}
儘管 Python、Java 和 C 中的 for 循環都可以用於迭代,但它們在語法和用法上有一些區別,主要取決於編程語言的設計和用途。
參考資料
  • 1.    譚浩強.C程序設計(第4版):清華大學出版社,2010.6
  • 2.    索明何,邢海霞,方偉駿.C語言程序設計 :機械工業出版社 ,2016.2
  • 3.    林小茶,陳昕 .C程序設計教程(第3版):清華大學出版社 ,2018.6
  • 4.    尹寶林.C程序設計導引:機械工業出版社 , 2013.5
  • 5.    關於for循環的簡單介紹  .CSDN[引用日期2023-08-26]