# 5.C語言for語句用法詳解
在C語言中,for語句使用最為靈活,它完全可以取代 while 語句。它的一般形式為:
? ? for(表達式1; 表達式2; 表達式3) ?語句
它的執行過程如下:
1. 先求解表達式1。
2. 求解表達式2,若其值為真(非0),則執行for語句中指定的內嵌語句,然后執行下面第3)步;若其值為假(0),則結束循環,轉到第5)步。
3. 求解表達式3。
4. 轉回上面第2)步繼續執行。
5. 循環結束,執行for語句下面的一個語句。
其執行過程可用下圖表示。

for語句最簡單的應用形式也是最容易理解的形式如下:
? ? ? ? for(循環變量賦初值; 循環條件; 循環變量增量) ?語句
循環變量賦初值總是一個賦值語句,它用來給循環控制變量賦初值;循環條件是一個關系表達式,它決定什么時候退出循環;循環變量增量,定義循環控制變量每循環一次后按什么方式變化。這三個部分之間用分號(;)分開。例如:
~~~
for( i=1; i<=100; i++ ) sum=sum+i;
~~~
先給i賦初值1,判斷i是否小于等于100,若是則執行語句,之后值增加1。再重新判斷,直到條件為假,即i>100時,結束循環。相當于:
~~~
i=1;
while(i<=100){
sum=sum+i;
i++;
}
~~~
對于for循環中語句的一般形式,就是如下的while循環形式:
? ? 表達式1;
? ? while(表達式2){
? ? ? ? 語句
? ? ? ? 表達式3;
? ? }
使用for語句應該注意:
1) for循環中的“表達式1(循環變量賦初值)”、“表達式2(循環條件)”和“表達式3(循環變量增量)”都是選擇項,即可以缺省,但分號(;)不能缺省。
2) 省略了“表達式1(循環變量賦初值)”,表示不對循環控制變量賦初值。
3) 省略了“表達式2(循環條件)”,則不做其它處理時便成為死循環。例如:
~~~
for( i=1; ; i++ ) sum=sum+i;
~~~
相當于:
~~~
i=1;
while(1){
sum=sum+i;
i++;
}
~~~
4) 省略了“表達式3(循環變量增量)”,則不對循環控制變量進行操作,這時可在語句體中加入修改循環控制變量的語句。例如:
~~~
for( i=1; i<=100 ; ){
sum=sum+i;
i++;
}
~~~
5) 省略了“表達式1(循環變量賦初值)”和“表達式3(循環變量增量)”。例如:
~~~
for( ; i<=100 ; ){
sum=sum+i;
i++;
}
~~~
相當于:
~~~
while(i<=100){
sum=sum+i;
i++;
}
~~~
6) 3個表達式都可以省略。例如:
? ? for( ; ; ) ?語句
相當于:
? ? while(1) ?語句
7) 表達式1可以是設置循環變量的初值的賦值表達式,也可以是其他表達式。例如:
~~~
for( sum=0; i<=100; i++ ) sum=sum+i;
~~~
8) 表達式1和表達式3可以是一個簡單表達式也可以是逗號表達式。
~~~
for( sum=0,i=1; i<=100; i++ ) sum=sum+i;
~~~
或:
~~~
for( i=0,j=100; i<=100; i++,j-- ) k=i+j;
~~~
9) 表達式2一般是關系表達式或邏輯表達式,但也可是數值表達式或字符表達式,只要其值非零,就執行循環體。例如:
~~~
for( i=0; (c=getchar())!=’\n’; i+=c );
~~~
又如:
~~~
for( ; (c=getchar())!=’\n’ ; )
printf("%c",c);
~~~
## 循環的嵌套
【例6-7】循環嵌套的應用。
~~~
main(){
int i, j, k;
printf("i j k\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);
}
~~~
- 前言
- 一. C語言概述
- 1.C語言的發展及其版本
- 2.C語言工作原理和運行機制
- 3.C語言編譯器(開發工具|IDE)推薦
- 4.C語言的特點
- 5.第一個C語言程序
- 6.C語言輸出函數(printf)和輸入函數(scanf)
- 7.C語言程序的結構特點
- 8.C語言字符集
- 9.C語言詞匯
- 二. C語言算法
- 1.什么是算法|算法的概念
- 2.簡單的C語言算法舉例
- 3.C語言算法的特性
- 4.用流程圖表示算法
- 5.三種基本結構的流程圖
- 6.用N-S流程圖表示算法
- 7.用計算機語言表示算法
- 三. 數據類型和運算符
- 1.C語言的數據類型
- 2.C語言常量與變量
- 3.C語言整型數據
- 4.C語言實型數據
- 5.C語言字符型數據
- 6.C語言變量賦初值
- 7.C語言數據類型轉換
- 8.C語言算術運算符和算術表達式
- 9.C語言賦值運算符和賦值表達式
- 10.C語言逗號運算符和逗號表達式
- 四. 順序程序設計
- 1.C語言語句概述
- 2.C語言賦值語句詳解
- 3.C語言數據的輸入輸出
- 4.C語言字符的輸入輸出
- 7.C語言順序結構程序設計舉例
- 五. 分支結構
- 1.C語言關系運算符和表達式
- 2.C語言邏輯運算符和表達式
- 3.C語言if語句詳解
- 4.C語言switch語句的用法詳解
- 5.C語言條件運算符和條件表達式
- 6.C語言分支結構程序舉例
- 六. 循環控制
- 1.C語言循環控制概述
- 2.C語言goto語句以及用goto語句構成循環
- 3.C語言while語句的用法
- 4.C語言do-while語句的用法
- 5.C語言for語句用法詳解
- 6.C語言幾種循環的比較
- 7.C語言break和continue語句的用法
- 8.C語言循環控制程序舉例
- 七. C語言數組
- 1.C語言一維數組的定義和引用
- 2.C語言二維數組的定義和引用
- 3.C語言字符數組及其應用
- 4.C語言常用字符串處理函數
- 5.C語言數組應用舉例
- 6.C語言數組小結
- 八. C語言函數
- 1.C語言函數概述
- 2.C語言函數的定義
- 3.C語言函數的參數和返回值
- 4.C語言函數的調用
- 5.C語言函數的嵌套調用
- 6.C語言函數的遞歸調用
- 7.C語言數組作為函數參數
- 8.C語言局部變量和全局變量
- 9.C語言變量的存儲類別
- 九. 預處理命令
- 1.C語言預處理概述
- 2.C語言無參數宏定義
- 3.C語言帶參數宏定義
- 4.C語言文件包含命令
- 5.C語言條件編譯詳解
- 6.C語言預處理指令總結
- 十. C語言指針
- 1.C語言指針的概念
- 2.C語言指針變量
- 3.C語言指針變量作為函數參數
- 4.C語言指針變量的運算
- 5.C語言數組指針
- 6.C語言通過指針引用數組
- 7.C語言數組名作函數參數
- 8.C語言指向多維數組的指針
- 9.C語言字符串指針
- 10.C語言字符串指針變量與字符數組的區別
- 11.C語言函數指針變量
- 12.C語言指針型函數
- 13.C語言指針數組的概念
- 14.C語言指向指針的指針
- 15.C語言main函數參數
- 16.關于指針的總結
- 十一. 結構體和共用體
- 1.C語言結構體的定義
- 2.C語言結構類型變量的說明
- 3.C語言結構變量成員的表示方法
- 4.C語言結構變量的賦值
- 5.C語言結構變量的初始化
- 6.C語言結構體數組的定義
- 7.C語言指向結構體變量的指針
- 8.C語言指向結構體數組的指針
- 9.C語言結構體指針變量作函數參數
- 10.C語言動態存儲分配
- 11.C語言鏈表的概念
- 12.C語言枚舉類型
- 13.C語言類型定義符typedef
- 十二. 位運算
- 1.C語言位運算符詳解
- 2.C語言位域(位段)
- 3.關于位運算的總結
- 十三. 文件操作
- 1.C語言文件概述
- 2.C語言文件指針
- 3.C語言文件的打開與關閉
- 4.C語言文件的讀寫
- 5.C語言文件的隨機讀寫
- 6.C語言文件檢測函數
- 7.C語言庫文件(頭文件)有哪些
- 8.文件操作小結