第一講-多分支嵌套結(jié)構(gòu)的實(shí)現(xiàn)課件_第1頁(yè)
第一講-多分支嵌套結(jié)構(gòu)的實(shí)現(xiàn)課件_第2頁(yè)
第一講-多分支嵌套結(jié)構(gòu)的實(shí)現(xiàn)課件_第3頁(yè)
第一講-多分支嵌套結(jié)構(gòu)的實(shí)現(xiàn)課件_第4頁(yè)
第一講-多分支嵌套結(jié)構(gòu)的實(shí)現(xiàn)課件_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1第二部分

模塊化程序設(shè)計(jì)2第二部分主要內(nèi)容第一講多分支嵌套結(jié)構(gòu)的實(shí)現(xiàn)第二講循環(huán)嵌套結(jié)構(gòu)的實(shí)現(xiàn)第三講數(shù)據(jù)文件及應(yīng)用第四講指針及應(yīng)用3第一講

多分支嵌套結(jié)構(gòu)的實(shí)現(xiàn)4主要內(nèi)容回顧程序的三種基本結(jié)構(gòu)嵌套結(jié)構(gòu)選擇嵌套結(jié)構(gòu)——if語(yǔ)句深入switch語(yǔ)句應(yīng)用實(shí)例參考§2.2.2§2.3§2.45順序結(jié)構(gòu)選擇結(jié)構(gòu)三種基本結(jié)構(gòu)的示意圖循環(huán)結(jié)構(gòu)6嵌套結(jié)構(gòu)自頂向下,逐步細(xì)化的分析結(jié)果。三種基本結(jié)構(gòu)中的語(yǔ)句組(順序語(yǔ)句組、if分支語(yǔ)句組、else分支語(yǔ)句組、循環(huán)體語(yǔ)句組)可以包含任意結(jié)構(gòu)的語(yǔ)句,從而形成不同的嵌套結(jié)構(gòu)。嵌套結(jié)構(gòu)沒有特定的結(jié)構(gòu)形式,由分析方法自然形成。7選擇嵌套結(jié)構(gòu)——if語(yǔ)句深入if語(yǔ)句的多種結(jié)構(gòu)if和else的匹配原則8if語(yǔ)句的多種結(jié)構(gòu)語(yǔ)句1表達(dá)式語(yǔ)句2真假if(條件表達(dá)式)

語(yǔ)句1else

語(yǔ)句2雙分支結(jié)構(gòu)(復(fù)習(xí))十字路口或直行或右轉(zhuǎn)彎單分支結(jié)構(gòu)十字路口或直行或停選擇嵌套結(jié)構(gòu)多分支結(jié)構(gòu)參考§2.2.29單分支結(jié)構(gòu)if(條件)語(yǔ)句if(m==c)

m=m;elsem=c;if(c!=m)m=c;常見錯(cuò)誤寫法:語(yǔ)句1表達(dá)式真假示例:若m與c相同,m值不變,否則c的值給m正確寫法:?jiǎn)畏种ЫY(jié)構(gòu)示例-求絕對(duì)值#include<stdio.h>int

main(void){intnumber;

printf("Enteranumber:");

scanf("%d",&number);

if(number<0){number=-number;}

printf("Theabsolutevalueis%d.\n",number);return0;}10Enteranumber:10

Theabsolutevalueis10.Enteranumber:-300

Theabsolutevalueis300.sample21_02.cpp分析:負(fù)數(shù)求反,正數(shù)跳出編程實(shí)現(xiàn)11選擇嵌套結(jié)構(gòu)在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句--if語(yǔ)句的嵌套參考§

2.2.212完整嵌套結(jié)構(gòu)P39if(條件1)

if(條件2)語(yǔ)句1

else

語(yǔ)句2else

if(條件3)語(yǔ)句3

else

語(yǔ)句4表達(dá)式1表達(dá)式3語(yǔ)句4真假表達(dá)式2語(yǔ)句3語(yǔ)句1語(yǔ)句2真真假假注:條件多以表達(dá)式形式出現(xiàn)if(x<0){y=0;}elseif(x<=15){y=4*x/3;}

else{y=2.5*x-10.5;}13實(shí)例1(多分支)分段計(jì)算水費(fèi)sample21_03.cpp#include<stdio.h>int

main(void){doublex,y;

printf("Enterx:");

scanf("%lf",&x);

if(x<0){y=0;}elseif(x<=15){y=4*x/3;}

else{y=2.5*x-10.5;}printf("f(%.2f)=%.2f\n",x,y);return0;}Enterx:-0.5f(-0.50)=0.00Enterx:9.5f(9.50)=12.67Enterx:21.3f(21.30)=42.75寫出If語(yǔ)句完整程序,上機(jī)調(diào)試!2種嵌套if語(yǔ)句的比較y=x+1x<1y=y=x+21<=x<2y=x+3x>=214if(x<1)y=x+1;elseif(x<2)y=x+2;

elsey=x+3;if(x<2)

if(x<1)y=x+1;

elsey=x+2;elsey=x+3;

x<2x<1y=x+1y=x+2真

假真

y=x+3假假x<1x<2y=x+1y=x+2真

假真

y=x+3編程比較結(jié)果!15不對(duì)稱嵌套結(jié)構(gòu)示例:求實(shí)足年齡

sample21_04.cpp

age=sysY-bthY;

if(sysM<bthM)age=age-1;

else

if(sysM==bthM)

if(sysD<bthD) age=age-1;年齡=當(dāng)前年份-生日年份如果生日月份還沒到年齡減一歲否則如果生日月份已到但生日還沒到年齡減一歲age=sysY-bthY;

if(sysM<bthM)age=age-1;else

if((sysM==bthM)&&(sysD<bthD)) age=age-1;用復(fù)雜條件表示:16else和if的匹配if(表達(dá)式1)if(表達(dá)式2)語(yǔ)句1else語(yǔ)句2elseif(表達(dá)式3)語(yǔ)句3else語(yǔ)句4if(表達(dá)式1)if(表達(dá)式2)語(yǔ)句1

elseif(表達(dá)式3)語(yǔ)句3else語(yǔ)句4else與最靠近它的、沒有與別的else匹配過的if匹配if(表達(dá)式1)if(表達(dá)式2)語(yǔ)句1elseif(表達(dá)式3)語(yǔ)句3else語(yǔ)句417改變else和if的配對(duì)改寫下列if語(yǔ)句,使else和第1個(gè)if配對(duì)。if(x<2)if(x<1)y=x+1;elsey=x+2;if(x<2){if(x<1)y=x+1;}elsey=x+2;if(x<2)if(x<1)y=x+1;

else;elsey=x+2;18多分支結(jié)構(gòu)if(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2……elseif(表達(dá)式n-1)語(yǔ)句n-1else語(yǔ)句n#include<stdio.h>void

main(void){char

cLevel;

int

fScore;

printf("請(qǐng)輸入成績(jī):");

scanf("%d",&fScore); /*輸入成績(jī)*/

if(fScore>100||fScore<0){

printf("\n輸入成績(jī)錯(cuò)誤!");}

elseif(fScore>89) /*分?jǐn)?shù)fScore>=90*/

cLevel='A';

elseif(fScore>79) /*分?jǐn)?shù)90>fScore>=80*/

cLevel='B';

elseif(fScore>69) /*分?jǐn)?shù)80>fScore>=70*/

cLevel='C';

elseif(fScore>59)/*分?jǐn)?shù)70>fScore>=60*/

cLevel='D';

else

cLevel='E';/*分?jǐn)?shù)fScore<60*/

printf("該成績(jī)的等級(jí)為:%c\n",cLevel);}實(shí)例:

輸入百分制成績(jī),按A、B、C、D、E輸出相應(yīng)等級(jí)。#include<stdio.h>main(){int

fScore;charcLevel;

printf("請(qǐng)輸入成績(jī):");

scanf("%d",&fScore);

while(fScore

>100||fScore

<0){printf("\n輸入有誤,請(qǐng)重輸。");

scanf("%d",&fScore);}

switch(fScore

/10){case10:case9:cLevel

='A';break;case8:cLevel

='B';break;case7:cLevel

='C';break;case6:cLevel

='D';break;case5:case4:case3:case2:case1:case0:cLevel

='E';}

printf("成績(jī)是%d,相應(yīng)等級(jí)是%c。",fScore,cLevel);}#include<stdio.h>void

main(void){char

cLevel;

int

fScore;

printf("請(qǐng)輸入成績(jī):");

scanf("%d",&fScore);

if(fScore>100||fScore<0){

printf("\n輸入成績(jī)錯(cuò)誤!");}

elseif(fScore>89)

cLevel='A';

elseif(fScore>79)

cLevel='B';

elseif(fScore>69)

cLevel='C';

elseif(fScore>59)

cLevel='D';

else

cLevel='E';

printf("該成績(jī)等級(jí):%c\n",cLevel);}default:cLevel='E';21switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句段1;break;case常量表達(dá)式2:語(yǔ)句段2;break;....…case常量表達(dá)式n:語(yǔ)句段n;break;default:語(yǔ)句段n+1;}表達(dá)式的值=常量表達(dá)式2的值表達(dá)式語(yǔ)句段1語(yǔ)句段2語(yǔ)句段n語(yǔ)句段n+1表達(dá)式的值=常量表達(dá)式1的值表達(dá)式的值=常量表達(dá)式n的值其他breakbreakbreakbreakswitch(fScore

/10){case10:case9:cLevel

='A';break;case8:cLevel

='B';break;case7:cLevel

='C';break;case6:cLevel

='D';break;

default:cLevel='E';}22switch語(yǔ)句處理多分支選擇問題,3種情況1、在switch語(yǔ)句的每個(gè)語(yǔ)句段中都使用break語(yǔ)句,但不使用default

switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句段1;break;case常量表達(dá)式2:語(yǔ)句段2;break;....…case常量表達(dá)式n:語(yǔ)句段n;break;

default:語(yǔ)句段n+1;}2、在switch語(yǔ)句的每個(gè)語(yǔ)句段中都使用break語(yǔ)句,并使用default#include<stdio.h>main(){int

fScore;charcLevel;

printf("請(qǐng)輸入學(xué)生成績(jī):");

scanf("%d",&fScore);

while(fScore

>100||fScore

<0){printf("\n輸入有誤,請(qǐng)重輸。");

scanf("%d",&fScore);}

switch(fScore

/10){case10:case9:cLevel

='A';break;case8:cLevel

='B';break;case7:cLevel

='C';break;case6:cLevel

='D';break;case5:case4:case3:case2:case1:case0:cLevel

='E';}

printf("成績(jī)是%d,相應(yīng)等級(jí)是%c。",fScore,cLevel);}default:cLevel='E';

例2-5計(jì)算器程序。問題描述:任意輸入兩個(gè)數(shù),根據(jù)用戶選擇的功能菜單,求出它們的和、差、積、除的結(jié)果。#include<stdio.h>void

main(void){double

dLOper,dROper,dResult; /*存放左右操作數(shù)*/

int

nFun; /*存放運(yùn)算符*/

printf("--------------------------\n"); /*構(gòu)造功能菜單*/

printf("加法運(yùn)算--------1\n");

printf("減法運(yùn)算--------2\n");

printf("除法運(yùn)算--------3\n");

printf("乘法運(yùn)算--------4\n");

printf("--------------------------\n");

printf("請(qǐng)輸入功能選擇:");

scanf("%d",&nFun);

if(nFun>4||nFun<1)

printf("輸入錯(cuò)誤!\n");

else{

printf("請(qǐng)輸入兩個(gè)操作數(shù):");

scanf("%lf%lf",&dLOper,&dROper);/*輸入左右操作數(shù)和運(yùn)算符*/

switch(nFun){

case1:dResult=dLOper+dROper;break;/*加法*/

case2:dResult=dLOper-dROper;break;/*減法*/

case3:if(0.0==dROper){printf("右操作數(shù)不能為0\n");

return;}/*除法*/

else

dResult=dLOper/dROper;break;

default:dResult=dLOper*dROper;/*乘法*/ }

printf("計(jì)算結(jié)果為:%8.3lf\n",dResult);/*輸出結(jié)果*/

}}263、在switch中不使用breakswitch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句段1;case常量表達(dá)式2:語(yǔ)句段2;....…case常量表達(dá)式n:語(yǔ)句段n;default:語(yǔ)句段n+1;}27switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句段1;case常量表達(dá)式2:語(yǔ)句段2;....…case常量表達(dá)式n:語(yǔ)句段n;default:語(yǔ)句段n+1;}表達(dá)式的值=常量表達(dá)式2的值表達(dá)式語(yǔ)句段1語(yǔ)句段2語(yǔ)句段n語(yǔ)句段n+1表達(dá)式的值=常量表達(dá)式1的值表達(dá)式的值=常量表達(dá)式n的值其他fScore=89cLevel

=?switch(fScore/10){case10:case9:cLevel='A';case8:cLevel='B';case7:cLevel='C';case6:cLevel='D';default:cLevel='E';}求某年某月某日是該年的第幾天sample21_14.cpp//y—年,m—月,d—日//days—計(jì)算的天數(shù)days=d;switch(m-1){case12:days+=31;case11:days+=30;case10:days+=31;case9:days+=30;case8:days+=31;

case7:days+=31;case6:days+=30;case5:days+=31;case4:days+=30;case3:days+=31;case2:days+=isLeap(y)?29:28;case1:days+=31;}

28復(fù)合賦值運(yùn)算符P53days+=31→days=days+31在“=”前加上某些運(yùn)算符——復(fù)合賦值運(yùn)算符C語(yǔ)言可以構(gòu)成復(fù)合運(yùn)算符的有:+-*/%&^|<<>>詳見P53:表3-1雙目復(fù)合運(yùn)算符常用:+=-=*=等自增,自減運(yùn)算單目運(yùn)算符所構(gòu)成的復(fù)合賦值運(yùn)算++自增1--自減1如:i++參與運(yùn)算后,i+1++ii+1后,參與運(yùn)算i--參與運(yùn)算后,i-1--ii-1后,參與運(yùn)算intx=0,y=0,i=1;x=i++;y=++i;printf("x=%d,y=%d,i=%d",x,y,i);x=1,y=3,i=3條件表達(dá)式P39一般形式:表達(dá)式1?表達(dá)式2

:表達(dá)式3值:若“表達(dá)式1”的值為真,則以“表達(dá)式2”為該條件表達(dá)式的值;否則以“表達(dá)式3”為該條件表達(dá)式的值。通常用于賦值語(yǔ)句中,如:days+=isLeap(y)?29:28;if(a>b)max=a;elsemax=b→max=(a>b)?a:b;32Is函數(shù)構(gòu)造判斷函數(shù),返回1或0表示真或假調(diào)用時(shí)通常表示一個(gè)條件,運(yùn)用if語(yǔ)句再作進(jìn)一步處理。判奇數(shù)int

isOdd(intm)判偶數(shù)int

isEven(intm)判閏年int

isLeap(intyear)

33判奇數(shù)

int

isOdd(intm)

{if(m%2==1)return1;elsereturn0;}int

isOdd(intm)

{returnm%2;}34判偶數(shù)

int

isEven(intm)

{if(m%2==0)return1;elsereturn0;}int

isEven(intm)

{return!(m%2);}35判閏年int

isLeap(intyear){return((year%4==0&&year%100!=0)||year%400==0);}

完整程序:求2010年3月20日是2010年的第幾天#include<stdio.h>int

isLeap(intyear);voidmain(){int

y,m,d,days;y=2010,m=3,d=20;

days=d;switch(m-1){case12:days+=31;case11:days+=30;case10:days+=31;case9:days+=30;case8:days+=31;case7:days+=31;case6:days+=30;case5:days+=31;case4:days+=30;case3:days+=31;

case2:days+=isLeap(y)?29:28;

case1:days+=31;}

printf("days=%d",days);}int

isLeap(intyear){return(year%4==0&&year%100!=0||year%400==0);}運(yùn)行過程days=20m-1=22010%4!=0且2010%400!=0返回0days=20+28=48days=48+31days=79改為通用程序,從鍵盤輸入年、月、日!37實(shí)例1假設(shè)自動(dòng)售貨機(jī)出售4種商品,薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可樂(cola),售價(jià)分別是每份3.0、2.5、4.0和3.5元。在屏幕上顯示以下菜單當(dāng)用戶輸入編號(hào)1~4,顯示相應(yīng)商品的價(jià)格;輸入0,退出查詢;輸入其他編號(hào),顯示價(jià)格為0。[1]Selectcrisps[2]Selectpopcorn

[3]Selectchocolate[4]Selectcola

[0]Exit上機(jī)編程,調(diào)試實(shí)現(xiàn)!38#include<stdio.h>int

main(void){intchoice;doubleprice;printf("[1]Selectcrisps\n");printf("[2]Selectpopcorn\n");printf("[3]Selectchocolate\n");printf("[4]Selectcola\n");printf("[0]exit\n");

printf("Enterchoice:");

scanf("%d",&choice);

if(choice==0)return0;

switch(choice){case1:price=3.0;break;case2:price=2.5;break;case3:price=4.0;break;case4:price=3.5;break;default:price=0.0;break;

}

printf("pric

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論