算法與控制語(yǔ)句_第1頁(yè)
算法與控制語(yǔ)句_第2頁(yè)
算法與控制語(yǔ)句_第3頁(yè)
算法與控制語(yǔ)句_第4頁(yè)
算法與控制語(yǔ)句_第5頁(yè)
已閱讀5頁(yè),還剩90頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1第第3 3章章 算法與控制語(yǔ)句算法與控制語(yǔ)句3.1 算法初步 3.2 C語(yǔ)言的標(biāo)準(zhǔn)輸入和輸出 3.3 條件語(yǔ)句 3.4 多分支語(yǔ)句 3.5 循環(huán)語(yǔ)句3.6 轉(zhuǎn)移語(yǔ)句 3.7 綜合應(yīng)用 語(yǔ)言程序設(shè)計(jì)教學(xué)目標(biāo)v初步理解算法的概念和特點(diǎn)v掌握常用問(wèn)題的算法v掌握用流程圖表示算法v了解結(jié)構(gòu)化程序設(shè)計(jì)的方法v掌握格式化輸入輸出函數(shù)的用法v掌握分支結(jié)構(gòu)的程序設(shè)計(jì),理解分支語(yǔ)句的嵌套v掌握循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)及其相互嵌套v理解break和continue的控制v能夠編寫(xiě)較復(fù)雜的程序語(yǔ)言程序設(shè)計(jì)3.1 算法初步v算法的概念 v算法的表示 v算法舉例 v三種基本結(jié)構(gòu) 語(yǔ)言程序設(shè)計(jì)算法的概念v算法:解決問(wèn)題的方法

2、和步驟 v沃斯公式:數(shù)據(jù)結(jié)構(gòu)+算法=程序v改進(jìn)的沃斯公式:數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+開(kāi)發(fā)工具=程序語(yǔ)言程序設(shè)計(jì)算法的表示 v自然語(yǔ)言v傳統(tǒng)流程圖vN-S流程圖v偽代碼v計(jì)算機(jī)語(yǔ)言 語(yǔ)言程序設(shè)計(jì)傳統(tǒng)流程圖輸輸 入入 輸輸 出出 框框起起 止止 框框處處 理理 框框判判 斷斷 框框流流 程程 走走 向向連連 接接 點(diǎn)點(diǎn)語(yǔ)言程序設(shè)計(jì)計(jì)算機(jī)語(yǔ)言#includeint main()int i,n,s=0;scanf(%d,&n);i=1;while(ibmax=amax=b輸輸出出max結(jié)結(jié)束束真真假假語(yǔ)言程序設(shè)計(jì)例3.2:求n!開(kāi)始開(kāi)始i=1,p=1輸入輸入ni=np=p*ii=i+1輸出

3、輸出p結(jié)束結(jié)束真真假假語(yǔ)言程序設(shè)計(jì)例3.3:判斷某一年是否為閏年。開(kāi)始開(kāi)始輸入年份輸入年份yy%4=0&y%100!=0|y%400=0是閏年是閏年不是閏年不是閏年結(jié)束結(jié)束真真假假語(yǔ)言程序設(shè)計(jì)例3.4:輸入一個(gè)正整數(shù),將它反位輸出(如輸入12345,輸出54321)。開(kāi)開(kāi) 始始輸輸 入入 正正 整整 數(shù)數(shù) nn!=0m =n% 10輸輸 出出 m結(jié)結(jié) 束束n=n/10真真假假語(yǔ)言程序設(shè)計(jì)例3.5:判斷一個(gè)整數(shù)n是否為素?cái)?shù) 開(kāi)始開(kāi)始輸入整數(shù)輸入整數(shù)nm=2n%m!=0m=m+1m b交交 換換 a , ba c交交 換換 a , cb c交交 換換 b , c輸輸 出出 a ,b ,c結(jié)

4、結(jié) 束束真真真真真真假假假假假假語(yǔ)言程序設(shè)計(jì)算法的特點(diǎn)有窮性確定性有零個(gè)或多個(gè)輸入有一個(gè)或多個(gè)輸出可行性語(yǔ)言程序設(shè)計(jì)三種基本結(jié)構(gòu) v順序結(jié)構(gòu):根據(jù)操作的先后順序執(zhí)行 AB語(yǔ)言程序設(shè)計(jì)v選擇(分支)結(jié)構(gòu):根據(jù)某個(gè)給定條件進(jìn)行判斷,條件為真或假時(shí)分別執(zhí)行不同的操作 AB條件條件真真假假A條件條件真真假假語(yǔ)言程序設(shè)計(jì)v循環(huán)結(jié)構(gòu):根據(jù)條件的真或假反復(fù)執(zhí)行某些操作 條件條件A真真假假條件條件A真真假假語(yǔ)言程序設(shè)計(jì)三種基本結(jié)構(gòu)的特點(diǎn)v只有一個(gè)入口和一個(gè)出口v結(jié)構(gòu)內(nèi)的每一部分都有可能被執(zhí)行到v結(jié)構(gòu)內(nèi)不存在“死循環(huán)”語(yǔ)言程序設(shè)計(jì)3.2 C語(yǔ)言的標(biāo)準(zhǔn)輸入和輸出3.2.1 格式化輸入輸出3.2.2 其它輸入輸出3

5、.2.3 C語(yǔ)言語(yǔ)句3.2.4 順序結(jié)構(gòu)程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)1. C語(yǔ)句概述vC語(yǔ)句 以“;”作分隔符,編譯后產(chǎn)生機(jī)器指令。vC語(yǔ)句分類(lèi) 表達(dá)式語(yǔ)句: 表達(dá)式加分號(hào)構(gòu)成。 空語(yǔ)句: ; 程序控制語(yǔ)句(9種) 復(fù)合語(yǔ)句: 用 括起來(lái)的一組語(yǔ)句例: total = total + limit ; a = 3 ; func( ); printf( “Hello,world!n” );if( ) else switchfor( ) while( ) do while( ) continue break goto return分支循環(huán)輔助控制例: z=x+y; t=z/100; printf(“%f”,

6、t); 注意: “”后不加分號(hào)語(yǔ)言程序設(shè)計(jì)2. 賦值語(yǔ)句 v構(gòu)成: 由賦值表達(dá)式加上一個(gè)分號(hào)構(gòu)成v注意事項(xiàng) “”是運(yùn)算符 賦值表達(dá)式可以包括在其它表達(dá)式之中例: if (a=b)0) t=a;賦值表達(dá)式賦值語(yǔ)句語(yǔ)言程序設(shè)計(jì)3. 數(shù)據(jù)輸入輸出的概念及在C語(yǔ)言中的實(shí)現(xiàn)v數(shù)據(jù)輸入輸出的概念vC程序中輸入輸出是如何實(shí)現(xiàn)的? C語(yǔ)言無(wú)I/O語(yǔ)句,I/O操作由函數(shù)實(shí)現(xiàn) #include 語(yǔ)言程序設(shè)計(jì)4. 單個(gè)字符的輸入輸出v字符輸出函數(shù)putcharv字符輸入函數(shù)getchar語(yǔ)言程序設(shè)計(jì)v字符輸出函數(shù)putchar 格式: putchar( c ) 參數(shù): c為字符常量、變量或表達(dá)式 功能: 把字符c輸

7、出到顯示器上 返值: 正常,為顯示的代碼值;出錯(cuò),為EOF(-1)/* This is an example of putchar() */#include int main() int c; char a; c=65; a=B; putchar(c); putchar(n); putchar(a); return 0;語(yǔ)言程序設(shè)計(jì)v字符輸入函數(shù)getchar 格式: getchar( ) 功能: 從鍵盤(pán)讀一個(gè)字符 返值: 正常,返回讀取的代碼值;出錯(cuò),返回EOF(-1)/* This is an example of getchar() */#include int main() char

8、c; c = getchar(); putchar(c); putchar(n); return 0;語(yǔ)言程序設(shè)計(jì)5. 格式輸入與輸出v格式輸出函數(shù)printfv格式輸入函數(shù)scanf語(yǔ)言程序設(shè)計(jì)(1)格式輸出函數(shù) 格式: printf(格式控制串,輸出表) 功能: 按指定格式向顯示器輸出數(shù)據(jù) 返值: 正常,返回輸出字節(jié)數(shù);出錯(cuò),返回EOF(-1) 說(shuō)明:v 輸出表 要輸出的數(shù)據(jù)(可以沒(méi)有,多個(gè)時(shí)以“,”分隔)v 格式控制串包含兩種信息: 格式說(shuō)明 普通字符或轉(zhuǎn)義字符%修飾符格式字符printf(“Hello,World! n ”);語(yǔ)言程序設(shè)計(jì)格式字符格式字符含義舉例結(jié)果c按字符輸出char

9、 a=65;printf(“%c”,a);Ad按十進(jìn)制整數(shù)輸出int a=567;printf ( “%d”,a);567u按十進(jìn)制無(wú)符號(hào)整數(shù)輸出int a=567;printf(“%u”,a);567f按浮點(diǎn)數(shù)輸出float a=567.789;printf(“%f”,a);567.789000E 或e按指數(shù)形式輸出double a=567.789;printf(“%e”,a);5.677890e+02o按八進(jìn)制輸出int a=65;printf(“%o”,a);101X 或x按十六進(jìn)制輸出int a=255;printf(“%x”,a);ffs按字符串輸出printf(“%s”,“ABC”

10、);ABCg按e、f格式中較短的一種輸出float a=567.789;printf(“%g”,a);567.789確定數(shù)據(jù)輸出的格式 語(yǔ)言程序設(shè)計(jì)修飾符修飾符修飾符含義M輸出數(shù)據(jù)域?qū)?數(shù)據(jù)長(zhǎng)度m,左補(bǔ)空格;否則按實(shí)際輸出.n對(duì)實(shí)數(shù),指定小數(shù)點(diǎn)后位數(shù)(四舍五入)對(duì)字符串,指定實(shí)際輸出位數(shù)-輸出數(shù)據(jù)在域內(nèi)左對(duì)齊(缺省右對(duì)齊)+指定在有符號(hào)數(shù)的正數(shù)前顯示正號(hào)(+)0輸出數(shù)值時(shí)指定左面不使用的空位置自動(dòng)填0#在八進(jìn)制和十六進(jìn)制數(shù)前顯示前導(dǎo)0,0 xl在d,o,x,u前,指定輸出精度為long型在e,f,g前,指定輸出精度為double型確定數(shù)據(jù)輸出的寬度、精度、小數(shù)位數(shù)、對(duì)齊方式 語(yǔ)言程序設(shè)計(jì)#in

11、clude int main() int a=3; float b=1.23; char c=a; printf(the result is:n); printf(%dn,a); printf(%fn,b); printf(%cn,c); printf(%s,ok!); return 0;例1:printf(%dn%fn%cn%s,a,b,c,ok!);語(yǔ)言程序設(shè)計(jì)#include int main() int a=3; float b=1.23; printf(%d %fn,a,b); printf(a=%d b=%fn,a,b); printf(a=%d,b=%fn,a,b); print

12、f(a=%6d,b=%6.1fn,a,b); printf(a=%-6d,b=%-6.1fn,a,b); return 0; 例2:語(yǔ)言程序設(shè)計(jì)#include int main()int a=97;char b=b;printf(a=%d,a=%cn,a,a);printf(b=%d,b=%cn,b,b); return 0; 例3:語(yǔ)言程序設(shè)計(jì) 格式輸出函數(shù)使用注意事項(xiàng):v 格式字符要用小寫(xiě)v 格式字符與輸出項(xiàng)個(gè)數(shù)應(yīng)相同,按先后順序一一對(duì)應(yīng)v 輸出轉(zhuǎn)換:格式字符與輸出項(xiàng)類(lèi)型不一致,自動(dòng)按指定格式輸出語(yǔ)言程序設(shè)計(jì)(2)格式輸入函數(shù) 格式: scanf(格式控制串,地址表) 功能: 按指定格式

13、從鍵盤(pán)讀入數(shù)據(jù),存入地址表指定的存儲(chǔ)單元中,并按回車(chē)鍵結(jié)束 返值: 正常,返回輸入數(shù)據(jù)個(gè)數(shù) 說(shuō)明:v 地址表 變量的地址,常用取地址運(yùn)算符&v 格式控制串 含義同printf函數(shù)例1: scanf(%d,&a); 輸入:10 則 a=10例2: scanf(%x,&a); 輸入:10 則 a=16語(yǔ)言程序設(shè)計(jì)l修飾符功 能hm*用于d,o,x前,指定輸入為short型整數(shù)用于d,o,x前,指定輸入為long型整數(shù)用于e,f前,指定輸入為double型實(shí)數(shù)指定輸入數(shù)據(jù)寬度,遇空格或不可轉(zhuǎn)換字符則結(jié)束抑制符,指定輸入項(xiàng)讀入后不賦給變量例 scanf(“%4d%2d%2d”,

14、&yy,&mm,&dd); 輸入 19991015 則1999yy, 10 mm, 15 dd例 scanf(“%3d%*4d%f”,&k,&f); 輸入 12345678765.43 則123k, 8765.43f例 scanf(“%2d%*3d%2d”,&a,&b); 輸入 1234567 則12a, 67b例 scanf(“%3c%2c”,&c1,&c2); 輸入 abcde 則ac1, d c2語(yǔ)言程序設(shè)計(jì) 格式輸入函數(shù)使用注意事項(xiàng): 關(guān)于輸入數(shù)據(jù)時(shí)的分隔符 默認(rèn):以空格、TAB鍵、回車(chē)鍵作為分隔符 以格式控制串中

15、指定的字符作為分隔符2. 關(guān)于格式符%c用%c格式符時(shí),空格和轉(zhuǎn)義字符作為有效字符輸入實(shí)例實(shí)例3. 輸入數(shù)據(jù)時(shí),遇以下情況時(shí)認(rèn)為該數(shù)據(jù)結(jié)束 遇空格、TAB鍵、回車(chē)鍵 按指定的寬度結(jié)束 遇非法輸入實(shí)例next part語(yǔ)言程序設(shè)計(jì) int a,b,c; scanf(%d%d%d,&a,&b,&c); int a,b,c; scanf(%d,%d,%d,&a,&b,&c); int a,b,c; scanf(a=%d,b=%d,c=%d,&a,&b,&c);輸入:5 6 9 或者:5 6 9 返回輸入:5,6,9 輸入:a=5

16、,b=6,c=9 語(yǔ)言程序設(shè)計(jì) char ch1,ch2,ch3; scanf(%c%c%c,&ch1,&ch2,&ch3);正確輸入方式:abc 分析: 若這樣輸入: 則: 若這樣輸入: 則:a b c abch1為a,ch2為 ,ch3為bch1為a,ch2為換行符,ch3為b返回語(yǔ)言程序設(shè)計(jì) int a; scanf(%3d,&a); int a; char b; float c; scanf(%d%c%f,&a,&b,&c);則: a= ?若輸入: 12345 則: a=? b= ? c=?若輸入:123a 123o.26 a=1

17、23 b= a c=123a= 123返回語(yǔ)言程序設(shè)計(jì)6. 程序舉例例1: 輸入三角形邊長(zhǎng),求面積例2: 從鍵盤(pán)輸入大寫(xiě)字母,用小寫(xiě)字母輸出gogonext part語(yǔ)言程序設(shè)計(jì)例1: 輸入三角形邊長(zhǎng),求面積1()2() () ()sabcareassasbsc預(yù)備知識(shí):(1) 輸入邊長(zhǎng)a,b,c(2) 根據(jù)數(shù)學(xué)公式計(jì)算s,area(3) 輸出面積area用c語(yǔ)言編寫(xiě)的程序:分析:語(yǔ)言程序設(shè)計(jì)#include #include int main() float a,b,c,s,area; scanf(%f,%f,%f,&a,&b,&c); s=1.0/2*(a+b+c)

18、; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn,a,b,c,s); printf(area=%7.2fn,area); return 0;文件包含預(yù)處理命令變量定義輸入數(shù)據(jù)輸出數(shù)據(jù)?return 語(yǔ)言程序設(shè)計(jì)例2: 從鍵盤(pán)輸入大寫(xiě)字母,用小寫(xiě)字母輸出預(yù)備知識(shí):分析:(1) 輸入大寫(xiě)字母(2) 把大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母(3) 輸出小寫(xiě)字母用c語(yǔ)言編寫(xiě)的程序:大寫(xiě)字母的ASC值比小寫(xiě)字母的ASC值少32語(yǔ)言程序設(shè)計(jì)return #include void main() char c1,c2; c

19、1=getchar(); printf(%c,%dn,c1,c1); c2=c1+32; printf(%c,%dn,c2,c2);語(yǔ)言程序設(shè)計(jì)3.3 條件語(yǔ)句3.3.1 if語(yǔ)句3.3.2 if else 語(yǔ)句3.3.3 if else if 語(yǔ)句3.3.4 條件語(yǔ)句的嵌套3.3.5 條件語(yǔ)句的應(yīng)用語(yǔ)言程序設(shè)計(jì)if語(yǔ)句vif語(yǔ)句的三種形式 if (表達(dá)式) 語(yǔ)句 if (表達(dá)式) 語(yǔ)句1 else 語(yǔ)句2 if (表達(dá)式1) 語(yǔ)句1 else if (表達(dá)式2) 語(yǔ)句2 else if (表達(dá)式3) 語(yǔ)句3 else if (表達(dá)式m) 語(yǔ)句m else 語(yǔ)句nexampleexprstat

20、ement非0=0exprstatement1statement2非0=0expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0語(yǔ)言程序設(shè)計(jì)if (xy)printf(%d,x);if (xy)max=x;elsemax=y;if (salary1000) index=0.4;else if (salary800) index=0.3;else if (salary600) index=0.2;else if (salary400) index=0.1;else index=0;語(yǔ)言程序設(shè)計(jì)v關(guān)于if語(yǔ)句的幾點(diǎn)說(shuō)明 if后

21、面的表達(dá)式類(lèi)型任意 在三種形式的if語(yǔ)句中,語(yǔ)句i也可以是復(fù)合語(yǔ)句或嵌套if語(yǔ)句。 注意if與else的配對(duì)關(guān)系: else總是與它上面的最近的未配對(duì)的if配對(duì)。vif語(yǔ)句編程實(shí)例exampleexampleexampleexamplenext part語(yǔ)言程序設(shè)計(jì)if(a=b&x=y) printf(a=b,x=y);if(3) printf(OK);if(a) printf(%d,a);return語(yǔ)言程序設(shè)計(jì)例1: if (x0 & y0) printf(“x is a positive number.”); printf(“y is a positive number.

22、”); else if (x=0) printf(“x is not a positive number); else printf(“y is not a positive number.”); 語(yǔ)言程序設(shè)計(jì)例2: 考慮下面程序的輸出結(jié)果: #include void main()int x,y;scanf(%d,%d,&x,&y);if(xy) x=y; y=x;else x+; y+;printf(%d,%dn,x,y);輸入:1,2 輸入:2,1 Compile Error!return語(yǔ)言程序設(shè)計(jì)例: if (a=b) if (b=c) printf(“a=b=c”)

23、; else printf(“a!=b”);修改: if (a=b) if (b=c) printf(“a=b=c”); else printf(“a!=b”);實(shí)現(xiàn)if else 正確配對(duì)方法: 加 return語(yǔ)言程序設(shè)計(jì)例1: 求一個(gè)整數(shù)的絕對(duì)值#include int main() int x,y; printf(Enter an integer:); scanf(%d,&x); y=x; if (yabsolute value:%dn,x,y); return 0;語(yǔ)言程序設(shè)計(jì)例2: 輸入兩個(gè)整數(shù)并判斷兩個(gè)數(shù)是否相等#include int main() int a,b; p

24、rintf(Enter integer a and b:); scanf(%d,%d,&a,&b); if (a=b) printf(a=bn); else printf(a!=bn); return 0;語(yǔ)言程序設(shè)計(jì)例3: 將3個(gè)整數(shù)按從小到大的順序排列#includeint main() int a,b,c,t; scanf(%a %b %c,&a,&b,&c); if (ab) t=a; a=b; b=t; if (ac) t=a; a=c; c=t; if (bc) t=b; b=c; c=t; printf(%d,%d,%dn,a,b,c);

25、return 0;找到最小數(shù)?算法語(yǔ)言程序設(shè)計(jì)return例4: 寫(xiě)出下面程序的執(zhí)行結(jié)果#includeint main() int x=100,a=10,b=20; int v1=5,v2=0; if (a=60n); break;case D: printf(score60n); break;default: printf(errorn);next part語(yǔ)言程序設(shè)計(jì)#include int main() int score;scanf(%d,&score);switch(score) case 5: printf(Excellent!);case 4: printf(Good!

26、);case 3: printf(Pass!);case 2: printf(Fail!); default: printf(data error!); return 0; break; break; break;break;語(yǔ)言程序設(shè)計(jì)#include int main() int x=1,y=0,a=0,b=0;switch(x)case 1: switch(y)case 0: a+; break;case 1: b+; break;case 2: a+; b+; break;case 3: a+;b+;printf(a=%d,b=%dn,a,b); return 0;a=1a=2 b=1

27、return語(yǔ)言程序設(shè)計(jì)switch 實(shí)例1例3.25 從鍵盤(pán)上輸入年份和月份,求該月有多少天?分析:v一年12個(gè)月,1、3、5、7、8、10、12月每月31天;4、6、9、11月份每月30天v2月份閏年是29天,非閏年是28天v判斷閏年的標(biāo)準(zhǔn)v能被4整除不能被100整除的年份或者能被400整除的年份v(year%4=0)&(year%100!=0)|(year%400=0)1.或!(year%4)&(year%100)|!(year%400)語(yǔ)言程序設(shè)計(jì)switch 實(shí)例2v例3.24:已知銀行整存整取存款不同期限的年利率分別為: 2.25% 期限1年 2.79% 期限2年年

28、息= 3.33% 期限3年 3.60% 期限5年 4.14% 期限8年 要求輸入本金和期限,求到時(shí)候能從銀行得到的利息與本金的合計(jì)。分析:總金額=本金*年利率*存期+本金語(yǔ)言程序設(shè)計(jì)3.5-7 循環(huán)語(yǔ)句和轉(zhuǎn)移語(yǔ)句3.5.1 while 循環(huán)語(yǔ)句3.5.2 dowhile循環(huán)語(yǔ)句3.5.3 for循環(huán)語(yǔ)句3.5.4 循環(huán)語(yǔ)句的嵌套3.6.2 break和continue語(yǔ)句語(yǔ)言程序設(shè)計(jì)1. while語(yǔ)句語(yǔ)法形式:(3) 特點(diǎn):(2) 執(zhí)行流程:while (表達(dá)式) 語(yǔ)句可以是一條語(yǔ)句, 也可以是復(fù)合語(yǔ)句表達(dá)式循環(huán)體假(0)真(非0)先判斷,后執(zhí)行;循環(huán)體被執(zhí)行的次數(shù)有可能為0次。next p

29、art語(yǔ)言程序設(shè)計(jì) 使用while語(yǔ)句編程實(shí)例1:計(jì)算整數(shù)1n的求和2. 用c語(yǔ)言實(shí)現(xiàn):#include int main() int sum,i,n; scanf(%d,&n); i=1; sum=0; while(i=n) sum=sum+i;i=i+1; printf(sum=%dn,sum); return 0;1. 算法:輸入ni=1sum=0i= nsum=sum+ii=i+1輸出sum開(kāi) 始結(jié) 束真假語(yǔ)言程序設(shè)計(jì) 使用while語(yǔ)句編程實(shí)例2:計(jì)算n的階乘1. 算法:#include int main() int product,i,n; scanf(%d,&n)

30、; i=1; product=1; while (i=n) product=product*i;i=i+1; printf(product=%dn,product); return 0;2. 用c語(yǔ)言實(shí)現(xiàn):product=product*ii=i+1輸入ni=1product=1i= n輸出product開(kāi) 始結(jié) 束真假return語(yǔ)言程序設(shè)計(jì)2. dowhile語(yǔ)句語(yǔ)法形式:(3) 特點(diǎn):(2) 執(zhí)行流程: do 語(yǔ)句 while (表達(dá)式);表達(dá)式循環(huán)體假(0)真(非0)先執(zhí)行循環(huán)體,再判斷;循環(huán)體至少被執(zhí)行1次。不可少!next part語(yǔ)言程序設(shè)計(jì) 使用dowhile語(yǔ)句編程實(shí)例1:

31、計(jì)算整數(shù)1n的求和2. 用c語(yǔ)言實(shí)現(xiàn):#include int main()int sum,i,n;scanf(%d,&n);i=1;sum=0;do sum=sum+i; i=i+1;while (i=n);printf(sum=%dn,sum); return 0;1. 算法:輸入ni=1sum=0i= nsum=sum+ii=i+1輸出sum開(kāi) 始結(jié) 束真假語(yǔ)言程序設(shè)計(jì) 使用dowhile語(yǔ)句編程實(shí)例2: 計(jì)算n的階乘#include int main() int product,i,n; scanf(%d,&n); i=1; product=1; do product=

32、product*i;i=i+1; while (i=n); printf(product=%dn,product); return 0;2. 用c語(yǔ)言實(shí)現(xiàn):1. 算法:product=product*ii=i+1輸入ni=1product=1i= n輸出product開(kāi) 始結(jié) 束真假return語(yǔ)言程序設(shè)計(jì) 比較1: while語(yǔ)句與dowhile語(yǔ)句(1) 從執(zhí)行過(guò)程看:(2) 從循環(huán)體執(zhí)行次數(shù)看: while語(yǔ)句: 先判斷表達(dá)式,后執(zhí)行循環(huán)體 dowhile語(yǔ)句: 先執(zhí)行循環(huán)體,后判斷表達(dá)式 while語(yǔ)句: 循環(huán)體執(zhí)行次數(shù)可能為0 dowhile語(yǔ)句: 循環(huán)體至少會(huì)被執(zhí)行1次(3) 同一

33、個(gè)問(wèn)題既可以用while語(yǔ)句實(shí)現(xiàn),也可以用dowhile語(yǔ)句實(shí)現(xiàn) 注意:初始值和循環(huán)條件的設(shè)置!實(shí)例分析next part語(yǔ)言程序設(shè)計(jì)實(shí)例分析:計(jì)算i,i+1,i+2,100的和(i為自然數(shù),通過(guò)程序輸入)1. 用while語(yǔ)句實(shí)現(xiàn)2. 用dowhile語(yǔ)句實(shí)現(xiàn)#include int main()int i,sum;scanf(%d,&i);sum=0;while(i=100)sum=sum+i;i=i+1;printf(sum=%dn,sum); return 0;#include int main()int i,sum;scanf(%d,&i);sum=0;dosum=s

34、um+i;i=i+1;while(i=100);printf(sum=%dn,sum); return 0;return語(yǔ)言程序設(shè)計(jì)3. for語(yǔ)句語(yǔ)法形式:(3) 理解:(2) 執(zhí)行流程:for (表達(dá)式1;表達(dá)式2;表達(dá)式3) 語(yǔ)句for (循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 語(yǔ)句表達(dá)式2語(yǔ) 句假真表達(dá)式1表達(dá)式3next part語(yǔ)言程序設(shè)計(jì) 使用for語(yǔ)句編程實(shí)例1: 計(jì)算整數(shù)1n的求和1. 算法:2. 用c語(yǔ)言實(shí)現(xiàn):#include int main()int i,sum,n;scanf(%d,&n);sum=0;for(i=1;i=n;i+) sum=sum+i;pr

35、intf(sum=%dn,sum); return 0;輸入nsum=0i=0i= nsum=sum+ii=i+1輸出sum開(kāi) 始結(jié) 束真假語(yǔ)言程序設(shè)計(jì) 關(guān)于for語(yǔ)句形式靈活的實(shí)例說(shuō)明:1. #include int main()int i,sum,n;scanf(%d,&n);sum=0;for(i=1;i=n;i+) sum=sum+i;printf(sum=%dn,sum); return 0;#include int main()int i,sum,n;scanf(%d,&n);sum=0; i=1;for(;i=n;i+) sum=sum+i;printf(sum=

36、%dn,sum); return 0;語(yǔ)言程序設(shè)計(jì) 關(guān)于for語(yǔ)句形式靈活的實(shí)例說(shuō)明:2. #include int main()int i,sum,n;scanf(%d,&n);sum=0;for(i=1;i=n;i+) sum=sum+i;printf(sum=%dn,sum); return 0;#include int main()int i,sum,n;scanf(%d,&n);sum=0; for(i=1;i=n;) sum=sum+i; i=i+1; printf(sum=%dn,sum); return 0;語(yǔ)言程序設(shè)計(jì) 關(guān)于for語(yǔ)句形式靈活的實(shí)例說(shuō)明:3.

37、#include int main()int i,sum,n;scanf(%d,&n);sum=0;for(i=1;i=n;i+) sum=sum+i;printf(sum=%dn,sum); return 0;#include int main()int i,sum,n;scanf(%d,&n);for(sum=0,i=1;i=n;i+) sum=sum+i;printf(sum=%dn,sum); return 0;return語(yǔ)言程序設(shè)計(jì) 比較2: while語(yǔ)句、dowhile語(yǔ)句、for語(yǔ)句while (表達(dá)式) 語(yǔ)句 do 語(yǔ)句 while (表達(dá)式);for (循

38、環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 語(yǔ)句next part語(yǔ)言程序設(shè)計(jì)4. 循環(huán)的嵌套while (表達(dá)式) 語(yǔ)句 do 語(yǔ)句 while (表達(dá)式);for (循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 語(yǔ)句語(yǔ)句內(nèi)又包含有循環(huán)結(jié)構(gòu)(1) 什么是循環(huán)的嵌套?(2) 循環(huán)的嵌套的表現(xiàn)形式:next part語(yǔ)言程序設(shè)計(jì) while() while() .do do while( ); .while( );while() do while( ); .for( ; ;) do while(); while() .(3) 有關(guān)循環(huán)的嵌套的說(shuō)明: 三種循環(huán)可相互嵌套,層數(shù)不限 注意嵌套循環(huán)的執(zhí)行流程實(shí)

39、例語(yǔ)言程序設(shè)計(jì) 循環(huán)嵌套編程實(shí)例: 計(jì)算1!+2!+10!#include int main()int i,j,i_product,sum;sum=0;for(i=1;i=10;i+)i_product=1;for(j=1;j=i;j+)i_product=i_product*j;sum=sum+i_product;printf(1!+2!+.+10!=%dn,sum); return 0;return語(yǔ)言程序設(shè)計(jì)5. break語(yǔ)句和continue語(yǔ)句next part(1) break語(yǔ)句(2) continue語(yǔ)句 功能: 功能: 使用場(chǎng)合: 使用場(chǎng)合: 在循環(huán)語(yǔ)句中: 結(jié)束當(dāng)層整個(gè)循

40、環(huán)體 在switch語(yǔ)句中: 終止switch語(yǔ)句的執(zhí)行只能用在循環(huán)語(yǔ)句或switch語(yǔ)句中只能用在循環(huán)語(yǔ)句中結(jié)束本次循環(huán) 語(yǔ)言程序設(shè)計(jì)(3) 注意事項(xiàng): 在循環(huán)語(yǔ)句中: break語(yǔ)句用于結(jié)束整個(gè)循環(huán)體 continue語(yǔ)句用于結(jié)束本次循環(huán) 在嵌套循環(huán)結(jié)構(gòu)中: break語(yǔ)句和continue語(yǔ)句功能都 是對(duì)該語(yǔ)句所在的循環(huán)結(jié)構(gòu)而言。實(shí)例分析返回本節(jié)語(yǔ)言程序設(shè)計(jì) break語(yǔ)句使用實(shí)例: 計(jì)算1+2+3+,直到和超過(guò)100即停止相加#include int main() int i,sum; sum=0; for(i=1;i+) sum=sum+i;if(sum100)break; printf(i= %d,sum= %dn,i,sum); printf(i= %d,sum= %dn,i-1,sum-i); return 0;運(yùn)行結(jié)果:語(yǔ)言程序設(shè)計(jì) continue語(yǔ)句使用實(shí)例: 計(jì)算1100之間非3的倍數(shù)的所有奇數(shù)之和#include int main()int i,sum;sum=0;for(i=1;i=3)1534233185537721389610321144987如:語(yǔ)言程序設(shè)計(jì)求解本題的算法:求Fibonacci數(shù)列前40個(gè)數(shù)(教材P125)f1=1,f2=1for i=1 to 2

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論