版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)廣東海洋大學(xué)信息學(xué)院程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)第五章 程序控制結(jié)構(gòu) 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)3基本語(yǔ)句nC語(yǔ)言程序設(shè)計(jì)是由函數(shù)構(gòu)成每個(gè)函數(shù)完成的功能則是通過(guò)由一條條語(yǔ)句實(shí)現(xiàn)的nC語(yǔ)句分為三類 基本語(yǔ)句 復(fù)合語(yǔ)句 程序控制語(yǔ)句程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)4基本語(yǔ)句n聲明語(yǔ)句功能n定義變量的名稱和數(shù)據(jù)類型,為C編譯系統(tǒng)給該變量分配存儲(chǔ)空間提供依據(jù)格式: 變量表;n基本數(shù)據(jù)類型,例如:int、float、charn變量表:由一個(gè)或多個(gè)變量組成,用逗號(hào)作為分隔符。n例: int a,b,c; float i,j,k;n提示C程序中所有變量聲明語(yǔ)句應(yīng)放在函數(shù)的開(kāi)頭程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)5基本語(yǔ)
2、句n表達(dá)式語(yǔ)句在表達(dá)式后面加上一個(gè)分號(hào)“;”就構(gòu)成了一個(gè)表達(dá)式語(yǔ)句格式: a=b*2; /*賦值運(yùn)算表達(dá)式語(yǔ)句*/ +j; /*前綴運(yùn)算表達(dá)式語(yǔ)句*/ x+y; /*x+y;是算術(shù)表達(dá)式語(yǔ)句*/ 提示n表達(dá)式語(yǔ)句和表達(dá)式的區(qū)別在于表達(dá)式代表的是一個(gè)數(shù)值,表達(dá)式語(yǔ)句代表的是一個(gè)動(dòng)作特征程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)6基本語(yǔ)句n函數(shù)調(diào)用語(yǔ)句n函數(shù)是構(gòu)成C 程序的基本功能單位。函數(shù)可以出現(xiàn)在表達(dá)式中參與計(jì)算,還可以通過(guò)調(diào)用語(yǔ)句獨(dú)立完成某功能。n語(yǔ)句格式 函數(shù)名(參數(shù));n例如 printf(“hello!n”);程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)7基本語(yǔ)句n空語(yǔ)句由一個(gè)分號(hào);組成n空語(yǔ)句是表達(dá)式語(yǔ)句的一種特例格式:n它
3、表示什么操作也不做。從語(yǔ)法上講,它的確是一條語(yǔ)句。在程序設(shè)計(jì)中,若某處從語(yǔ)法上需要一條語(yǔ)句,而實(shí)際上不需要執(zhí)行任何操作時(shí)就可以使用它。例如,在設(shè)計(jì)循環(huán)結(jié)構(gòu)時(shí),有時(shí)用到空語(yǔ)句。 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)8基本語(yǔ)句n復(fù)合語(yǔ)句復(fù)合語(yǔ)句用一對(duì)大括號(hào)括起一條或多條語(yǔ)句n無(wú)論有多少語(yǔ)句,都只被看成一條語(yǔ)句例如 t=a;a=b;b=t; a=10; printf( “%d” ,a ); 執(zhí)行復(fù)合語(yǔ)句實(shí)際是執(zhí)行該復(fù)合語(yǔ)句一對(duì)大括號(hào)中所有語(yǔ)句程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)9順序結(jié)構(gòu)n順序結(jié)構(gòu)是一組按書(shū)寫(xiě)順序執(zhí)行的語(yǔ)句結(jié)構(gòu)是C語(yǔ)言中最簡(jiǎn)單、最基本的一種結(jié)構(gòu)是進(jìn)行復(fù)雜程序設(shè)計(jì)的基礎(chǔ)C語(yǔ)言組成順序結(jié)構(gòu)的主要語(yǔ)句n聲明語(yǔ)句n賦值
4、語(yǔ)句n輸入/輸出函數(shù)調(diào)用語(yǔ)句ABab圖圖5.1 順序結(jié)構(gòu)示意圖順序結(jié)構(gòu)示意圖程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)10【例【例1 1】 編寫(xiě)程序:輸入兩個(gè)整數(shù)編寫(xiě)程序:輸入兩個(gè)整數(shù)a a和和b(b(設(shè)設(shè)a=100,b=17)a=100,b=17) 求求a a除以除以b b的商和余數(shù)。的商和余數(shù)。 順序結(jié)構(gòu)#include “stdio.h”main( )int a, b, x, y; /*定義變量定義變量*/scanf (“%d, %d”, &a, &b); /*鍵盤(pán)輸入鍵盤(pán)輸入*/x=a/b; /* 求求a/b的商的商 */y=a%b; /* 求求a/b的余數(shù)的余數(shù) */printf (“a
5、=%d, b=%d,a/b=%d, a%b=%dn”, a, b,x,y);程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)11【例【例2 2】編寫(xiě)一個(gè)程序用于水果店售貨員算帳:已知蘋(píng)果每斤】編寫(xiě)一個(gè)程序用于水果店售貨員算帳:已知蘋(píng)果每斤2.52.5元,梨每元,梨每斤斤1.81.8元,香蕉每斤元,香蕉每斤2.02.0元,橘子每斤元,橘子每斤1.61.6元,要求輸入各類水果的重量,元,要求輸入各類水果的重量,打印出應(yīng)付錢(qián)數(shù),再輸入顧客付款數(shù),打印出應(yīng)找的錢(qián)數(shù)。打印出應(yīng)付錢(qián)數(shù),再輸入顧客付款數(shù),打印出應(yīng)找的錢(qián)數(shù)。 /* 水果店售貨員算帳程序水果店售貨員算帳程序*/#includestdio.hmain()float app
6、le,pear,banana,orange;float ys,g,fk;printf(請(qǐng)依次輸入蘋(píng)果、鴨梨、香蕉、橘子的重量請(qǐng)依次輸入蘋(píng)果、鴨梨、香蕉、橘子的重量:);scanf(%f,%f,%f,%f,&apple,&pear,&banana,&orange); /*輸入各數(shù)之間用逗號(hào)分隔輸入各數(shù)之間用逗號(hào)分隔*/ys=2.5*apple+1.8*pear+2.0*banana+1.6*orange;printf(應(yīng)收貨款應(yīng)收貨款=%6.2f元元n,ys);printf(顧客付款(元)顧客付款(元)=); scanf(%f,&g);fk=g-ys;pr
7、intf(應(yīng)找回應(yīng)找回=%6.2fn,fk); 順序結(jié)構(gòu)程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)12選擇結(jié)構(gòu)語(yǔ)句nifif語(yǔ)句nswitchswitch語(yǔ)句n特征程序的流程由多路分支組成程序的流程由多路分支組成n在程序的一次執(zhí)行過(guò)程中,根據(jù)不同情況只有一條支路被選在程序的一次執(zhí)行過(guò)程中,根據(jù)不同情況只有一條支路被選中執(zhí)行,其他的分支上的語(yǔ)句被直接跳過(guò)中執(zhí)行,其他的分支上的語(yǔ)句被直接跳過(guò)n條件n由關(guān)系表達(dá)式或由關(guān)系表達(dá)式組合而成的邏輯表達(dá)式,少數(shù)由關(guān)系表達(dá)式或由關(guān)系表達(dá)式組合而成的邏輯表達(dá)式,少數(shù)情況下也可以是算術(shù)表達(dá)式。這個(gè)表達(dá)式的結(jié)果將決定程序情況下也可以是算術(shù)表達(dá)式。這個(gè)表達(dá)式的結(jié)果將決定程序下一步的執(zhí)行順
8、序下一步的執(zhí)行順序程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)13選擇結(jié)構(gòu)條件n例C1是否為小寫(xiě)字母的條件是:X在1,10和200,210之間為真, 否則為假的條件是:(c1=ac1=a)&(c1=zc1=1x=1)&(x=10 x=200 x=200)&(x=210 x=210) ) )程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)14if語(yǔ)句nif語(yǔ)句是一種非常重要的程序流程控制語(yǔ)句它可以使程序根據(jù)不同的條件執(zhí)行不同的操作if 語(yǔ)句共有三種形式n簡(jiǎn)單if 單分支nifelse 雙分支nifelse if 多分支程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)15if語(yǔ)句n簡(jiǎn)單if語(yǔ)句語(yǔ)句格式: if(表達(dá)式e) s1;n表達(dá)式表示對(duì)一個(gè)
9、條件的判斷表達(dá)式必須用括號(hào),通常為關(guān)系表達(dá)式或邏輯表達(dá)式,結(jié)果為0或1ns1從語(yǔ)法上應(yīng)是一條語(yǔ)句,當(dāng)在此執(zhí)行多條語(yǔ)句,必須用大括號(hào)將它們括起來(lái),構(gòu)成復(fù)合語(yǔ)句執(zhí)行過(guò)程n計(jì)算表達(dá)式的值若為“真”,則執(zhí)行語(yǔ)句s1否則將跳過(guò)語(yǔ)句s1執(zhí)行if語(yǔ)句的下一條語(yǔ)句 語(yǔ)句語(yǔ)句s1s1yesyesnonoe程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)16if語(yǔ)句n簡(jiǎn)單if語(yǔ)句例nif(x=y&a=1)printf(“x=y and a=1”);nif(99)printf(“true!”);nif(0)printf(“its zreo”);nif (1) printf(“true!”);問(wèn)題?下面語(yǔ)句的區(qū)別:nif (a=0)
10、printf(“a is 0”); nif (a=0) printf(“a is 0”); nif (a=1) printf(“a is 1”); nif (a=1) printf(“a is 1”); 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)17if語(yǔ)句例:計(jì)算一個(gè)整數(shù)的絕對(duì)值mainmain()()int aint a,absaabsa; printfprintf(“enter one number:”enter one number:”);); scanfscanf(“%d”,&a%d”,&a);); absa=aabsa=a; ifif(a0a0) absa=-aabsa=-a; pri
11、ntfprintf(“|%d|=%d”,a,absa|%d|=%d”,a,absa);); 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)18if語(yǔ)句n例:兩個(gè)整數(shù)相除 mainmain()() int a,bint a,b; printfprintf(“enter two numbers:”enter two numbers:”);); scanfscanf(“%d%d”,&a,&b%d%d”,&a,&b);); ifif(b b) printfprintf(“%d”,a/b%d”,a/b);); 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)19if語(yǔ)句nifesle語(yǔ)句語(yǔ)句格式:n明確指出當(dāng)表達(dá)式e為“
12、真”時(shí)做什么,為“假”時(shí)做什么功能n計(jì)算表達(dá)式的值若表達(dá)式的值為“真”,執(zhí)行s1,并跳過(guò)s2,繼續(xù)執(zhí)行if_else語(yǔ)句的下一條語(yǔ)句若表達(dá)式的值為“假”,跳過(guò)s1,執(zhí)行s2,繼續(xù)執(zhí)行if_else語(yǔ)句的下一條語(yǔ)句 e e s1 s1 s2 s2yesyes no no程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)20if語(yǔ)句n求整數(shù)的絕對(duì)值可改寫(xiě)為:mainmain()() int a,absa;int a,absa; printf printf(“enter one number:”enter one number:”); ; scanf scanf(“%d”,&a%d”,&a); ; ifif(a
13、0a0) absa=-a;absa=-a; else else absa=a; absa=a; printf printf(“|%d|=%d”,a,absa|%d|=%d”,a,absa); ; mainmain()()int aint a,absaabsa; printfprintf(“enter one number:”enter one number:”);); scanfscanf(“%d”,&a%d”,&a);); absa=aabsa=a; ifif(a0a1x1) y=x;y=x; else y=0; else y=0; printf printf(“x=%f,y
14、=%f”,x,yx=%f,y=%f”,x,y); ; 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)23if語(yǔ)句n例:從鍵盤(pán)上輸入學(xué)生的百分制成績(jī),然后換成等級(jí)成績(jī)。當(dāng)成績(jī)高于90分時(shí),輸出A;成績(jī)?cè)?0-89分之間,輸出B;成績(jī)?cè)?0-79分之間,輸出C;成績(jī)不及格(小于60分)時(shí)輸出D程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)24if語(yǔ)句n 使用簡(jiǎn)單的使用簡(jiǎn)單的if語(yǔ)句語(yǔ)句n #include n main( )n int score=0; /*學(xué)生百分制成績(jī)學(xué)生百分制成績(jī)*/n char grade; /*等級(jí)成績(jī)等級(jí)成績(jī)*/n printf(“請(qǐng)輸入學(xué)生百分制成績(jī):請(qǐng)輸入學(xué)生百分制成績(jī):”); n scanf(“%d”,&
15、;score);n if(score=90) grade=A;n if(score=80&score=60&score80) grade=C;n else grade=D;n printf(“等級(jí)為:等級(jí)為:%cn“,grade);n 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)25if語(yǔ)句nifelse if語(yǔ)句對(duì)于一個(gè)問(wèn)題可能需要從多方面進(jìn)行判斷,有多種可能的情況進(jìn)行處理表達(dá)式表達(dá)式程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)26if語(yǔ)句nifelse if語(yǔ)句執(zhí)行過(guò)程示意圖e e1 1語(yǔ)句語(yǔ)句S1S1e e2 2語(yǔ)句語(yǔ)句S2S2e en n語(yǔ)句語(yǔ)句SnSn語(yǔ)句語(yǔ)句Sn+1Sn+1Y YN NY YY YN NN N
16、提示:n這是一條語(yǔ)句n屬于雙分支結(jié)構(gòu)的嵌套程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)27百分之成績(jī)轉(zhuǎn)換為等級(jí)的問(wèn)題n 使用嵌套形式的使用嵌套形式的if語(yǔ)句語(yǔ)句n #include n main( )n int score=0; /*學(xué)生百分制成績(jī)學(xué)生百分制成績(jī)*/n char grade; /*等級(jí)成績(jī)等級(jí)成績(jī)*/n printf(“請(qǐng)輸入學(xué)生百分制成績(jī):請(qǐng)輸入學(xué)生百分制成績(jī):”); n scanf(“%d”,&score);n if(score=90) grade=A;n else if(score=80) grade=B;n else if(score=60) grade=C;n else grade
17、=D;n printf(“等級(jí)為:等級(jí)為:%cn“,grade);n 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)28if語(yǔ)句n例:求分段函數(shù)的值 10 x11x310 x11x21xxsinx2xY22 x1? x1? y=x y=x2 2+2x+sin+2x+sin(x x) x=10? x=10? y=2x-1 y=2x-1 y=sqrt(3xy=sqrt(3x2 2-11)-11)yesyesnonononoyesyes=程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)29if語(yǔ)句n源程序 #include #include “math.h”“math.h” #include “stdio.h” #include “stdio.h”
18、 main main()() float xfloat x,y y; printfprintf(“enter a xenter a x:”);); scanfscanf(“%f”,&x%f”,&x);); ifif(x1.0 x1.0) y=xy=x* *x+2x+2* *x+sin(x)x+sin(x); else ifelse if(x=10.0 x=10.0) y=2y=2* *x-1x-1; else else y= y=sqrtsqrt(3 3* *x x* *x-1x-1);); printfprintf(“x=%f,y=%f”,x,yx=%f,y=%f”,x,y)
19、;); 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)30幾個(gè)常用的數(shù)學(xué)函數(shù)幾個(gè)常用的數(shù)學(xué)函數(shù):int abs(int x); | x |double fabs(double x); double log(doubel x); ln(x)double log10(double x); log10(x) double exp(double x); exdouble pow(double x, double y); xydoubel sqrt(double x); math.h 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)31if語(yǔ)句n例:閱讀程序回答問(wèn)題 #include main() int a,b,m,n; scanf(“%d%d”,&
20、amp;a,&b); m=n=1; if(a0) m=m+n; if(ab) n=2*m; else if(a=b) n=5; else n=m+n; printf(“m=%d n=%dn”,m,n); 1)當(dāng)輸入為當(dāng)輸入為-1 2,程序的程序的 運(yùn)行結(jié)果為多少運(yùn)行結(jié)果為多少?2)當(dāng)輸入為當(dāng)輸入為1 0,程序的程序的 運(yùn)行結(jié)果為多少運(yùn)行結(jié)果為多少?3)為了輸出為了輸出n=4,變量變量a和和b應(yīng)具應(yīng)具 備的條件是什么備的條件是什么? m=1 n=2 m=2 n=30ab程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)32if語(yǔ)句nIf語(yǔ)句嵌套if 語(yǔ)句體中又包含一個(gè)或多個(gè)if語(yǔ)句,稱為if語(yǔ)句的嵌套n在簡(jiǎn)單if語(yǔ)
21、句和if_else語(yǔ)句形式中,s1或s2可以是任意合法語(yǔ)句。當(dāng)s1或s2也是if語(yǔ)句,就構(gòu)成嵌套的if語(yǔ)句嵌套形式if (e1) if(e2) s1; else s2; else s3;if (e1) if(e2) s1; else s2;if (e1) if(e2) s2; else s3;當(dāng)出現(xiàn)當(dāng)出現(xiàn)ifif語(yǔ)句嵌套時(shí),不管書(shū)寫(xiě)格式如何,語(yǔ)句嵌套時(shí),不管書(shū)寫(xiě)格式如何,elseelse都將都將與它前面最靠近的未曾配對(duì)的與它前面最靠近的未曾配對(duì)的ifif語(yǔ)句相配對(duì),構(gòu)成一條完語(yǔ)句相配對(duì),構(gòu)成一條完整的整的ifif語(yǔ)句。語(yǔ)句。程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)33if語(yǔ)句nIf語(yǔ)句嵌套C語(yǔ)言規(guī)定的原則n從最
22、內(nèi)層開(kāi)始,else總是與它前面最近的同一復(fù)合語(yǔ)句內(nèi)的不帶else 的if結(jié)合。如果if和 else的數(shù)目不統(tǒng)一,可以加明確配對(duì)關(guān)系提示n嵌套中的if與 else的配對(duì)關(guān)系非常重要對(duì)多重if,最容易犯的錯(cuò)誤就是if與 else配對(duì)錯(cuò)誤n即使(表達(dá)式)的后面只有一條語(yǔ)句即使(表達(dá)式)的后面只有一條語(yǔ)句,也盡量也盡量不要省略花括號(hào)不要省略花括號(hào) 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)34switch語(yǔ)句多分支語(yǔ)句的選擇n用 if語(yǔ)句嵌套實(shí)現(xiàn)的多分支結(jié)構(gòu),分支較 多;容易使程序冗長(zhǎng)不清晰;可讀性差n應(yīng)使用 C語(yǔ)言提供的switch開(kāi)關(guān)語(yǔ)句專門(mén)處理多分支結(jié)構(gòu)可以簡(jiǎn)化程序的結(jié)構(gòu), 程序簡(jiǎn)潔nswitch語(yǔ)句語(yǔ)句功能n可以
23、根據(jù)某一表達(dá)式的不同取值,直接進(jìn)行多分支選擇處理程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)35switch語(yǔ)句語(yǔ)句格式 switch switch (表達(dá)式表達(dá)式e e) case case 常量表達(dá)式常量表達(dá)式a1a1: 語(yǔ)句序列語(yǔ)句序列S1S1; breakbreak; case case 常量表達(dá)式常量表達(dá)式a2a2: 語(yǔ)句序列語(yǔ)句序列S2S2; breakbreak; case case 常量表達(dá)式常量表達(dá)式anan: 語(yǔ)句序列語(yǔ)句序列SnSn; breakbreak; defaultdefault: 語(yǔ)句語(yǔ)句S;S; 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)36switch語(yǔ)句nswitch語(yǔ)句執(zhí)行示意圖表達(dá)式表達(dá)式e
24、e?語(yǔ)句序列語(yǔ)句序列S1S1; breakbreak;語(yǔ)句序列語(yǔ)句序列S2S2; breakbreak;語(yǔ)句序列語(yǔ)句序列S3S3; breakbreak;語(yǔ)句序列語(yǔ)句序列S S; a1 a1 default default a3 a3 a2 a2 case case程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)37switch語(yǔ)句nswitch語(yǔ)句執(zhí)行過(guò)程執(zhí)行過(guò)程n首先計(jì)算表達(dá)式的值。首先計(jì)算表達(dá)式的值。將將e的值依次與每一個(gè)的值依次與每一個(gè) case后的后的常量表達(dá)式常量表達(dá)式ai(a1,a2,aian)進(jìn)行比較進(jìn)行比較如果相等,執(zhí)行如果相等,執(zhí)行常量表達(dá)式常量表達(dá)式ai后的語(yǔ)句序列后的語(yǔ)句序列Si 若若si結(jié)束處
25、有結(jié)束處有break語(yǔ)句,則跳出語(yǔ)句,則跳出switch語(yǔ)句,語(yǔ)句,執(zhí)行結(jié)束執(zhí)行結(jié)束 若沒(méi)有若沒(méi)有break語(yǔ)句,在執(zhí)行完語(yǔ)句,在執(zhí)行完si后將無(wú)條件的繼后將無(wú)條件的繼續(xù)執(zhí)行下一條續(xù)執(zhí)行下一條case語(yǔ)句的語(yǔ)句。此時(shí)并不再檢查語(yǔ)句的語(yǔ)句。此時(shí)并不再檢查后面的后面的case后的標(biāo)號(hào)后的標(biāo)號(hào)ai是否與是否與e的值相等的值相等如果未找到與之匹配的如果未找到與之匹配的常量表達(dá)式常量表達(dá)式ai,則做如下處,則做如下處理理 若有若有default語(yǔ)句,則執(zhí)行語(yǔ)句,則執(zhí)行default后的語(yǔ)句序列后的語(yǔ)句序列S后結(jié)束后結(jié)束 若沒(méi)有若沒(méi)有default語(yǔ)句語(yǔ)句, switch語(yǔ)句直接結(jié)束(什么語(yǔ)句直接結(jié)束(什
26、么也沒(méi)有做)也沒(méi)有做)程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)38switch語(yǔ)句nswitch語(yǔ)句提示n如果switch表達(dá)式的多個(gè)值都需要執(zhí)行相同的語(yǔ)句,可以采用下面的格式switch (i) case 1: case 2: case 3:語(yǔ)句語(yǔ)句1;break; case 4:語(yǔ)句語(yǔ)句2;break; case 5: case 6:語(yǔ)句語(yǔ)句3;break; default :語(yǔ)句語(yǔ)句4; / /* *執(zhí)行過(guò)程:執(zhí)行過(guò)程:當(dāng)整型變量當(dāng)整型變量i i的值為的值為1 1、2 2或或3 3時(shí),時(shí),執(zhí)行語(yǔ)句執(zhí)行語(yǔ)句1 1;當(dāng)整型變量當(dāng)整型變量i i的值為的值為4 4時(shí)執(zhí)行語(yǔ)句時(shí)執(zhí)行語(yǔ)句2 2;當(dāng)整型變量當(dāng)整型變量i
27、 i的值為的值為5 5、6 6時(shí),執(zhí)行時(shí),執(zhí)行語(yǔ)句語(yǔ)句3 3,否則執(zhí)行語(yǔ)句否則執(zhí)行語(yǔ)句4 4。* */ /程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)39switch語(yǔ)句nswitch語(yǔ)句提示nswitch后面括號(hào)中可以是任何表達(dá)式,取其后面括號(hào)中可以是任何表達(dá)式,取其整數(shù)部分整數(shù)部分與各常量與各常量表達(dá)式進(jìn)行比較表達(dá)式進(jìn)行比較n常量表達(dá)式中常量表達(dá)式中不能出現(xiàn)變量,不能出現(xiàn)變量,語(yǔ)句語(yǔ)句si可以是一條或多條語(yǔ)句,可以是一條或多條語(yǔ)句,多條語(yǔ)句時(shí)不必用多條語(yǔ)句時(shí)不必用 將它們括起來(lái)將它們括起來(lái)語(yǔ)句語(yǔ)句si處也可以沒(méi)有語(yǔ)句,程序執(zhí)行到此會(huì)自動(dòng)向下順序處也可以沒(méi)有語(yǔ)句,程序執(zhí)行到此會(huì)自動(dòng)向下順序執(zhí)行執(zhí)行n采用一個(gè)采用一
28、個(gè)break語(yǔ)句或語(yǔ)句或return語(yǔ)句退出語(yǔ)句退出switch語(yǔ)句是必要的語(yǔ)句是必要的ndefault語(yǔ)句一般出現(xiàn)在所有語(yǔ)句一般出現(xiàn)在所有case語(yǔ)句之后語(yǔ)句之后n使用使用switch語(yǔ)句的前提條件是條件表達(dá)式必須是基于同語(yǔ)句的前提條件是條件表達(dá)式必須是基于同一個(gè)整一個(gè)整型(或字符型)變量型(或字符型)變量程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)40#include main( ) int score; char grade; printf(請(qǐng)輸入百分制成績(jī):請(qǐng)輸入百分制成績(jī):);scanf(%d,&score); switch (score/10) case 10: case 9: grade=A;
29、 break; case 8: grade=B; break; case 7: case 6: grade=C; break; default: grade=D; printf(等級(jí)為:等級(jí)為:%cn,grade);用switch語(yǔ)句實(shí)現(xiàn)成績(jī)轉(zhuǎn)換問(wèn)題允許多個(gè)允許多個(gè)case共同使用一個(gè)語(yǔ)共同使用一個(gè)語(yǔ)句組句組程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)41switch語(yǔ)句nswitch語(yǔ)句什么時(shí)候用一條switch語(yǔ)句比用多條if語(yǔ)句更好?nswitch語(yǔ)句與if語(yǔ)句不同 switch語(yǔ)句只能對(duì)等式等式進(jìn)行測(cè)試if 語(yǔ)句可以計(jì)算關(guān)系表達(dá)式或邏輯表達(dá)式等n如果有兩條以上基于同一個(gè)整型變量的條件表達(dá)式,那么最好使用sw
30、itch語(yǔ)句程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)42例題n例1:編寫(xiě)一個(gè)程序根據(jù)用戶輸入的三角形的三邊判定三角形的類型并求其面積算法分析n設(shè)三角形的三變?yōu)閍,b,cn是否能組成三角形條件 a+bc&a+cb&b+can如果組成三角形計(jì)算三角形的面積判斷是什么類型三角形? 等邊三角形、等腰三角形、直角三角形、一般三角形程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)43例題n程序代碼#include“stdio.h”#include“stdio.h”#include“math.h”#include“math.h”mainmain()()float a,b,c; float a,b,c; float s,area; fl
31、oat s,area; printf printf(“a,b,c=”a,b,c=”); ; scanf scanf(“%f,%f,%f”,&a,&b,&c%f,%f,%f”,&a,&b,&c); ; ifif(a+bc&a+cb&b+caa+bc&a+cb&b+ca) s=s=(a+b+ca+b+c)/2.0;/2.0; area=sqrt area=sqrt(s s* *(s-as-a)* *(s-bs-b)* *(s-cs-c); ; printf printf(“area=%fn”,areaarea=%fn”
32、,area); ; if if(a=b&b=ca=b&b=c) printfprintf(“等邊三角形等邊三角形n”n”); ; ease if ease if (a=b|b=c|a=ca=b|b=c|a=c) printfprintf(“等腰三角形等腰三角形n”n”); ; else if else if (a a* *a+ba+b* *b=cb=c* *c|ac|a* *a+ca+c* *c=bc=b* *b|bb|b* *b+cb+c* *c=ac=a* *a a) printfprintf(“直角三角形直角三角形n”n”); ; else printf else pri
33、ntf(“一般三角形一般三角形n”n”);); elseelse printf printf(“不能組成三角形不能組成三角形n”n”); ; 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)44例題n例2:編寫(xiě)一個(gè)程序,完成兩個(gè)數(shù)的四則運(yùn)算(數(shù)與運(yùn)算符由鍵盤(pán)給入)分析n調(diào)用輸入函數(shù)輸入操作數(shù)和運(yùn)算符n四則運(yùn)算規(guī)則#includde#includdemainmain()() float x,yfloat x,y; char opchar op; printfprintf(“ntype in your expression:”ntype in your expression:”); ; scanf scanf(“%f%c%
34、f”,&x,&op,&y%f%c%f”,&x,&op,&y); ;程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)45問(wèn):怎樣加入%運(yùn)算? switchswitch(opop) case case + +: printf“%6.2f%c%6.2f=%6.2fn”,x,op,y,x+yprintf“%6.2f%c%6.2f=%6.2fn”,x,op,y,x+y);); breakbreak; case case - -: printfprintf(“%6.2f%c%6.2f=%6.2fn”,x,op,y,x-y%6.2f%c%6.2f=%6.2fn”,x,op,y,x-y)
35、;); breakbreak; case case * *: printfprintf(“%6.2f%c%6.2f=%6.2fn”,x,op,y,x%6.2f%c%6.2f=%6.2fn”,x,op,y,x* *y y);); breakbreak; case case / /: ifif(y=0y=0) printfprintf(“error!n”error!n”); ; else printf(“%6.2f%c%6.2f=%6.2fn”, else printf(“%6.2f%c%6.2f=%6.2fn”, x,op,y,x+y x,op,y,x+y);); breakbreak; def
36、aultdefault: printfprintf(“espression error!n”espression error!n”:):); ; 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)46小測(cè)試n1:下述程序段中,無(wú)語(yǔ)法錯(cuò)誤的是A)int a=2,b=0; switch(a) case b+1:a-;break; case b=5: a+=10;break; B)char x=A,y; switch(x) case A:y+;break; case -1: y=5; C)int a,b=5; switch(b) case b0:a=1;break; case b=0: a=0;break; D)#define
37、 M 10 int a=1,b; switch(a) case M-9:b+=5;break; case 1: b=1;break; 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)47小測(cè)試2.2.以下程序的運(yùn)行結(jié)果是:以下程序的運(yùn)行結(jié)果是:main( ) int x1=3, x2=0, x3=0; if (x1=x2+x3) printf(* * * *); else printf(# # # #);A.輸出:輸出:* * * *B.輸出:輸出:# # # #C.存在語(yǔ)法錯(cuò)誤存在語(yǔ)法錯(cuò)誤D.無(wú)輸出結(jié)果無(wú)輸出結(jié)果3.下面程序段所表示的數(shù)學(xué)下面程序段所表示的數(shù)學(xué) 函數(shù)關(guān)系是:函數(shù)關(guān)系是: x=-1; if (a!=0)
38、 if (a0) x=1; else x=0; -1 (a0) 1 (a0) 0 (a0) 0 (a0) -1 (a0) 0 (a0) 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)48小測(cè)試4.為了避免在嵌套的條件語(yǔ)句為了避免在嵌套的條件語(yǔ)句if-else中產(chǎn)生二義性,中產(chǎn)生二義性,C語(yǔ)言規(guī)定:語(yǔ)言規(guī)定:else總總是與是與A.縮排位置相同的縮排位置相同的if配對(duì)配對(duì)B.其之前最近且不帶其之前最近且不帶else的的if配對(duì)配對(duì)C.其之前最近的其之前最近的if配對(duì)配對(duì)D.第一個(gè)第一個(gè)if配對(duì)配對(duì) 5.若執(zhí)行以下程序時(shí)從鍵盤(pán)上輸入若執(zhí)行以下程序時(shí)從鍵盤(pán)上輸入3 4,則輸出結(jié)果是,則輸出結(jié)果是 main( ) int a
39、,b,s; scanf(%d%d,&a,&b); s=a; if (ab) s=b; s*=s; printf(%dn,s); A. 14 B. 16 C. 18 D. 20 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)49循環(huán)結(jié)構(gòu) n什么是循環(huán)重復(fù)做某件事的現(xiàn)象稱為“循環(huán)”C程序的循環(huán)結(jié)構(gòu)就是在滿足循環(huán)條件時(shí),重復(fù)執(zhí)行某程序段,直到循環(huán)條件不滿足為止n重復(fù)執(zhí)行的程序段稱為循環(huán)體循環(huán)進(jìn)行的條件n循環(huán)控制變量循環(huán)控制變量初始值每次循環(huán)過(guò)程中用以改變循環(huán)控制變量的遞增/遞減值n用來(lái)判定循環(huán)是否結(jié)束的最終條件值程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)50循環(huán)結(jié)構(gòu)n循環(huán)結(jié)構(gòu)兩種形式當(dāng)型循環(huán)當(dāng)型循環(huán)n首先判斷循環(huán)控制表達(dá)式是否
40、為首先判斷循環(huán)控制表達(dá)式是否為“真真”若為若為“真真”,則反復(fù)執(zhí)行循環(huán)體,則反復(fù)執(zhí)行循環(huán)體若為若為“假假”,則結(jié)束循環(huán),則結(jié)束循環(huán) nwhile語(yǔ)句、語(yǔ)句、for語(yǔ)句語(yǔ)句 直到型循環(huán)直到型循環(huán)n首先執(zhí)行循環(huán)體,然后才判斷循環(huán)控制首先執(zhí)行循環(huán)體,然后才判斷循環(huán)控制表達(dá)式表達(dá)式若為若為“真真”,則反復(fù)執(zhí)行循環(huán)體,則反復(fù)執(zhí)行循環(huán)體直到循環(huán)控制表達(dá)式為直到循環(huán)控制表達(dá)式為“假假”時(shí)結(jié)時(shí)結(jié)束循環(huán)束循環(huán)n do_while語(yǔ)句語(yǔ)句 truefalse表達(dá)式表達(dá)式?循環(huán)體循環(huán)體true循環(huán)體循環(huán)體表達(dá)式表達(dá)式?false程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)51說(shuō)明說(shuō)明n表達(dá)式是控制循環(huán)的條件,它可以是任何類型的表達(dá)式表達(dá)
41、式是控制循環(huán)的條件,它可以是任何類型的表達(dá)式n循環(huán)體語(yǔ)句語(yǔ)法上定義為一條語(yǔ)句,若循環(huán)體含有多條語(yǔ)循環(huán)體語(yǔ)句語(yǔ)法上定義為一條語(yǔ)句,若循環(huán)體含有多條語(yǔ)句,則必須用大括號(hào)把它們括起來(lái),成為復(fù)合語(yǔ)句句,則必須用大括號(hào)把它們括起來(lái),成為復(fù)合語(yǔ)句n while語(yǔ)句的特點(diǎn)語(yǔ)句的特點(diǎn)先判斷,后執(zhí)行先判斷,后執(zhí)行 若表達(dá)式一開(kāi)始就為若表達(dá)式一開(kāi)始就為“假假”,則循環(huán)一次也不執(zhí)行,則循環(huán)一次也不執(zhí)行程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)52while 語(yǔ)句例例1 編寫(xiě)程序計(jì)算編寫(xiě)程序計(jì)算1+2+3+.+99+100 #include main( ) int sum=0 , n ; n=1 ; while ( n0n0? sum1
42、sum1增增1 1 sum2 sum2增增1 1輸入數(shù)據(jù)輸入數(shù)據(jù)n n輸出統(tǒng)計(jì)的結(jié)果輸出統(tǒng)計(jì)的結(jié)果結(jié)束結(jié)束為為0 0不為不為0 0正數(shù)正數(shù)負(fù)數(shù)負(fù)數(shù) yes yes no no例2 輸入一組整數(shù),分別統(tǒng)計(jì)正整數(shù)和負(fù)整數(shù)的個(gè)數(shù)。(0作結(jié)束標(biāo)志)程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)54n提示循環(huán)體中必須存在使循環(huán)趨于結(jié)束的語(yǔ)句,以保證循環(huán)的正常結(jié)束。否則,會(huì)出現(xiàn)“死循環(huán)”的現(xiàn)象。多條語(yǔ)句做循環(huán)體時(shí)必須用括起來(lái)形成復(fù)合語(yǔ)句形式。否則,只把第一條語(yǔ)句當(dāng)作循環(huán)體語(yǔ)句執(zhí)行循環(huán)體中語(yǔ)句順序非常重要while(1)是無(wú)限循環(huán)格式 mainmain()() int sum1=0int sum1=0,sum2=0sum2=0,n
43、 n; scanfscanf(“%d” %d” ,&n&n);); whilewhile(n!=0n!=0) if if (n0n0) sum1=sum1+1sum1=sum1+1; else else sum2=sum2+1; sum2=sum2+1; scanfscanf(“%d” %d” ,&n&n);); printfprintf(“%d,%d” ,sum1,sum2%d,%d” ,sum1,sum2); ; 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)55是是C語(yǔ)言中最常用、最靈活、最基本的循環(huán)控制語(yǔ)句,語(yǔ)言中最常用、最靈活、最基本的循環(huán)控制語(yǔ)句,特別適合特別適合已知循環(huán)次
44、數(shù)的情況已知循環(huán)次數(shù)的情況e1(表達(dá)式(表達(dá)式1)通常為賦值表達(dá)式。用來(lái)實(shí)現(xiàn)循環(huán)結(jié)構(gòu)變)通常為賦值表達(dá)式。用來(lái)實(shí)現(xiàn)循環(huán)結(jié)構(gòu)變量的初始值,可以為空,但分號(hào)不能省略。量的初始值,可以為空,但分號(hào)不能省略。e2(表達(dá)式(表達(dá)式2)通常為關(guān)系表達(dá)式或邏輯表達(dá)式,將循環(huán))通常為關(guān)系表達(dá)式或邏輯表達(dá)式,將循環(huán)控制變量與某一值進(jìn)行比較,以決定是否退出循環(huán)(循環(huán)控制變量與某一值進(jìn)行比較,以決定是否退出循環(huán)(循環(huán)進(jìn)行的條件)。進(jìn)行的條件)。e3(表達(dá)式(表達(dá)式3)通常采用自增或自減表達(dá)式,描述循環(huán)控)通常采用自增或自減表達(dá)式,描述循環(huán)控制變量的變化制變量的變化程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)56nfor語(yǔ)句執(zhí)行過(guò)程計(jì)算表
45、達(dá)式計(jì)算表達(dá)式e1e1的值(循環(huán)初值)的值(循環(huán)初值)計(jì)算表達(dá)式計(jì)算表達(dá)式e2e2的值(循環(huán)中間比較值)的值(循環(huán)中間比較值)執(zhí)行循環(huán)體語(yǔ)句執(zhí)行循環(huán)體語(yǔ)句S S;e2e2的值為真?的值為真?Y YN N計(jì)算表達(dá)式計(jì)算表達(dá)式e3e3的值的值退出循環(huán)體語(yǔ)退出循環(huán)體語(yǔ)句,執(zhí)行句,執(zhí)行forfor的的語(yǔ)句下一條語(yǔ)語(yǔ)句下一條語(yǔ)句。句。程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)57nfor語(yǔ)句例1:編寫(xiě)程序計(jì)算編寫(xiě)程序計(jì)算1+2+3+.+99+100 #include main( ) int sum=0 , n ; for (n=1; n=100; n+) sum+=n ; printf(“sum=%dn”,sum) ; #
46、include main( ) int sum=0 , n ; n=1 ; while ( n=100 ) sum+=n ; n+ ; printf(sum=%dn“,sum) ; 循環(huán)變量初始化循環(huán)變量初始化循環(huán)控制條件循環(huán)控制條件改變循環(huán)變量改變循環(huán)變量程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)58nfor語(yǔ)句例2:計(jì)算自然數(shù)1到n的平方和開(kāi)始開(kāi)始類型說(shuō)明:類型說(shuō)明:n n; i i;s s;輸入輸入n n賦初值:賦初值:s=0.0; i=1s=0.0; i=1; i =n?i =n?計(jì)算平方數(shù):計(jì)算平方數(shù): i i* *i i;s=s+s=s+(floatfloat)()(i i) * *(floatflo
47、at)()(i i););? ? i=i+1 i=i+1;輸出計(jì)算輸出計(jì)算結(jié)果:結(jié)果:s s結(jié)束結(jié)束YN程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)59#include #include #include #include mainmain()()int iint i,n n; float sfloat s; printfprintf(“please input nplease input n:”);); scanfscanf(“%d” %d” ,&n&n);); s=0.0s=0.0 for for(i=1i=1; i =ni =n;i+i+) s=s+(float)is=s+(float)i*
48、*(float)i;(float)i; printf printf(“1 1* *1+21+2* *2+%d2+%d* *%d=%fn” %d=%fn” ,n n,n n,s s););程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)60nfor語(yǔ)句for語(yǔ)句中三個(gè)表達(dá)式可以是任何合法的C表達(dá)式n三個(gè)表達(dá)式可以部分省略或全部省略。其中的兩個(gè)分號(hào)不能省略 for語(yǔ)句的幾種特殊格式n例如for ( i=2; i=10) break; /* 循環(huán)出口循環(huán)出口 */ printf (“%5d”, i ); i+; /* 修改循環(huán)變量的值修改循環(huán)變量的值 */ 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)61do while語(yǔ)句ndo while語(yǔ)句
49、語(yǔ)句格式n說(shuō)明 do_while語(yǔ)句的表達(dá)式是任意表達(dá)式,是控制循環(huán)的條件do_while語(yǔ)句的特點(diǎn) 先執(zhí)行后判斷 循環(huán)體至少執(zhí)行一次do_while語(yǔ)句實(shí)現(xiàn)的循環(huán)重復(fù)執(zhí)行循環(huán)體,直到表達(dá)式為假才退出循環(huán)。 ;不能省略;不能省略程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)62編寫(xiě)程序計(jì)算編寫(xiě)程序計(jì)算1+2+3+.+99+100 #include main( ) int sum=0 , n ; n=1 ; do sum+=n ; n+ ; while ( n=100 ) printf(sum=%dn“,sum) ; do-while 語(yǔ)句#include main( ) int sum=0 , n ; n=1 ; w
50、hile ( n=100 ) sum+=n ; n+ ; printf(sum=%dn“,sum) ; 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)63ndo while語(yǔ)句例:統(tǒng)計(jì)在1100之間的整數(shù)中,有多少個(gè)數(shù)是3的倍數(shù)或5的倍數(shù) main()() int i=0,n=1; do if (n%3=0|n%5=0) i+; n+; while (n=100);); printf(“The total number is :%d” ,i);); 用用for語(yǔ)句改寫(xiě):語(yǔ)句改寫(xiě):main()() int i=0; for(n=1; n=100; n+) if (n%3=0|n%5=0) i+; printf(“The
51、 total number is :%d” ,i);); 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)64n循環(huán)是指在循環(huán)條件為真時(shí)反復(fù)執(zhí)行一組指令兩種循環(huán)方式n計(jì)數(shù)式循環(huán)控制變量用來(lái)計(jì)算循環(huán)的次數(shù)控制變量的值在每次執(zhí)行完一組循環(huán)指令后遞增或遞減當(dāng)控制變量的值表明達(dá)到了預(yù)定的循環(huán)次數(shù)時(shí)循環(huán)終止并繼續(xù)執(zhí)行循環(huán)結(jié)構(gòu)后的語(yǔ)句。n標(biāo)記式循環(huán)當(dāng)事先不知道準(zhǔn)確的循環(huán)次數(shù)循環(huán)體中包含每次循環(huán)都要獲取數(shù)據(jù)的語(yǔ)句標(biāo)記值是在所有合法的數(shù)據(jù)項(xiàng)都提供給程序后鍵入的值標(biāo)記值必須不同于正常的數(shù)據(jù)項(xiàng)程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)65n例題#include#includestdio.hstdio.h mainmain()() float average
52、float average;int counterint counter,gradegrade,totaltotal; total=0total=0; counter=0counter=0; printfprintf( “ “Enter gradeEnter grade, -1 to end-1 to end:” ” );); scanfscanf(“%d”%d”,&grade&grade);); while while (gradegrade!=-1=-1) total=total+grade total=total+grade;counter+=1counter+=1; p
53、rintfprintf( “ “Enter gradeEnter grade, -1 to end-1 to end:” ” );); scanfscanf(“%d”%d”,&grade&grade);); if if(countercounter!=0=0) average= average=(floatfloat)total/countertotal/counter; printfprintf(“CLASS average is %5.2f”CLASS average is %5.2f”,averageaverage);); else else printf printf(
54、“No grade were enteredn”No grade were enteredn”);); 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)66n循環(huán)語(yǔ)句的比較循環(huán)方式nwhile語(yǔ)句和do_while語(yǔ)句多采用標(biāo)記式循環(huán),用于循環(huán)次數(shù)不定的情況nfor語(yǔ)句更方便對(duì)于循環(huán)次數(shù)確定的情況 循環(huán)結(jié)構(gòu)nfor語(yǔ)句和while語(yǔ)句先判斷循環(huán)控制條件,后執(zhí)行循環(huán)體??赡芤淮我膊粓?zhí)行循環(huán)體ndo_while語(yǔ)句是先執(zhí)行循環(huán)體,后進(jìn)行循環(huán)控制條件的判斷。至少執(zhí)行一次循環(huán)體。do_while語(yǔ)句更適合于第一次循環(huán)肯定執(zhí)行的場(chǎng)合 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)67n循環(huán)語(yǔ)句的比較實(shí)現(xiàn)功能ndo_while和while語(yǔ)句只有一個(gè)表達(dá)
55、式,用于控制循環(huán)是否進(jìn)行nfor語(yǔ)句有三個(gè)表達(dá)式可以控制循環(huán)是否進(jìn)行,并能為循環(huán)變量賦初值及不斷修改循環(huán)變量的值for語(yǔ)句比while和do_while語(yǔ)句功能更強(qiáng),更靈活語(yǔ)句形式n初始值while、dowhile循環(huán)時(shí),循環(huán)變量的初始值操作應(yīng)放在while和dowhile語(yǔ)句之前完成for語(yǔ)句通常在表達(dá)式1中實(shí)現(xiàn)循環(huán)控制變量的初始化nwhile和for表達(dá)式的括號(hào)后面沒(méi)有“;” ndowhile表達(dá)式的括號(hào)后面有“;”程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)68n循環(huán)嵌套若一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體中包含了另一循環(huán)語(yǔ)句,則構(gòu)成了循環(huán)的嵌套,稱為多重循環(huán)n三種循環(huán)語(yǔ)句 while、dowhile、for 可以互相嵌套
56、,自由組合n執(zhí)行過(guò)程應(yīng)先執(zhí)行內(nèi)層的循環(huán)體操作,然后是外層循環(huán)。內(nèi)層循環(huán)被執(zhí)行的次數(shù)應(yīng)為:內(nèi)層次數(shù)外層次數(shù) 對(duì)外層循環(huán)變量的每一個(gè)值,內(nèi)層循環(huán)的循環(huán)變量從初值變化到終值 對(duì)外層循環(huán)的每一次循環(huán),內(nèi)層循環(huán)要執(zhí)行完整的循環(huán)語(yǔ)句 提示n各循環(huán)語(yǔ)句所描述的循環(huán)結(jié)構(gòu)必須完整,相互之間絕對(duì)不允許交叉程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)69n循環(huán)嵌套例:求例:求1-1000之間的所有完數(shù)。所謂之間的所有完數(shù)。所謂“完數(shù)完數(shù)” 是指一個(gè)數(shù)恰好等于是指一個(gè)數(shù)恰好等于它的因子之和(除自身外)它的因子之和(除自身外),比如比如6=1*6、6=2*3則則6的因子為的因子為1、2、3 ,而而6=1+2+3,所以,所以6是完數(shù)。是完數(shù)。
57、#include main() int a,j,m; for(a=1;a=1000;a+) for(m=0,j=1;ja;j+) if(a%j=0) m=m+j; if(m = a) printf(%4d,a); 程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)70nbreak語(yǔ)句功能n用于終止(某層)循環(huán)的執(zhí)行n在switch語(yǔ)句中終止某個(gè)case的執(zhí)行:break ; n在循環(huán)體內(nèi),使用break語(yǔ)句可退出循環(huán)體而執(zhí)行該循環(huán)語(yǔ)句后面的語(yǔ)句如果執(zhí)行到程序的某一點(diǎn)后需要退出循環(huán)體(不等循環(huán)的正常結(jié)束),可用break語(yǔ)句實(shí)現(xiàn) switch語(yǔ)句、while語(yǔ)句、dowhile語(yǔ)句、for語(yǔ)句TRUE bodystatem
58、entExpressionFALSE statement1; statementn;程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)71ncontinue語(yǔ)句功能n結(jié)束本次循環(huán)(不是終止整個(gè)循環(huán))n跳過(guò)循環(huán)體中continue語(yǔ)句后面的語(yǔ)句,開(kāi)始下一次循環(huán) continue ;n終止循環(huán)體的本次執(zhí)行,返回循環(huán)語(yǔ)句的首部,檢查循環(huán)條件是否滿足以決定是否進(jìn)行下一次的循環(huán)體的處理nwhile語(yǔ)句、dowhile語(yǔ)句、for語(yǔ)句TRUE bodystatementExpressionFALSE statement1; statementn;程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)72ncontinue說(shuō)明ncontinue語(yǔ)句只能出現(xiàn)在循環(huán)語(yǔ)句的循環(huán)體中n若continue語(yǔ)句出現(xiàn)在while或do_while語(yǔ)句中,則跳過(guò)循環(huán)體中continue語(yǔ)句后面的語(yǔ)句,直接轉(zhuǎn)去判別下次循環(huán)控制條件n若continue語(yǔ)句出現(xiàn)在for語(yǔ)句中,則跳過(guò)循環(huán)體中continue語(yǔ)句后面的語(yǔ)句,轉(zhuǎn)而執(zhí)行for語(yǔ)句的表達(dá)式3程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)73nbreak、continue語(yǔ)句的continue語(yǔ)句只能出現(xiàn)在循環(huán)結(jié)構(gòu)中n只結(jié)束本次循環(huán)體的執(zhí)行n通常與if語(yǔ)句結(jié)合使用n僅僅影響該語(yǔ)句本身所處的循環(huán)break語(yǔ)句可出現(xiàn)在循環(huán)結(jié)構(gòu)和多分支結(jié)構(gòu)中退出循環(huán)結(jié)構(gòu)和多分支結(jié)構(gòu)nbreak語(yǔ)句
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廠房租賃補(bǔ)充協(xié)議
- 2025年分期付款信用協(xié)議
- 2025年衛(wèi)浴產(chǎn)品設(shè)計(jì)合同
- 中國(guó)阿奇霉素腸溶片市場(chǎng)全面調(diào)研及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 2025版木材認(rèn)證機(jī)構(gòu)服務(wù)采購(gòu)合同示范3篇
- 二零二五年度公司股權(quán)激勵(lì)項(xiàng)目財(cái)務(wù)規(guī)劃與預(yù)算合同3篇
- 2025年度儲(chǔ)煤場(chǎng)租賃與煤炭交易結(jié)算服務(wù)合同3篇
- 2025年度新能源行業(yè)競(jìng)業(yè)限制解除通知
- 2025年度私人車位租賃與車位租賃期限續(xù)簽合同
- 2025年度車庫(kù)使用權(quán)轉(zhuǎn)讓及車位租賃權(quán)分配協(xié)議
- 2024多級(jí)AO工藝污水處理技術(shù)規(guī)程
- 2024年江蘇省鹽城市中考數(shù)學(xué)試卷真題(含答案)
- DZ∕T 0287-2015 礦山地質(zhì)環(huán)境監(jiān)測(cè)技術(shù)規(guī)程(正式版)
- 2024年合肥市廬陽(yáng)區(qū)中考二模英語(yǔ)試題含答案
- 質(zhì)檢中心制度匯編討論版樣本
- 藥娘激素方案
- 提高靜脈留置使用率品管圈課件
- GB/T 10739-2023紙、紙板和紙漿試樣處理和試驗(yàn)的標(biāo)準(zhǔn)大氣條件
- 《心態(tài)與思維模式》課件
- C語(yǔ)言程序設(shè)計(jì)(慕課版 第2版)PPT完整全套教學(xué)課件
- 危險(xiǎn)化學(xué)品企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化課件
評(píng)論
0/150
提交評(píng)論