C程序設(shè)計課件:第4章 過程化語句_第1頁
C程序設(shè)計課件:第4章 過程化語句_第2頁
C程序設(shè)計課件:第4章 過程化語句_第3頁
C程序設(shè)計課件:第4章 過程化語句_第4頁
C程序設(shè)計課件:第4章 過程化語句_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第四章 過程化語句2本章主要內(nèi)容4.1 while 語句4.2 dowhile語句4.3 for 語句4.4 switch 語句4.5 轉(zhuǎn)向語句4.6 過程應(yīng)用:求 4.7 過程應(yīng)用:判明素數(shù)作業(yè)3熟練使用while循環(huán)語句熟練使用dowhile 循環(huán)語句熟練使用for循環(huán)語句熟練使用switch多重選擇語句熟練使用break和continue語句學(xué)習(xí)目標:44.1 while 語句一般形式: while(表達式) 語句 說明:先判斷再執(zhí)行;while后面的括號和括號中的表達式都必須有。表達式可以是常量或常量表達式。 例: while(5) /跳出循環(huán) 可以是復(fù)合語句,其中必須含有改變條件表達

2、式值的語句。54.1 while 語句例:求1加到100的和/ ch4_1.cpp#include int main() int i=1,sum=0; while(i101) sum=sum+i; +i; coutsum= sumendl; 64.2 dowhile 語句一般形式:do 語句while (表達式);可以是復(fù)合語句,其中必須含有改變條件表達式值的語句執(zhí)行順序先執(zhí)行循環(huán)體語句,后判斷條件。表達式為 true 時,繼續(xù)執(zhí)行循環(huán)體注意:該語句后面的分號必須要有!與while 語句的比較:while 語句執(zhí)行順序:先判斷表達式的值,為true 時,再執(zhí)行語句do while:先執(zhí)行再判斷

3、語句,至少執(zhí)行一次循環(huán)體74.2 dowhile 語句/* ch4_2.cpp *從鍵盤得到一個范圍為110的數(shù)#include int main() int val; do /循環(huán)體 cout val; /修改條件 if (val10) cout the number is not between 1 and 10n; while( val10 ); /繼續(xù)條件 cout you entered a val endl;84.2 dowhile 語句例:求1加到100的和/ch4_3.cpp#include int main() int i=1,sum=0; do sum=sum+i; +i;

4、 while(i101); coutsum= sumendl; 程序1:#includeint main( ) int i, sum=0; cini; while(i=10) sum+=i; i+; coutsum=sumendl;程序2:#includeint main( ) int i, sum=0; cini; do sum+=i; i+; while(i=10); coutsum=sumendl;對比下列程序:例如,輸入一個整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。#include int main( ) int n, right_digit; cout n;cout The number in r

5、everse order is: ;do right_digit = n % 10;cout right_digit;n /= 10; while (n != 0); coutendl;運行結(jié)果:Enter the number: 365The number in reverse order is: 563114.3 for 語句一般形式:for(表達式1;表達式2;表達式3) 語句 可理解為:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 語句循環(huán)前先求解每次執(zhí)行完循環(huán)體后求解非0時執(zhí)行循環(huán)體循環(huán)變量賦初值循環(huán)條件?語句循環(huán)變量增值for語句的下一語句for (循環(huán)變量賦初值;循環(huán)條件;循

6、環(huán)變量增值) 語句真假134.3 for 語句例:求1加到100的和#include int main() int i=1,sum=0; for(;i101;+i) sum=sum+i; coutsum= sumendl; 144.3 for 語句 for(表達式1;表達式2;表達式3) 語句 表達式1可以省略。此時應(yīng)在for語句之前給循環(huán)變量賦初值。若省略表達式1,其后的分號不能省略。例如,求和運算: i=1; for ( ; i 100) break; 等價于: for (i=1;1 ;i+) sum+=i; if (i100) break; / break表示退出循環(huán) 164.3 for

7、 語句表達式3可以省略。但此時應(yīng)在循環(huán)體中讓循環(huán)變量遞進變化,以保證循環(huán)能正常結(jié)束。 例如,求和運算: for (i=1;i101; ) /分號不能省略 sum+=i; i+; 表達式1和表達式3都可以省略。例如,求和運算: i=1; for ( ; i 100) break; 表達式1,表達式2,表達式3都可以為任何表達式 for(i=1,sum=0;i101;+i) /表達式1是逗號表達式 sum+=i; for(i=1,sum=0;i101; sum+=i+); /語句是空語句表達式1可以是循環(huán)變量定義。 for(int i=1;i101;+i) sum+=i;例如,輸入一個整數(shù),求出它

8、的所有因子。運行結(jié)果1:Enter a positive integer: 36Number 36 Factors 1 2 3 4 6 9 12 18 36 運行結(jié)果2:Enter a positive integer: 7Number 7 Factors 1 7 #include int main( ) int n, k;cout n;cout Number n Factors ;for (k=1; k = n; k+)if (n % k = 0)cout k ; cout endl;20一般形式switch (表達式) case 常量表達式 1:語句1 case 常量表達式 2:語句2 c

9、ase 常量表達式 n:語句n default : 語句n+1 4.4 switch語句(多分支選擇語句)執(zhí)行順序以case中的常量表達式值為入口標號,由此開始順序執(zhí)行。因此,每個case分支最后應(yīng)該加break語句。每個常量表達式的值不能相同,次序不影響執(zhí)行結(jié)果??梢允嵌鄠€語句,但不必用 ??梢允钦?、字符型、枚舉型214.4 switch語句(多分支選擇語句)利用break語句可以跳出switch語句多個case可以共用一組執(zhí)行程序段, 例: case 1: case 7: case 9: a=a+b; couta=a; break; case a+p: case 100: max(a,b

10、); break; 即:符合1、7、9的情況,均執(zhí)行同一段語句;符合a+p和100,均執(zhí)行同一段語句例如,輸入一個06的整數(shù),轉(zhuǎn)換成星期輸出。#include int main(void) int day;cin day;switch (day) case 0:cout Sunday endl;break; case 1:cout Monday endl;break; case 2:cout Tuesday endl;break; case 3: cout Wednesday endl;break; case 4:cout Thursday endl;break; case 5:cout Fr

11、iday endl;break; case 6:cout Saturday endl;break; default: cout Day out of range Sunday . Saturday endl;break; /最后一個分支的 break語句可以省略 244.5 轉(zhuǎn)向語句break 語句作用: 中止switch語句的執(zhí)行,并跳出switch語句 從最近的封閉循環(huán)體中跳出,轉(zhuǎn)而執(zhí)行循環(huán)體的下一條語句注意:只能用于switch結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中! 254.5 轉(zhuǎn)向語句例如: for( ; ; ) for ( ; ; ) / if(i = 1) break; / a=1; /break調(diào)至

12、此處 / 264.5 轉(zhuǎn)向語句continue 語句作用:用在循環(huán)結(jié)構(gòu)中,用于結(jié)束本次循環(huán)注意:并不從循環(huán)體中跳出,除非已處于循環(huán)結(jié)束點 例: for (j=0; j100; +j) a=a+j*j; if(j=50) coutinue; / 如果j等于50就不執(zhí)行 /下面的語句,直接進行下一輪循環(huán) couta=a; continue與break的區(qū)別:284.5 轉(zhuǎn)向語句goto 語句一般形式: goto 語句標號;goto為無條件轉(zhuǎn)向語句,與if語句 一起使用可構(gòu)成循環(huán) 例:求1加到100的和 #include int main() int i=1,sum=0; loop:sum=sum+

13、i; +i; if(i101) goto loop; coutsum= sum; 應(yīng)該禁用goto語句(不符合結(jié)構(gòu)化原則)29打印數(shù)字金字塔 0 40 79 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 . . . . . . 1 2 3 8 9 8 3 2 1 循環(huán)結(jié)構(gòu)的嵌套#include#includeint main()int i,j;for(i=1;i=9;i+)coutsetw(40-3*(i-1)1;for(j=2;j=i;j+)coutsetw(3)=1;j-)coutsetw(3)j;coutendl; /end of for /end of main31循

14、環(huán)結(jié)構(gòu)的嵌套在屏幕上顯示如下圖案:* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *32循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)相互嵌套例如:讀入一系列整數(shù),統(tǒng)計出正整數(shù)個數(shù)i和負整數(shù)個數(shù)j,讀入0則結(jié)束。分析: 需要讀入一系列整數(shù),但是整數(shù)個數(shù)不定,要在每次讀入之后進行判斷,因此使用while循環(huán)最為合適。循環(huán)控制條件應(yīng)該是n != 0。由于要判斷數(shù)的正負并分別進行統(tǒng)計,所以需要在循環(huán)內(nèi)部

15、嵌入選擇結(jié)構(gòu)。#includeint main() int i=0, j=0, n; coutn; while( n!=0 ) if(n0) i+=1; if(nn; cout 正整數(shù)個數(shù): i 負整數(shù)個數(shù): jendl;344.6 過程應(yīng)用:求 程序設(shè)計方法有三個層次:(1)簡單的問題求解分析方法(過程化方法)。它適用于簡單、孤立的問題求解。一般定義23個函數(shù)便可解決。(2)結(jié)構(gòu)化程序設(shè)計方法。它適用于一個問題大小適中,能夠方便地分解成相對獨立的幾個功能模塊,從而用幾個程序文件分別描述并調(diào)試實現(xiàn)之。(3)面向?qū)ο蟪绦蛟O(shè)計方法。它面向求解一個用常規(guī)方法并不能簡單理清頭緒的問題。它將問題看作為包

16、含有若干個小對象的大對象,層層分解對象,研究里面的數(shù)據(jù)和行為。當一個問題分解成不同層次的對象結(jié)構(gòu)時,程序設(shè)計的描述也同時完成。這里介紹的是第一種方法。例如,用公式“/4=1-1/3+1/5-1/+”求的近似值,直到最后一項的絕對值小于108為止。分析:(1)的表示用double型。(2)先求/4,然后求。(3)分析數(shù)列的通項:數(shù)列的第1項是1,第2項是-1/3,第n項是(-1)n-1/(2*n-1)。第n項與第n-1項的關(guān)系為符號變一下,分母加2。/* ch4_4.cpp *#include #include #include int main( ) double s=0,x=1; /初始值

17、long k=1; int sign=1; while(fabs(x)1e-8) /項值在比較前要先求絕對值 s += x; k += 2; sign *= -1; x = sign/double(k); /強制轉(zhuǎn)換使x得到浮點數(shù)值 s *= 4; /值 cout the pi is /輸出 setiosflags(ios:fixed) setprecision(8) s endl;運行結(jié)果為: the pi is 3.14159263/*/* ch4_5.cpp */*#include #include int main() double s=0,x=1; /初始值 for(int n=1;

18、 fabs(x)1e-8; n+,x*=(-1.0)*(2*n-3)/(2*n-1) s += x; s*=4; /值 cout the pi is s endl; /輸出運行結(jié)果為: the pi is 3.14159384.7 過程應(yīng)用:判明素數(shù)例:給定一個整數(shù)m,判斷其是否為素數(shù)。分析:m是素數(shù)的條件是不能被2,3,m-1整除。/* ch4_6.cpp *#include int main() /輸入 long m; cout m;394.7 過程應(yīng)用:判明素數(shù) /處理 for(int i=2; im; i+) /找m的因數(shù) if(m%i=0) break; /輸出 if(m=i) /判斷m是否被小于m的數(shù)整除 cout m is prime.n; else cout m isnt prime.n;404.7 過程應(yīng)用:判明素數(shù) 改進: 如果m不是素數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論