目錄
循環語句
while
do ..... while
while與do ....while比較
for循環語句
三種循環語句的比較
循環嵌套
循環嵌套執行個體
1.使用嵌套語句輸出金字塔形狀
2.列印乘法口訣表
轉移語句
goto語句
break語句
continue語句
每文一語
循環語句
程式在運作時可以通過判斷、檢驗條件作出選擇。此處,程式還必須能夠重複,也就是反複執行一段指令,直到滿足某個條件為止。例如,要計算一個公司的消費總額,就要将所有的消費加起來。
這種重複的過程就稱為循環。C語言中有3種循環語句:while、do-while和for循環語句。循環結構是結構化程式設計的基本結構之一,是以熟練掌握循環結構是程式設計的基本要求。
while
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CMyMTNzkTMxYDOyYzMxMmYyYzX4UDN1YTM5IzLcZDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
舉例:使用while為使用者提供菜單顯示。
使用while為使用者提供菜單顯示效果
do ..... while
使用while循環計算從1到100的累加。
五個注意
while與do ....while比較
for循環語句
使用while循環計算從1到100的累加。
省略表達式1
int sum=0;
int i=0; //将循環控制變量拿到循環語句外聲明并賦初值
for ( ;i<=10 ;i++)
{
sum+=i;
}
cout <<sum << endl;
省略表達式1和3
int sum=0;
int i=0; //賦初值
for(; i<=10 ; )
{
sum+=i;
i++; //改變循環變量
}
cout <<sum << endl;
int sum=0;
int i=0; //賦初值
while(i<=10 )
{
sum+=i;
i++; //改變循環變量
}
cout <<sum << endl;
三種循環語句的比較
前面介紹了3種可以執行循環操作的語句,這3種循環都可用來解決同一問題。一般情況下這三者可以互相代替。下面是對這3種循環語句在不同情況下的比較。
þwhile和do-while循環隻在while後面指定循環條件,在循環體中應包含使循環趨于結束的語句(如i++或者i=i+1等);for循環可以在表達式3中包含使循環趨于結束的操作,可以設定将循環體中的操作全部放在表達式3中。是以for語句的功能更強,凡用while循環能完成的,用for循環都能實作。
þ用while和do-while循環時,循環變量初始化的操作應在while和do-while語句之前完成;而for語句可以在表達式1中實作循環變量的初始化。
þwhile循環、do-while循環和for循環,都可以用break語句跳出循環,用continue語句結束本次循環(break和coutinue語句将在本文後續内容中進行介紹)。
循環嵌套
循環嵌套執行個體
1.使用嵌套語句輸出金字塔形狀
#include<stdio.h>
int main()
{
int i, j, k; /*定義變量i,j,k為基本整型*/
for (i = 1; i <= 5; i++) /*控制行數*/
{
for (j = 1; j <= 5-i; j++) /*空格數*/
printf(" ");
for (k = 1; k <= 2 *i - 1; k++) /*顯示*号的數量*/
printf("*");
printf("\n");
}
return 0;
}
2.列印乘法口訣表
#include<stdio.h>
int main()
{
int iRow, iColumn; /*iRow為行,iColum為列*/
for (iRow = 1; iRow <= 9; iRow++) /*for循環iRow為乘法口訣表中的行數*/
{
for (iColumn = 1; iColumn <= iRow; iColumn++)/*根據iRow,iColum取值循環計算*/
{
printf("%d*%d=%d ", iRow,iColumn,iRow *iColumn); /*輸出結果*/
}
printf("\n"); /*進行換行*/
}
return 0;
}
轉移語句
goto語句
goto語句為無條件轉向語句,可以使程式立即跳轉到函數内部的任意一條可執行語句。goto關鍵字後面帶一個辨別符,該辨別符是同一個函數内某條語句的标号。标号可以出現在任何可執行語句的前面,并且以一個冒号“:”作為字尾。goto語句的一般形式為:
goto 辨別符;
goto後的辨別符就是要跳轉的目标,當然這個辨別符要在程式的其他位置給出,但是其辨別符要在函數内部。函數的内容将會在後面章節進行介紹,在此對其簡單了解即可。例如:
goto Show;
printf("the message before ShowMessage");
Show:
printf("ShowMessage");
上述代碼中,goto後的Show為跳轉的辨別符,而其後Show:代碼表示goto語句要跳轉的位置。這樣在上面的語句中第一個printf函數不會執行,而會執行第二個printf函數。
break語句
有時會遇到這樣的情況,不顧表達式檢驗的結果而強行終止循環,這時可以使用break語句。break語句終止并跳出循環,繼續執行後面的代碼。break語句的一般形式為:
break;
break語句不能用于循環語句和switch語句之外的任何其他語句中。例如在while循環語句中使用break語句:
while(1)
{
printf("Break");
break;
}
在代碼中,雖然while語句是一個條件永遠為真的循環,但是在其中使用break語句使得程式流程跳出循環。
continue語句
在某些情況下,程式需要傳回到循環頭部繼續執行,而不是跳出循環。continue語句的一般形式是:
continue;
其作用就是結束本次循環,即跳過循環體中尚未執行的部分,接着執行下一次的循環操作
了解這些結構的使用方法,可以在程式功能上節約很多的時間,無須再一條一條進行操作。通過對3種循環語句的比較,可以了解到不同語句的使用差別,也可以發現三者的共同之處。最後介紹了有關轉移語句的内容。學習轉移語句使得程式設計更為靈活,使用continue語句可以結束本次循環操作而不終止整個循環,使用break語句可以結束整體循環過程,使用goto語句可以跳轉到函數體内的任何位置。