C案例教程教案 第五章

2023-01-13 00:24:05 字數 3986 閱讀 1599

第5章迴圈結構程式設計

5.1 goto語句

goto語句為無條件轉向語句,它可以控制程式的轉向操作。

1. goto語句一般格式:

goto 語句標號;

2. 說明:

(1) 語句標號是按識別符號規定書寫的符號,放在某一語句行的前面,標號後加冒號。

(2) 語句標號起標識語句的作用,與goto語句配合使用。執行goto語句後,程式將跳轉到該標號處並執行其後的語句。

(3) 標號必須與goto語句同處於乙個函式中,但可以不在乙個迴圈體中。

(4) goto語句用途有兩種:

● 與if語句一起構成迴圈;

● 從迴圈體內跳到迴圈體外。

從結構化程式設計思想出發,不提倡使用goto語句,因為用它會造成程式混亂不清,應當有限制地使用goto語句,但某些情況下使用它可提高執行效率。

5.2 while語句

當型迴圈結構用while語句實現,即先判斷後執行的迴圈結構。流程圖如圖5-1所示。

1. while語句語法格式:

while(表示式)

語句其中,「語句」表示while迴圈結構中不斷被重複執行的語句行,稱為迴圈體。若迴圈體內有多條語句,則用花括弧引起來。

2. while迴圈結構的功能:

只要迴圈條件表示式成立(條件表示式為真),則執行迴圈體,直到表示式不成立(表示式為假)時結束迴圈。迴圈體可以為空語句、簡單語句或復合語句。

3. 說明:

(1) while語句中的表示式一般是關係表達或邏輯表示式,只要表示式的值為真(非0)就繼續迴圈(執行迴圈體中的語句);

(2) 迴圈體中應該有使迴圈趨於結束的語句,否則出現死迴圈;

(3) while語句的迴圈體允許巢狀while結構,也可以允許多層迴圈巢狀;

〖例5-2〗 程式設計實現求1+2+3+…+100的累加和。

設計兩個變數n、sum,n用來提供1,2,3,…,100這樣的數,sum用來儲存累加和,累加和的初值一般設為零。

#include <>

void main()

printf("sum=%d \n",sum);

} 輸出結果:

5050

5.3 do-while語句

直到型迴圈結構一般利用do-while語句實現。它的特點是先執行迴圈體,再判斷迴圈條件是否成立。

1. do-while語句語法格式:

dowhile(條件表示式);

2. 執行過程:

先執行迴圈體語句一次,再判別表示式的值,若為真(非0) ,則繼續迴圈,否則終止迴圈。

3. 與while語句的區別:

因為do-while語句先執行迴圈體一次,再進行判斷。即使迴圈條件不成立,也要執行一次迴圈體。所以它與while語句的區別在於該迴圈至少執行一次迴圈體。

〖例5-4〗 用do-while語句計算1~100的和。

#include <>

void main( )

while(n<=100);

printf("total=%d",total);

} 輸出結果:

total=5050

5.4 for語句

在c語言程式設計中,for迴圈結構使用最為靈活,不僅適用於迴圈次數已知的情況,也適用於迴圈次數不能確定、只能給出迴圈結束條件的情況。它完全可以替代while語句。

1. for語句語法格式:

for(表示式1;表示式2;表示式3)

迴圈體語句;

2. 執行過程:

(1) 求解表示式1,初始化迴圈控制變數。

(2) 求解表示式2,判斷表示式2的值是否成立。若表示式2的值為真,執行迴圈體語句。若表示式2的值為假,結束迴圈。執行for語句後面的一條語句。

(3) 執行迴圈體。

(4) 求解表示式3,修改迴圈控制變數。

(5) 返回第2步繼續執行。

即:在表示式2成立的情況下,反覆執行迴圈體,求解表示式3,直到表示式2不成立,結束迴圈,接著執行for語句後面的一條語句。for迴圈的執行過程如圖5-6所示。

3. 說明:

3個表示式可以為任何表示式。

(1) 表示式1為迴圈控制變數賦初值,通常為賦值表示式。

(2) 表示式2通常為關係表示式或邏輯表示式,作為迴圈控制條件。

(3) 表示式3為迴圈控制變數的修正表示式,通常也為賦值表示式。

(4) 表示式1和表示式3一般為簡單表示式,也可以為逗號表示式。

(5) 3個表示式均可以省略或部分省略。但是用作分隔符的分號不能省略。省略了表示式1,表示不對迴圈控制變數賦初值。

省略了表示式2,for迴圈便成了死迴圈。省略了表示式3,則不對迴圈控制變數進行修改,這時需在迴圈體中加入修改迴圈控制變數的語句,否則for迴圈也可能成為死迴圈。

(6) for迴圈可以巢狀。

〖例5-5〗用for語句實現求1~100的累加和。

#include <>

void main()

分析:例中先給k賦初值1,判斷k<=100是否成立,若成立,則執行迴圈體語句s+=k;,再執行k++,接著判斷迴圈條件,直到條件不成立,即k>100時,結束迴圈。

因為表示式1,表示式3可以逗號表示式,所以上例中的for語句也可以為:

for(k=1,s=0;k<=100;k++)

s=s+k;

輸出結果:

sum=5050

4. 迴圈的比較:

(1) 幾種迴圈(while、do-while、for)一般情況下可互相替代。

(2) for語句主要用於給定迴圈變數初值,步長增量以及迴圈次數確定的迴圈結構。

(3) 迴圈次數及控制條件要在迴圈過程中才能確定的迴圈可用while或do-while語句。

(4) 迴圈條件:while、do-while在while條件表示式中指定,for迴圈在「表示式2」中指定。

(5) 迴圈變數的初始化:while、do-while在迴圈之前指定迴圈變數初值,for迴圈在「表示式1」中指定。

(6) 判斷迴圈條件的時機:while、for迴圈先判斷迴圈條件,後執行迴圈體;do-while迴圈先執行迴圈體,後判斷迴圈條件。

5.5 迴圈巢狀

前面列舉的例子都屬於簡單迴圈問題,也就是說用一重迴圈就能解決。而在某些複雜情況下,僅靠一重迴圈,問題得不到解決,需要用到二重或多重迴圈。

所謂迴圈巢狀即乙個迴圈體內還包含另乙個或幾個完整的迴圈結構,當內嵌的迴圈中還巢狀其他迴圈時,成為多層迴圈。

三種迴圈結構(for、while和do while)可以互相巢狀,表5-1所示都是合法的形式。

表5-1 三種迴圈結構

多重迴圈的使用與單一迴圈完全相同,但應特別注意內、外層迴圈條件的變化。表5-1中列出的僅僅是簡單的6種情況,實際應用可能是層層巢狀。

〖例5-6〗 列印下列形式的乘積表:

1×1=1

2×1=2 2×2=4

3×1=3 3×2=1 3×3=9

…………………

9×1=9 9×2=18 9×3=27 …… 9×9=81

分析:本例使用巢狀的迴圈結構,外層迴圈變數設為i,用來控制行數,其初值為1,終值為9;內層迴圈變數設為j,用來控制每行列印的內容,初值為1,終值為i。即外層迴圈控制列印不同的行,內層迴圈控制列印同一行中的各個算式。

#include <>

void main(void) }

注意:(1) 多重迴圈巢狀時。迴圈之間可以並列,但不能交叉。

(2) 可用轉移語句把流程轉出迴圈體外,但不能從外面轉向迴圈體內。

5.6 break和continue語句

5.6.1 break語句

break語句的作用是跳出switch語句或跳出本層迴圈。break語句用於switch結構的情況在第4章已講,用於for、while或do while迴圈語句中時,可使程式終止迴圈而執行迴圈體後面的語句,通常與if語句配合使用,用來提前退出迴圈。

〖例5-7〗求解當n 多少時1×2×…×n的積剛好大於10000。

程式清單:

#include <>

void main(void)

{ float f=1;

C 第五章課程設計

第五章實驗報告函式與編譯預處理 指導老師束鑫 1140501218 彭祥 1.設計函式void input int a 4 用於對二維陣列初始化,函式void output int a 4 用於輸出陣列中的元素 定義函式int search max int a 4 int col,int vol 用...

C語言第五章實驗報告

班級 14金工3班學號 20145319姓名 周俐俐 1 熟悉c語言程式設計環境。2 進一步熟悉用c語言除錯c語言源程式的過程。3 熟練使用關係表示式和邏輯表示式作為if語句的條件判斷。4 熟練掌握if語句的使用方法。1.身高 每個做父母的都關心自己孩子 後的身高,據有關生理衛生知識與數理統計分析表...

線性代數教案 第五章

第五章相似矩陣及二次型 1 向量的內積 長度及正交性 在這一章中,我們主要討論方陣的相似對角化和二次型的化簡的問題,其中會用到向量的內積,特徵值和特徵向量的概念.我們在這一節中介紹向量的內積的概念.一.內積,長度和夾角.在平面解析幾何裡,我們有向量的長度,夾角的概念,我們希望在向量空間中也能夠定義長...