《《c程序設(shè)計(jì)基礎(chǔ)》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《c程序設(shè)計(jì)基礎(chǔ)》PPT課件.ppt(38頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、數(shù)字媒體藝術(shù)專業(yè)C++程序設(shè)計(jì),第五講: C++程序設(shè)計(jì)基礎(chǔ)2,山東師范大學(xué) 李大錦,本講主要內(nèi)容,1、 選擇結(jié)構(gòu)和語句 2、 條件運(yùn)算符和條件表達(dá)式 3、 多分支選擇結(jié)構(gòu)和switch語句 4、 循環(huán)結(jié)構(gòu)和循環(huán)語句 5、 循環(huán)的嵌套 6、 break語句和幻燈片 28continue語句 7、 編程舉例,if語句是用來判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。 if語句有三種使用方式: if(表達(dá)式)語句 if(xy) couty) cout<
2、語句2 else if(表達(dá)式3) 語句3 else if(表達(dá)式m) 語句m 例如: if (score=90) cout=80) cout=70) cout=60) cout<< “合格”; else cout<<“不合格”;,一、if選擇控制語句,例: 求三角形的面積。 #include #include //數(shù)學(xué)函數(shù)頭文件 #include //使用I/O流控制符 using namespace std; int main( ) double a,b,c; coutabc; if (a+bc ,一、if選擇控制語句,在if語句中又包含一個(gè)或多個(gè)if語句稱為
3、if語句的嵌套。一般形式如下: if( ) if( ) 語句1 else 語句2 . else if( ) 語句3 else 語句4 應(yīng)當(dāng)注意if與else的配對(duì)關(guān)系。else總是與它上面最近的、且未配對(duì)的if配對(duì)。為了避免引起混亂,在書寫時(shí)配對(duì)的if與else應(yīng)按列對(duì)齊?;蛘邔⒚總€(gè)if和else 后的執(zhí)行語句用打括號(hào)括起來。,,,內(nèi)嵌if,內(nèi)嵌if,一、if選擇控制語句,如: if( ) if ( ) 執(zhí)行語句 else if( ) 執(zhí)行語句 else 執(zhí)行語句 else 執(zhí)行語句 限定了內(nèi)嵌if語句的范圍。,一、if選擇控制語句,三目條件運(yùn)算符 下列語句
4、if (ab) max=a; else max=b; 可以用條件運(yùn)算符(? :)來代替: max=(ab)?a:b; (關(guān)系表達(dá)式)? (表達(dá)式1) :( 表達(dá)式 2) 是一個(gè)條件運(yùn)算符。他的作用是:如果(ab)條件為真,則結(jié)果取“?”后面的值,否則 “:”后面的值。 max=(ab)?a:b; 如果ab為真,max=a,如果為假 max=b。 條件運(yùn)算符是一個(gè)三目(元)運(yùn)算符(有3個(gè)操作對(duì)象),條件運(yùn)算符優(yōu)先于賦值運(yùn)算符.,二、條件運(yùn)算符和條件表達(dá)式,switch多分支選擇語句 switch語句的一般形式如下: switch(表達(dá)式) case 常量表達(dá)式1:語句1;break; c
5、ase 常量表達(dá)式2:語句2; break; ... case 常量表達(dá)式n:語句n; break; default:語句;break; 當(dāng)switch后的表達(dá)式的值與某一個(gè)case子句中的常量表達(dá)式的值相等時(shí),就執(zhí)行此case子句中的語句,若所有的case,break作用是跳出選擇結(jié)構(gòu),三、 switch多分支選擇語句,子句中的常量表達(dá)式的值都不能與switch表達(dá)式的值相等,就執(zhí)行default子句的語句。 如前面的成績(jī)分段的例子可以用switch語句實(shí)現(xiàn): #include using namespace std; main() intscore; cinscore;
6、 switch( score) case 10 :break; case 9: cout<<優(yōu);break; case 8: cout<<良;break; case 7: cout<<中;break; case 6: cout<<及格;break; default : cout<<不及格; ,三、 switch多分支選擇語句,例: 運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)費(fèi)。路程(s)越遠(yuǎn),每公里運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下: s250km 沒有折扣 250s500 2折扣 500s1000 5折扣 1000s2000 8折扣 2000s
7、3000 10折扣 3000s 15折扣 設(shè)每公里每噸貨物的基本運(yùn)費(fèi)為p,貨物重為w,距離為,折扣為d,則總運(yùn)費(fèi)f 的計(jì)算公式為 f = p * w * s * (1 - d) 使用分支結(jié)構(gòu)語句,程序如下:,三、 switch多分支選擇語句,#include using namespace std; int main( ) int c,s; float p,w,d,f; cinpws; if(s=3000) c=12; else c=s/250; switch (c) case 0:d=0;break; case 1:d=2;break; case 2: case 3:d
8、=5;break; case 4:,三、 switch多分支選擇語句,case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15;break; f=p*w*s*(1-d/100.0); cout<
9、 else d=2; else d=5; else d=8; else d=10; else d=15;,還可以怎么寫?,三、 switch多分支選擇語句,在程序設(shè)計(jì)中經(jīng)常遇到需要反復(fù)循環(huán)處理某些操作或者需要通過循環(huán)執(zhí)行某些操作來實(shí)現(xiàn)某些應(yīng)用。使用循環(huán)結(jié)構(gòu)是程序設(shè)計(jì)中最常見的方法之一。 While循環(huán)語句 while語句的一般形式: while (表達(dá)式) 操作語句.. 當(dāng)指定的條件表達(dá)式為真(非0)時(shí),執(zhí)行while語句中的內(nèi)嵌語句。先判斷表達(dá)式,后執(zhí)行操作語句。while循環(huán)稱為當(dāng)型循環(huán)。 如:求,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,int accum( ) int i=1,sum
10、=0; while (i<=100) sum=sum+i; i++; Return sum; 注意:在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。否則會(huì)造成死循環(huán),四、循環(huán)結(jié)構(gòu)和循環(huán)語句,do-while循環(huán)語句 do-while其一般形式為 do 語句. while (表達(dá)式); 他是先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立,如果成立,再執(zhí)行循環(huán)體內(nèi)的語句,否則退出循環(huán)往下執(zhí)行。如上例中求 用do while 循環(huán)程序如下:,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,int accum( ) int i=1,sum=0; do sum=sum+i; i++; while (i<=100); return s
11、um; 注意:do-while構(gòu)成的循環(huán)中,循環(huán)體至少執(zhí)行一次。而while 構(gòu)成的循環(huán),循環(huán)體可以不執(zhí)行。,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,請(qǐng)寫出下面程序的運(yùn)行結(jié)果?,int exp1(int n, int x ) int i=0,sum=1; do sum=sum*i; i++; while (i
12、cout<
13、構(gòu)和循環(huán)語句,for循環(huán)語句 for語句的一般形式 for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句 它的執(zhí)行過程如下: (1) 先求解表達(dá)式1。表達(dá)式1在循環(huán)中只執(zhí)行一次。 (2) 求解表達(dá)式2, (3)若表達(dá)式2值為真(非0),則執(zhí)行下面的內(nèi)嵌語句。若為假(值為0),則結(jié)束循環(huán)向下執(zhí)行。 (4)執(zhí)行完循環(huán)體內(nèi)操作后,求解表達(dá)式3。 (5)轉(zhuǎn)回上面第(2)步驟繼續(xù)執(zhí)行。直到表達(dá)式2為假,退出循環(huán)。下圖表示了for循環(huán)的執(zhí)行過程。,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,如求 可以用for循環(huán) int accum( ) int i,sum=0; for(i=1;i<=100;i+
14、+) sum=sum+i; return sum; ,int accum( ) int i=1,sum=0; while(i<=100) sum=sum+i; i++; return sum; ,關(guān)于for循環(huán)的說明: (1) for語句的一般格式中的“表達(dá)式1”一般是對(duì)表達(dá)式2中的循環(huán)變量賦初值,可以省略,但應(yīng)在for語句之前給循環(huán)變量賦初值。表達(dá)式1可以是設(shè)置循環(huán)變量初值的賦值表達(dá)式,也可以是與循環(huán)變量無關(guān)的其他表達(dá)式。 (2) 表達(dá)式2可以省略,即不判斷循環(huán)條件,那么將形成死循環(huán)。 (3) 表達(dá)式3也可以省略,但應(yīng)在其他地方改變循環(huán)變量以保證循環(huán)能夠結(jié)束 (4)表達(dá)式2一般是
15、關(guān)系表達(dá)式或邏輯表達(dá)式,但也可以是數(shù)值或字符表達(dá)式,只要其值為非零,就執(zhí)行循環(huán)體。 (5)表達(dá)式1和表達(dá)式3可以出現(xiàn)幾個(gè)表達(dá)式,每個(gè)表達(dá)式之間用逗號(hào)隔開。,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,,,,,,int accum( ) int i=1,sum=0; for(;i<=100;i++) sum=sum+i; return sum; int accum( ) int i,sum; for(i=1,sum=0;i<=100;i++) sum=sum+i; return sum; ,int accum( ) int i=0,sum; for(sum=0;i<=100;i++) s
16、um=sum+i; return sum; ,,,int accum( ) int i,sum; for(i=1,sum=0; ;i++) sum=sum+i; return sum; ,死循環(huán),,,int accum( ) int i,sum=0; for(i=1;i<=100; ) sum=sum+i; return sum; ,死循環(huán),int accum( ) int i,sum=0; for(i=1;i<=100; ) sum=sum+i; i++; return sum; ,,,int accum( ) int i,sum=0; for(i=1;1
17、00;i++) sum=sum+i; return sum; ,死循環(huán),,例:求,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,int main() int t=0; for (int i=1,int j=1; i<=100 ,int main() int t=0,i=1,j=1; for (;i<=100 ,循環(huán)的嵌套 一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。循環(huán)可以多層嵌套。 如: while( ) while( ) ,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,do .. do while( ); while( ); for( ; ; ) .. for(;;) ,四、循環(huán)結(jié)構(gòu)和循環(huán)語句
18、,一種循環(huán)體內(nèi)也可以嵌套其他的循環(huán)體,如: while( ) .. do while( ); .. for(;; ) .. while( ) .. ,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,例: int main() for (int i=0;i<10;i++) for(int j=0;j<10;j++) if (j==9) cout<<*<
19、=j; j++; s+=f; cout<<*<< ; 執(zhí)行結(jié)果?,break語句和continue語句 我們已經(jīng)知道break語句可以使操作跳出switch結(jié)構(gòu)。此外break語句還可以用于循環(huán)體內(nèi)。 在循環(huán)體中break使操作從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán)。break語句只能用于循環(huán)語句和switch語句內(nèi),不能單獨(dú)使用或用于其他語句中。 continue語句的作用是結(jié)束本次循環(huán),即跳過循環(huán)體中continue下面尚未執(zhí)行的語句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。 下圖表示了這兩個(gè)語句的執(zhí)行過程流程圖。,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,break
20、,continue,編程舉例 例1、用下面公式求的近似值。/41-1/3+1/5-1/7+直到最后一項(xiàng)的絕對(duì)值小于10-7為止。 #include #include #include using namespace std; int main( ) int s=1; double n=1,t=1,pi=0;,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,while((fabs(t))1e-7) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; cout<
21、2、求出10000之內(nèi)的所有的完數(shù),如果一個(gè)整數(shù)他等于所有其因子的和,那么這個(gè)數(shù)就是完數(shù)。 #include using namespace std; int main( ) for(int i=1;i<10000;i++) int j=1,s=0;,四、循環(huán)結(jié)構(gòu)和循環(huán)語句,for(;j