課件內容
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和...