- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章回圈结构
第六章 迴圈敘述
前面第四、五兩章,我們已經介紹如何輸入一個人的成績,及判斷一個人的成績是否及格,也介紹如何輸入多人成績、多人成績的極大值及排序等問題。我們發現,當人數只要一多,寫起程式來真是洋洋灑灑,程式設計的領域果真如此磨人嗎?所幸,答案是否定的。因為本章要介紹一個高效率的敘述,此稱為迴圈敘述。C語言常用的迴圈敘述分別是for 與while。其次,也使用break,continue和goto來控制迴圈中的跳躍動作。
6-1 for
若於程式設計階段已知迴圈的執行次數,則可使用for敘述,for敘述的語法如下:
for([計數變數=起始值] ;[迴圈運算式];[計數變數的改變量])
{
[敘述區塊1;]
[break;]
[continue;]
[goto (標籤名稱);]
[敘述區塊2;]
}
以上語法說明如下:
1. 只要“迴圈運算式”結果為1(真),則繼續執行迴圈內的敘述區塊。
計數變數應該為合法的識別字。
計數變數的改變量,可為正或負的整數或實數,正整數請看範例6-1a,負實數請看範例6-1b。
3. 程式若執行到break,則會提早離開for迴圈,請看範例6-1c。
程式若執行到continue,則會略過continue下面的敘述區塊2,繼續執行下一個計數變量,請看範例6-1c
程式若執行到goto,則會略過goto下面的敘述區塊2,跳躍至 (標籤名稱) 所在的位置,繼續執行標籤以下的敘述區塊,請看範例6-1c。
以下程式片段可印出1至10。
for ( i=1;i=10;i++)
{
printf(“%d”, i);
}
6. for敘述若只有一個敘述,則大括號可省略。例如,以上敘述同於
for ( i=1;i=10;i++)
printf(“%d”, i);
但以下敘述的j++並不包含於迴圈,它只含被執行一次。
for ( i=1;i=10;i++)
printf(“%d”, i);
j++;
7. 敘述區塊內可以放置任何合法的敘述,當然也可含for。for內有for,稱為巢狀迴圈。例如,以下敘述可印出1至10 五次,請看6_2節。
for ( i=1;i=5;i++)
{
for (j=1;j=10;j++)
printf(“%d”, i);
}
範例6-1a
請寫一個程式,印出1至10,並求其和。
【執行結果】
【程式列印】
【程式說明】
1. C語言並不會自動將所宣告變數的初值設為0,所以若要執行累加的變數,務必自己親自設定其初值。
2. i++的效果同i=i+1,但其寫法較簡潔。
for(i=1;i=10;i++)表示只要i=10就會執行迴圈的敘述區塊,若寫成for(i=1;i==10;i++),則迴圈運算式僅於i=10時結果為true,i=1至9均得到false,不會執行迴圈內的敘述區塊,此為C語言與一般語言最大的差異,請讀者務必小心。
【自我練習】
請寫一程式,計算1+3+5+7+9之和。
請寫一程式,計算6+16+26+36+46之和。
請寫一程式,計算之和。
範例6-1b
試求2.1+1.9+1.7+.…+(-7.1)之和。
【執行結果】
【程式列印】
【程式說明】
1. 迴圈的起始值、運算式及計數變數的改變量都可為整數或浮點數,本例之起始值為2.1,迴圈運算式為大於等於-7.1,改變量為-0.2。
請務必留意,當改變量為負時,迴圈運算式為大於等於;而前例改變量為正時,迴圈運算式為小於等於。
【自我練習】
1、請寫一程式,計算9+8+7+6+5+4之和。
2、請寫一程式,計算32+27+22+17+12+7之和。
請寫一程式,計算之和。
範例6-1c
示範break及continue敘述。
1. 當i==1時,執行goto jump1,所以程式直接跳躍到jump1:繼續執行,略過“hello”不印,如下所示。
2. 當i==5時,執行continue,所以5略過不印,直接跳躍至迴圈判斷式,開始執行i=6 ,如下所示。
3. 當i==8時,執行break,立即離開迴圈,如下所示。
【執行結果】
【程式列印】
範例6-1d
同範例5-4d,列出西元元年至西元2000年的所有閏年。
【執行結果】如下圖,共485個。(97*(2000%400)=485)
【程式列印】
【自我練習】
請寫一個程式
文档评论(0)