迴圈巢狀結構程式設計

2021-05-31 03:16:23 字數 5254 閱讀 5685

課件內容

slide 1: c語言程式設計

第5章迴圈結構程式設計

北京科技大學計算機系

slide 2: 本章主要內容

while迴圈控制

do-while迴圈控制

for迴圈控制

用goto語句實現迴圈控制

迴圈結構中的跳轉語句

迴圈的巢狀

迴圈結構程式設計舉例

2010-11-2

2slide 3: 5.1 while迴圈控制

語句一般格式

while (表示式)語句

一般為關係表示式

或邏輯表示式,也

可以是c語言其他

型別的合法表示式

用來控制迴圈體是

否執行稱為內嵌語句,

可以是基本語句、

控制語句,也可

以是復合語句

是迴圈重複執行

的部分2010-11-2

3slide 4: 功能:

計算表示式的值,為非0(邏輯真)時,重複執

行內嵌語句,每執行一次,就判斷一次表示式

的值,直到表示式的值為0 時結束迴圈,轉去執

行while後面的語句。

迴圈控制條件

流程圖表示式非0?y

語句迴圈體

2010-11-2

nn-s結構圖

當表示式為真語句4

slide 5: 例如:

【例5.1】編寫程式,求100個自然數的和

即:s=1+2+3+ …+100

思路:尋找加數與求和的規律

加數i——從1變到100,每迴圈一次,使i增1,

直到i的值超過100。i的初值設為1。

求和——設變數sum 存放和,迴圈求

sum=sum+i,直至i超過100。

52010-11-2

slide 6: 演算法和程式:

i=1,sum=0

當i <= 100

sum=sum+i

i++輸出sum

i: 迴圈控制變數

sum: 累加器

6main( )

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

}程式輸出結果:

sum=5050

2010-11-2

slide 7: 注意:

如果while的(表示式) 值為0,則迴圈體一

次也不執行(例如當i的初值=101) 。

在迴圈體中,語句的先後位置必須符合邏

輯,否則會影響運算結果。

思考程式段的輸出?

……while (i<=100)

執行後,輸出:

sum=5150

原因是什麼?

2010-11-2

7在迴圈體中必須有使迴圈趨向結束的操作,

否則迴圈將無限進行(死迴圈)。

slide 8: 注意(續):

為了保證迴圈正常執行,應該特別注意:

– 迴圈控制條件的描述

– 控制條件的初始狀態(初始值)

– 迴圈體內部對控制條件的影響

82010-11-2

slide 9: 5.2 do-while語句

語句一般格式

do 語句

while (表示式);

功能:– 先執行內嵌語句(迴圈體),之後計算

表示式的值,不為0(邏輯真)時,再

執行迴圈體並判斷條件,直到表示式的

值為0 結束迴圈,轉去執行while下面

的語句。

2010-11-2

9slide 10: do-while迴圈的演算法

流程圖迴圈體

表示式非0?

n用do-while語句

求100個自然數的和y10

當表示式為真

n-s結構圖

迴圈體main( )

while (i<=100);

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

}2010-11-2

slide 11: 說明:

區別:– do- while 語句先執行迴圈體再判斷條

件,迴圈體至少執行一次;

– while 語句先判斷條件再執行迴圈體,

迴圈體有可能一次也不執行

do—while迴圈體中一定要有能使表示式值

趨於0的操作(如i++),否則會出現死迴圈。

2010-11-2

11 while和do-while都能實現迴圈控制,while

結構程式通常都可以轉換成do-while結構

slide 12: do-while語句的簡單應用

【例5.3】用輾轉相除法求m和n的最大公約數

定義m、n、r

mslide 13: 演算法和程式:

main( )

2010-11-2

可部分或全部省略,

但「;」不可省略

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

slide 16: 省略for語句的表示式

⑴表示式1、2、3全省略,即:

for (

;; )

就等同於:while (1),會無限迴圈(死迴圈)

⑵省略表示式1和表示式3,即:

for(;表示式2;)

就等同於:while(表示式2 )

⑶ 省略表示式2,即:

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

就等同於:表示式1; while(1){…表示式3;}

注意:在省略某個表示式時,應在適當位置進行循

環控制的必要操作,以保證迴圈的正確執行

2010-11-2

16slide 17: 例如:

⑴i=1;

for ( ; i<=100; i++) sum+=i;

⑵for (i=1; ; i++)

⑶for (i=1; i<=100; )

⑷i=1;

for ( ; ; )

2010-11-2

17slide 18: 說明:

所有用while語句實現的迴圈都可以用

for語句實現。

等價於:

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

語句;表示式1;

while (表示式2)

2010-11-2

18slide 19: for語句的簡單應用

【例5.4】求n! ,即計算p=1×2×3×…×n

的值。思路:求階乘與求累加的運算處理過程類似,只要

將「+」變為「*」。

設定: 乘數i,初值為1,終值為n(n是迴圈控制終

值,需要從鍵盤輸入)

累乘器p,每次迴圈令p = p*i

192010-11-2

slide 20: 程式:

main( )

思考: 如何輸出1!, 2!, … , n! ?

如何求s =1!+ 2!+ … + n! ?

2010-11-2

執行jc5_4

20slide 21: 熟悉幾個迴圈語句

while (!x) x++;

當x=0時,執行迴圈體x++;

while ((c=getcharn') n=n+1;

n 稱為計數器,作用是統計輸入字元的個數

while (num++<=2) ; printf("%d\n",num);

迴圈體是空語句,退出迴圈後輸出num的值

do x*=-3; while(x>5);

先執行迴圈體x*=-3,再判斷條件(x>5)

for (n=0; n<26; n++) printf("%c ", n+'a');

作用是輸出26個大寫字母

for (sum=0, i=1; i<=100; sum=sum+i, i+=2) ;

作用是計算100以內的奇數和

2010-11-2

21slide 22: 幾種迴圈語句的比較

while和do-while語句的表示式只有乙個,for語

句有三個。

while 和for先判斷迴圈條件後執行迴圈體,dowhile語句先執行迴圈體後判斷迴圈條件。

while語句多用於迴圈次數不定的情況

do-while語句多用於至少要執行一次的情況

for語句多用於要賦初值或迴圈次數固定的情況

2010-11-2

22slide 23: 5.4 用goto語句實現迴圈

有興趣的同學自學

不提倡使用goto語句

注意:goto語句能實現程式無條件轉移,為程式設計

提供了便利。但是無限制地使用,會破壞

程式的結構化程度。因此應限制使用。

232010-11-2

slide 24: 5.5 迴圈結構中的跳轉語句

有如下三種語句實現跳**

– continue語句

– break語句

– goto語句

在迴圈語句的迴圈體中使用,可以進行

迴圈的流程控制

242010-11-2

slide 25: 5.5.1 continue語句及應用

功能:while語句

表示式 n?y…

continue;

…後續語句

do-while語句

…continue;…

表示式?

y後續語句

nfor語句

計算表示式1

continue;…

表示式2?y…

計算表示式3

後續語句

2010-11-2n25

– 中斷迴圈體的本次執行(即跳過迴圈體中尚

未執行的語句),立即開始執行下一次迴圈。

slide 26: 例如:

⑴int x,n=0,s=0;

while (n<10)

;⑵int x,n=0,s=0;

do while (n<10);

⑶for (n=0,s=0; n<10; n++)

2010-11-2

26slide 27: 應用舉例

【例5.7】把100~200之間能被7整除的數,

以十個數為一行的形式輸出,最

後輸出一共有多少個這樣的數。

for (n=100; n<=200; n++)

n能被7整除

t終止本次迴圈

輸出n輸出10個數t換行

2010-11-2ff

27slide 28: 演算法和程式

main( )

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

}2010-11-2

執行jc5_728

迴圈的巢狀結構

一 課題 迴圈結構的巢狀 二 授課人 田豐 三 課型 機房實踐課 四 課時 2課時 五 教學目標 知識與技能 掌握迴圈的巢狀結構,能夠應用巢狀結構解決一些簡單的問題.過程與方法 學生通過模仿 操作 學習設計迴圈結構程式框圖,體會迴圈的思想,提高解決問題的能力。情感態度與價值觀 學生通過分析問題,尋找...

實驗一巢狀結構的實現

1 熟悉if語句的多種結構 2 熟悉if和else的匹配原則 3 熟悉選擇巢狀結構 4 理解巢狀結構的形成方法,學習自頂向下,逐步細化的演算法設計方法 5 熟悉迴圈巢狀結構 復合巢狀結構 6 學習巢狀結構的典型演算法 改正程式中的錯誤,判斷乙個數是否是素數。素數就是只能被1和自身整除的正整數,1不是...

實驗一巢狀結構的實現

1 熟悉if語句的多種結構 2 熟悉if和else的匹配原則 3 熟悉選擇巢狀結構 4 理解巢狀結構的形成方法,學習自頂向下,逐步細化的演算法設計方法 5 熟悉迴圈巢狀結構 復合巢狀結構 6 學習巢狀結構的典型演算法 開啟程式error02 改正程式中的錯誤,判斷乙個數是否是素數。素數就是只能被1和...