新版西電C語(yǔ)言課件-04-多分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第1頁(yè)
新版西電C語(yǔ)言課件-04-多分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第2頁(yè)
新版西電C語(yǔ)言課件-04-多分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第3頁(yè)
新版西電C語(yǔ)言課件-04-多分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第4頁(yè)
新版西電C語(yǔ)言課件-04-多分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。#include<stdio.h>#include<math.h>intmain(){doublex,y;//floatx,y;scanf("%lf",&x);if(x>=1&&x<2){x=2*x+5;

printf("%lf\n",y);}if(x>=2&&x<3){x=x*sin(x)-1;printf("%lf\n",y);}if(x>=3&&x<4){x=sqrt(1+x*x);printf("%lf\n",y);}if(x>=4&&x<5){x=x*x-2*x+5;printf("%lf\n",y);}return0;}練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。#include練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。#include<stdio.h>#include<math.h>intmain(){doublex,y;//floatx,y;scanf("%lf",&x);if(x>=1&&x<2){x=2*x+5;}if(x>=2&&x<3){x=x*sin(x)-1;}if(x>=3&&x<4)x=sqrt(1+x*x);if(x>=4&&x<5)x=x*x-2*x+5;

printf("%lf\n",y);return0;}#include<stdio.h>#include<math.h>intmain(){doublex,y;//floatx,y;scanf("%lf",&x);if(x>=1&&x<2)x=2*x+5;elseif(x>=2&&x<3)x=x*sin(x)-1;elseif(x>=3&&x<4)x=sqrt(1+x*x);elseif(x>=4&&x<5)x=x*x-2*x+5;

printf("%lf\n",y);return0;}功能相同效率不同練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。#include練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。#include<stdio.h>#include<math.h>intmain(){doublex,y;//floatx,y;scanf("%lf",&x);if(x<1||x>5)return0;

if(x>=1&&x<2)x=2*x+5;elseif(x>=2&&x<3)x=x*sin(x)-1;elseif(x>=3&&x<4)x=sqrt(1+x*x);elseif(x>=4&&x<5)x=x*x-2*x+5;

printf("%lf\n",y);return0;}#include<stdio.h>#include<math.h>intmain(){doublex,y;//floatx,y;scanf("%lf",&x);if(x>=1&&x<2)x=2*x+5;elseif(x>=2&&x<3)x=x*sin(x)-1;elseif(x>=3&&x<4)x=sqrt(1+x*x);elseif(x>=4&&x<5)x=x*x-2*x+5;

printf("%lf\n",y);return0;}有何不同練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。#include主要內(nèi)容多分支選擇結(jié)構(gòu)switch語(yǔ)句循環(huán)結(jié)構(gòu)while語(yǔ)句主要內(nèi)容多分支選擇結(jié)構(gòu)多分支的選擇結(jié)構(gòu)多分支的選擇結(jié)構(gòu)多分支的選擇結(jié)構(gòu)根據(jù)同一個(gè)表達(dá)式的各種取值分情況處理表達(dá)式e?語(yǔ)句序列1值1語(yǔ)句序列2值2語(yǔ)句序列n+1其他值語(yǔ)句序列n值n...多分支的選擇結(jié)構(gòu)根據(jù)同一個(gè)表達(dá)式的各種取值分情況處理表達(dá)式eswitch語(yǔ)句switch語(yǔ)句用于表示多分支的選擇結(jié)構(gòu),其基本形式為:switch(表達(dá)式e){

case常量表達(dá)式1:語(yǔ)句序列1;break;

case常量表達(dá)式2:語(yǔ)句序列2;break;......

case常量表達(dá)式n:語(yǔ)句序列n;break;

default:語(yǔ)句序列n+1;}switch語(yǔ)句的含義是:若表達(dá)式e的值等于某個(gè)常量表達(dá)式i的值,則執(zhí)行相應(yīng)的語(yǔ)句序列i;否則,執(zhí)行default的語(yǔ)句序列。什么是常量表達(dá)式?switch語(yǔ)句switch語(yǔ)句用于表示多分支的選擇結(jié)構(gòu),其switch語(yǔ)句的使用舉例問題:輸入一個(gè)百分制的成績(jī),將其轉(zhuǎn)換為等級(jí)分制輸出。規(guī)則如下:90~100:A80~89:B70~79:C60~69:D低于60:Fswitch語(yǔ)句的使用舉例問題:輸入一個(gè)百分制的成績(jī),將其轉(zhuǎn)成績(jī)轉(zhuǎn)換1(用if語(yǔ)句)#include<stdio.h>main(){intscore;

printf("inputascore(0~100):");scanf("%d",&score);if(score>=90){printf("grade=A\n");}elseif(score>=80){printf("grade=B\n");}elseif(score>=70){printf("grade=C\n");}elseif(score>=60){printf("grade=D\n");}else{printf("grade=F\n");}}成績(jī)轉(zhuǎn)換1(用if語(yǔ)句)#include<stdio.h>成績(jī)轉(zhuǎn)換2#include<stdio.h>main(){intscore;/*score用于表示百分制分?jǐn)?shù)*/

printf("inputscore(0~100):");scanf("%d",&score);switch(score/10){case10:printf("grade=A\n");break;case9:printf("grade=A\n");break;

case8:printf("grade=B\n");break;case7:printf("grade=C\n");break;case6:printf("grade=D\n");break;

case5:printf("grade=F\n");break;case4:printf("grade=F\n");break;case3:printf("grade=F\n");break;case2:printf("grade=F\n");break;case1:printf("grade=F\n");break;case0:printf("grade=F\n");break;}}沒有這些break,該程序的執(zhí)行結(jié)果是什么?成績(jī)轉(zhuǎn)換2#include<stdio.h>沒有這些bre缺少break的switch語(yǔ)句示例switch(n)

{case1:printf("grade=A\n");case2:printf("grade=B\n");case3:printf("grade=C\n");case4:printf("grade=D\n");case5:printf("grade=F\n");

}

n==1?YesNo輸出grade=A輸出grade=Bn==2?YesNo輸出grade=C輸出grade=D輸出grade=Fn==3?YesNon==4?YesNon==5?YesNo缺少break的switch語(yǔ)句示例switch(n)成績(jī)轉(zhuǎn)換3#include<stdio.h>main(){intscore,grade;printf("inputascore(0~100):");scanf("%d",&score);grade=score/10;switch(grade){case10:case9:printf("grade=A\n");break;case8:printf("grade=B\n");break;case7:printf("grade=C\n");break;成績(jī)轉(zhuǎn)換3#include<stdio.h>成績(jī)轉(zhuǎn)換3(續(xù))case6:printf("grade=D\n");break;

case5:case4:case3:case2:case1:case0:printf("grade=F\n");break;default:printf("Invalidinput!\n");}}成績(jī)轉(zhuǎn)換3(續(xù))case6:pr成績(jī)轉(zhuǎn)換4(if和switch結(jié)合使用)#include<stdio.h>main(){intscore,n;

printf("inputascore(0~100):");scanf("%d",&score);if(score>=90)n=1;elseif(score>=80)n=2;elseif(score>=70)n=3;elseif(score>=60)n=4;elsen=5;switch(n)

{case1:printf("grade=A\n");break;case2:printf("grade=B\n");break;case3:printf("grade=C\n");break;case4:printf("grade=D\n");break;case5:printf("grade=F\n");break;

}/*endofswitch*/}/*endofmain*/

成績(jī)轉(zhuǎn)換4(if和switch結(jié)合使用)#include<成績(jī)轉(zhuǎn)換5(if和switch結(jié)合使用)#include<stdio.h>main(){intscore,n;

printf("inputascore(0~100):");scanf("%d",&score);if(score<60)n=0;elsen=(score–60)/10+1;

switch(n)

{

case5:case4:

printf("grade=A\n");break;case3:printf("grade=B\n");break;case2:printf("grade=C\n");break;case1:printf("grade=D\n");break;

case0:

printf("grade=F\n);

break;

}/*endofswitch*/}/*endofmain*/

至此,我們已經(jīng)了解了if語(yǔ)句和switch語(yǔ)句的含義和用法,那么,程序中使用if語(yǔ)句的地方能否用switch語(yǔ)句替換呢?成績(jī)轉(zhuǎn)換5(if和switch結(jié)合使用)#include<switch中的break語(yǔ)句break語(yǔ)句的目的終止switch語(yǔ)句的執(zhí)行如果沒有break語(yǔ)句,則程序會(huì)從指定的case分支開始,并在該分支結(jié)束后繼續(xù)執(zhí)行下去除非switch語(yǔ)句結(jié)束,后面的其他case分支或default分支中的語(yǔ)句都會(huì)得到執(zhí)行原因:case子句中的常數(shù)表達(dá)式僅起到語(yǔ)句標(biāo)號(hào)的作用,不是分支之間的分隔標(biāo)記省略break語(yǔ)句的場(chǎng)合允許多個(gè)分支執(zhí)行同樣的代碼switch中的break語(yǔ)句break語(yǔ)句的目的switch中的break示例編寫程序,接受用戶輸入的年份和月份,輸出該月天數(shù)#include<stdio.h>#include"zylib.h"intmain(){intyear,month,days_of_month; BOOLleapyear=FALSE;

/*輸入部分*/printf("Theprogramgetsayearandamonth,andprintsdaysofthemonth.\n");printf("Theyear:"); year=GetIntegerFromKeyboard();printf("Themonth:"); month=GetIntegerFromKeyboard();if(month<1||month>12){ printf("Montherror!\n"); return1; }

/*計(jì)算部分*/leapyear=year%4==0&&year%100!=0||year%400==0;

switch(month){case1:case3:case5:case7:case8:case10:case12:days_of_month=31;break;case4:case6:case9:case11:days_of_month=30;break;case2:days_of_month=28+(int)leapyear;break;}

/*輸出部分*/printf("Daysin%4d-%2.2dis%d.\n",year,month,days_of_month);return0;}switch中的break示例編寫程序,接受用戶輸入的年份while((c=getchar())!=EOF)switch(c){case'':nb++;break;case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':case'0':nd++;break;case'\n':nl++;break;case'{':case'}':nc++;break;default:nn++;break;}switch中的break示例while((c=getchar())!=EOF)Switch舉例6#include<stdio.h>voidmain(){inta=1,b=6,c=4,d=2;switch(a++){case1:c++;d++;case2:switch(++b) {case7:c++; case8:d++;}case3:c++;d++; break;case4:c++; d++;}printf("%d,%d\n",c,d);}Switch舉例6#include<stdio.h>switch語(yǔ)句小結(jié)switch語(yǔ)句用于表示多分支的選擇結(jié)構(gòu),可以用if語(yǔ)句等價(jià)地表示switch(表達(dá)式e){

case常量表達(dá)式1:語(yǔ)句序列1;break;

case常量表達(dá)式2:語(yǔ)句序列2;break;......

case常量表達(dá)式n:語(yǔ)句序列n;break;

default:語(yǔ)句序列n+1;}可以將各種情況進(jìn)行歸納后再用switch語(yǔ)句表示,例如

grade=score/10;break語(yǔ)句在switch語(yǔ)句中有很重要的作用switch語(yǔ)句小結(jié)switch語(yǔ)句用于表示多分支的選擇結(jié)構(gòu)選擇結(jié)構(gòu)程序設(shè)計(jì)小結(jié)掌握并熟練應(yīng)用if語(yǔ)句和switch語(yǔ)句pAB成立不成立ab選擇結(jié)構(gòu)1pA成立不成立ab選擇結(jié)構(gòu)2表達(dá)式e?語(yǔ)句序列1值1語(yǔ)句序列2值2語(yǔ)句序列n+1其他值語(yǔ)句序列n值n...選擇結(jié)構(gòu)程序設(shè)計(jì)小結(jié)掌握并熟練應(yīng)用if語(yǔ)句和switch語(yǔ)句C的循環(huán)語(yǔ)句C語(yǔ)言提供了描述循環(huán)計(jì)算的語(yǔ)句:

while語(yǔ)句

do...while語(yǔ)句

for語(yǔ)句學(xué)習(xí)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)就是掌握以上語(yǔ)句的使用方法C的循環(huán)語(yǔ)句C語(yǔ)言提供了描述循環(huán)計(jì)算的語(yǔ)句:學(xué)習(xí)循環(huán)結(jié)構(gòu)程序while語(yǔ)句while語(yǔ)句while語(yǔ)句的格式和含義while語(yǔ)句的格式:while(表達(dá)式p)

循環(huán)體語(yǔ)句ApA真

假循環(huán)結(jié)構(gòu)while語(yǔ)句的含義:1)

計(jì)算表達(dá)式p;2)

若表達(dá)式的值為“假”,則結(jié)束while語(yǔ)句的執(zhí)行;否則,執(zhí)行循環(huán)體語(yǔ)句A,然后轉(zhuǎn)1);while語(yǔ)句的格式和含義while語(yǔ)句的格式:whilewhile語(yǔ)句使用舉例1#include<stdio.h>intmain(){

inti,s;i=1;s=0;

while(i<=100){s+=i;i++;}printf("%d\n",s);return0;}BYNI←1S←0I<=100?S←S+I輸出S的值開始結(jié)束I←I+1ACwhile語(yǔ)句使用舉例1#include<stdio.h>求最大公約數(shù)和最小公倍數(shù)

voidmain(){ inta,b,s1,s2;//s1:最大公約數(shù)s2:最小公倍數(shù) inti,j,min,max; printf("請(qǐng)輸入兩個(gè)整數(shù):\n"); scanf("%d%d",&a,&b); min=a<b?a:b; max=a>b?a:b; s1=s2=0; for(i=1;i<=min;i++){

if(min%i==0&&max%i==0) s1=i; else continue; } for(j=a*b;j>=max;j--){

if(j%max==0&&j%min==0) s2=j; else continue; } printf("%d與%d的最大公約數(shù)為:%d\t最小公倍數(shù)為:%d\n",a,b,s1,s2);}求最大公約數(shù)和最小公倍數(shù)

voidmain(){ABCD求最大公約數(shù)流程圖(歐氏算法)YNr不等于0?輸出n的值輸入正整數(shù)m和n開始結(jié)束m←n;n←rr←m%nABCDr←m%nABCD求最大公約數(shù)流程圖(歐氏算法)YNr不等于0?輸出n求最大公約數(shù)程序#include<stdio.h>intmain(){

return0;}YNr不等于0?輸出n的值輸入正整數(shù)m和n開始結(jié)束m←n;n←rr←m%nr←m%nwhile(r!=0){m=n;n=r;r=m%n;}printf("inputtwointegers:");scanf("%d%d",&m,&n);r=m%n;intm,n,r;printf("\ngcd=%d\n",n);求最大公約數(shù)程序#include<stdio.h>YNr分析問題,在求解過(guò)程中:存在一個(gè)(些)運(yùn)算(動(dòng)作)需要重復(fù)進(jìn)行(循環(huán))若干次。重復(fù)的次數(shù)是事先確定的,或者是根據(jù)條件確定的。處理循環(huán)計(jì)算需要明確的三個(gè)問題:循環(huán)體:哪些運(yùn)算(動(dòng)作)是需要重復(fù)進(jìn)行的;循環(huán)條件:重復(fù)這些運(yùn)算的條件是什么,即在什么情況下終止/繼續(xù)這個(gè)重復(fù)的過(guò)程。循環(huán)準(zhǔn)備:在進(jìn)行重復(fù)的運(yùn)算處理之前,需要進(jìn)行的準(zhǔn)備工作是什么;循環(huán)結(jié)構(gòu)程序的編寫要點(diǎn)分析問題,在求解過(guò)程中:循環(huán)結(jié)構(gòu)程序的編寫要點(diǎn)程序設(shè)計(jì)練習(xí)一球從100m高度自由落下,每次落地后反跳回原來(lái)高度的一半,再落下。求它在第10次落地時(shí),共經(jīng)過(guò)多少米?第10次反彈的高度是多少?程序設(shè)計(jì)練習(xí)一球從100m高度自由落下,每次落地后反跳回原來(lái)落地-反彈一球從100m高度自由落下,每次落地后反跳回原來(lái)高度的一半,再落下。求它在第10次落地時(shí),共經(jīng)過(guò)多少米?第10次反彈的高度是多少?100m50m25m12.5m設(shè):i:落地次數(shù)計(jì)數(shù)h:每次落地時(shí)的高度sum:落地和反彈所經(jīng)過(guò)的總長(zhǎng)度h1h2h3h4落地-反彈一球從100m高度自由落下,每次落地后反跳回原來(lái)高落地-反彈(續(xù)1)#include<stdio.h>main(){

sum-=h;printf("h=%lf,sum=%lf\n",h,sum);}TC2.0循環(huán)體中必須包含能改變循環(huán)條件的語(yǔ)句,使得重復(fù)計(jì)算過(guò)程能夠結(jié)束sum+=h;

/*將本次落下的高度h累加到距離的總長(zhǎng)度中*/h=h/2;

/*反彈*/sum=sum+h;

/*將反彈的高度h累加到距離的總長(zhǎng)度中*/i=i+1;

doubleh=100,sum=0;inti;i=1;/*落地次數(shù)*/while(i<=10){

}落地-反彈(續(xù)1)#include<stdio.h>TC2反彈-落地100m50m25m12.5m設(shè):i:落地次數(shù)計(jì)數(shù)h:每次落地時(shí)的高度sum:落地和反彈所經(jīng)過(guò)的總長(zhǎng)度h1h2h3h4反彈-落地100m50m25m12.5m設(shè):h1h2h3h4反彈-落地(續(xù)2)#include<stdio.h>main(){

h=h/2;printf("h=%lf,sum=%lf\n",h,sum);}doubleh=100,sum=100;inti;i=1;/*反彈和落地次數(shù)*/

h=h/2;

/*反彈至前次落地高度的一半*/sum=sum+h*2;

/*完成前次落地后的總距離+(前次落地后的反彈+本次落地)距離*/i=i+1;while(i<=9){

}

反彈-落地(續(xù)2)#include<stdio.h>dou練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。#include<stdio.h>#include<math.h>intmain(){doublex,y;//floatx,y;scanf("%lf",&x);if(x>=1&&x<2){x=2*x+5;

printf("%lf\n",y);}if(x>=2&&x<3){x=x*sin(x)-1;printf("%lf\n",y);}if(x>=3&&x<4){x=sqrt(1+x*x);printf("%lf\n",y);}if(x>=4&&x<5){x=x*x-2*x+5;printf("%lf\n",y);}return0;}練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。#include練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。#include<stdio.h>#include<math.h>intmain(){doublex,y;//floatx,y;scanf("%lf",&x);if(x>=1&&x<2){x=2*x+5;}if(x>=2&&x<3){x=x*sin(x)-1;}if(x>=3&&x<4)x=sqrt(1+x*x);if(x>=4&&x<5)x=x*x-2*x+5;

printf("%lf\n",y);return0;}#include<stdio.h>#include<math.h>intmain(){doublex,y;//floatx,y;scanf("%lf",&x);if(x>=1&&x<2)x=2*x+5;elseif(x>=2&&x<3)x=x*sin(x)-1;elseif(x>=3&&x<4)x=sqrt(1+x*x);elseif(x>=4&&x<5)x=x*x-2*x+5;

printf("%lf\n",y);return0;}功能相同效率不同練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。#include練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。#include<stdio.h>#include<math.h>intmain(){doublex,y;//floatx,y;scanf("%lf",&x);if(x<1||x>5)return0;

if(x>=1&&x<2)x=2*x+5;elseif(x>=2&&x<3)x=x*sin(x)-1;elseif(x>=3&&x<4)x=sqrt(1+x*x);elseif(x>=4&&x<5)x=x*x-2*x+5;

printf("%lf\n",y);return0;}#include<stdio.h>#include<math.h>intmain(){doublex,y;//floatx,y;scanf("%lf",&x);if(x>=1&&x<2)x=2*x+5;elseif(x>=2&&x<3)x=x*sin(x)-1;elseif(x>=3&&x<4)x=sqrt(1+x*x);elseif(x>=4&&x<5)x=x*x-2*x+5;

printf("%lf\n",y);return0;}有何不同練習(xí)編寫程序,輸入x的值,按下式計(jì)算y的值。#include主要內(nèi)容多分支選擇結(jié)構(gòu)switch語(yǔ)句循環(huán)結(jié)構(gòu)while語(yǔ)句主要內(nèi)容多分支選擇結(jié)構(gòu)多分支的選擇結(jié)構(gòu)多分支的選擇結(jié)構(gòu)多分支的選擇結(jié)構(gòu)根據(jù)同一個(gè)表達(dá)式的各種取值分情況處理表達(dá)式e?語(yǔ)句序列1值1語(yǔ)句序列2值2語(yǔ)句序列n+1其他值語(yǔ)句序列n值n...多分支的選擇結(jié)構(gòu)根據(jù)同一個(gè)表達(dá)式的各種取值分情況處理表達(dá)式eswitch語(yǔ)句switch語(yǔ)句用于表示多分支的選擇結(jié)構(gòu),其基本形式為:switch(表達(dá)式e){

case常量表達(dá)式1:語(yǔ)句序列1;break;

case常量表達(dá)式2:語(yǔ)句序列2;break;......

case常量表達(dá)式n:語(yǔ)句序列n;break;

default:語(yǔ)句序列n+1;}switch語(yǔ)句的含義是:若表達(dá)式e的值等于某個(gè)常量表達(dá)式i的值,則執(zhí)行相應(yīng)的語(yǔ)句序列i;否則,執(zhí)行default的語(yǔ)句序列。什么是常量表達(dá)式?switch語(yǔ)句switch語(yǔ)句用于表示多分支的選擇結(jié)構(gòu),其switch語(yǔ)句的使用舉例問題:輸入一個(gè)百分制的成績(jī),將其轉(zhuǎn)換為等級(jí)分制輸出。規(guī)則如下:90~100:A80~89:B70~79:C60~69:D低于60:Fswitch語(yǔ)句的使用舉例問題:輸入一個(gè)百分制的成績(jī),將其轉(zhuǎn)成績(jī)轉(zhuǎn)換1(用if語(yǔ)句)#include<stdio.h>main(){intscore;

printf("inputascore(0~100):");scanf("%d",&score);if(score>=90){printf("grade=A\n");}elseif(score>=80){printf("grade=B\n");}elseif(score>=70){printf("grade=C\n");}elseif(score>=60){printf("grade=D\n");}else{printf("grade=F\n");}}成績(jī)轉(zhuǎn)換1(用if語(yǔ)句)#include<stdio.h>成績(jī)轉(zhuǎn)換2#include<stdio.h>main(){intscore;/*score用于表示百分制分?jǐn)?shù)*/

printf("inputscore(0~100):");scanf("%d",&score);switch(score/10){case10:printf("grade=A\n");break;case9:printf("grade=A\n");break;

case8:printf("grade=B\n");break;case7:printf("grade=C\n");break;case6:printf("grade=D\n");break;

case5:printf("grade=F\n");break;case4:printf("grade=F\n");break;case3:printf("grade=F\n");break;case2:printf("grade=F\n");break;case1:printf("grade=F\n");break;case0:printf("grade=F\n");break;}}沒有這些break,該程序的執(zhí)行結(jié)果是什么?成績(jī)轉(zhuǎn)換2#include<stdio.h>沒有這些bre缺少break的switch語(yǔ)句示例switch(n)

{case1:printf("grade=A\n");case2:printf("grade=B\n");case3:printf("grade=C\n");case4:printf("grade=D\n");case5:printf("grade=F\n");

}

n==1?YesNo輸出grade=A輸出grade=Bn==2?YesNo輸出grade=C輸出grade=D輸出grade=Fn==3?YesNon==4?YesNon==5?YesNo缺少break的switch語(yǔ)句示例switch(n)成績(jī)轉(zhuǎn)換3#include<stdio.h>main(){intscore,grade;printf("inputascore(0~100):");scanf("%d",&score);grade=score/10;switch(grade){case10:case9:printf("grade=A\n");break;case8:printf("grade=B\n");break;case7:printf("grade=C\n");break;成績(jī)轉(zhuǎn)換3#include<stdio.h>成績(jī)轉(zhuǎn)換3(續(xù))case6:printf("grade=D\n");break;

case5:case4:case3:case2:case1:case0:printf("grade=F\n");break;default:printf("Invalidinput!\n");}}成績(jī)轉(zhuǎn)換3(續(xù))case6:pr成績(jī)轉(zhuǎn)換4(if和switch結(jié)合使用)#include<stdio.h>main(){intscore,n;

printf("inputascore(0~100):");scanf("%d",&score);if(score>=90)n=1;elseif(score>=80)n=2;elseif(score>=70)n=3;elseif(score>=60)n=4;elsen=5;switch(n)

{case1:printf("grade=A\n");break;case2:printf("grade=B\n");break;case3:printf("grade=C\n");break;case4:printf("grade=D\n");break;case5:printf("grade=F\n");break;

}/*endofswitch*/}/*endofmain*/

成績(jī)轉(zhuǎn)換4(if和switch結(jié)合使用)#include<成績(jī)轉(zhuǎn)換5(if和switch結(jié)合使用)#include<stdio.h>main(){intscore,n;

printf("inputascore(0~100):");scanf("%d",&score);if(score<60)n=0;elsen=(score–60)/10+1;

switch(n)

{

case5:case4:

printf("grade=A\n");break;case3:printf("grade=B\n");break;case2:printf("grade=C\n");break;case1:printf("grade=D\n");break;

case0:

printf("grade=F\n);

break;

}/*endofswitch*/}/*endofmain*/

至此,我們已經(jīng)了解了if語(yǔ)句和switch語(yǔ)句的含義和用法,那么,程序中使用if語(yǔ)句的地方能否用switch語(yǔ)句替換呢?成績(jī)轉(zhuǎn)換5(if和switch結(jié)合使用)#include<switch中的break語(yǔ)句break語(yǔ)句的目的終止switch語(yǔ)句的執(zhí)行如果沒有break語(yǔ)句,則程序會(huì)從指定的case分支開始,并在該分支結(jié)束后繼續(xù)執(zhí)行下去除非switch語(yǔ)句結(jié)束,后面的其他case分支或default分支中的語(yǔ)句都會(huì)得到執(zhí)行原因:case子句中的常數(shù)表達(dá)式僅起到語(yǔ)句標(biāo)號(hào)的作用,不是分支之間的分隔標(biāo)記省略break語(yǔ)句的場(chǎng)合允許多個(gè)分支執(zhí)行同樣的代碼switch中的break語(yǔ)句break語(yǔ)句的目的switch中的break示例編寫程序,接受用戶輸入的年份和月份,輸出該月天數(shù)#include<stdio.h>#include"zylib.h"intmain(){intyear,month,days_of_month; BOOLleapyear=FALSE;

/*輸入部分*/printf("Theprogramgetsayearandamonth,andprintsdaysofthemonth.\n");printf("Theyear:"); year=GetIntegerFromKeyboard();printf("Themonth:"); month=GetIntegerFromKeyboard();if(month<1||month>12){ printf("Montherror!\n"); return1; }

/*計(jì)算部分*/leapyear=year%4==0&&year%100!=0||year%400==0;

switch(month){case1:case3:case5:case7:case8:case10:case12:days_of_month=31;break;case4:case6:case9:case11:days_of_month=30;break;case2:days_of_month=28+(int)leapyear;break;}

/*輸出部分*/printf("Daysin%4d-%2.2dis%d.\n",year,month,days_of_month);return0;}switch中的break示例編寫程序,接受用戶輸入的年份while((c=getchar())!=EOF)switch(c){case'':nb++;break;case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':case'0':nd++;break;case'\n':nl++;break;case'{':case'}':nc++;break;default:nn++;break;}switch中的break示例while((c=getchar())!=EOF)Switch舉例6#include<stdio.h>voidmain(){inta=1,b=6,c=4,d=2;switch(a++){case1:c++;d++;case2:switch(++b) {case7:c++; case8:d++;}case3:c++;d++; break;case4:c++; d++;}printf("%d,%d\n",c,d);}Switch舉例6#include<stdio.h>switch語(yǔ)句小結(jié)switch語(yǔ)句用于表示多分支的選擇結(jié)構(gòu),可以用if語(yǔ)句等價(jià)地表示switch(表達(dá)式e){

case常量表達(dá)式1:語(yǔ)句序列1;break;

case常量表達(dá)式2:語(yǔ)句序列2;break;......

case常量表達(dá)式n:語(yǔ)句序列n;break;

default:語(yǔ)句序列n+1;}可以將各種情況進(jìn)行歸納后再用switch語(yǔ)句表示,例如

grade=score/10;break語(yǔ)句在switch語(yǔ)句中有很重要的作用switch語(yǔ)句小結(jié)switch語(yǔ)句用于表示多分支的選擇結(jié)構(gòu)選擇結(jié)構(gòu)程序設(shè)計(jì)小結(jié)掌握并熟練應(yīng)用if語(yǔ)句和switch語(yǔ)句pAB成立不成立ab選擇結(jié)構(gòu)1pA成立不成立ab選擇結(jié)構(gòu)2表達(dá)式e?語(yǔ)句序列1值1語(yǔ)句序列2值2語(yǔ)句序列n+1其他值語(yǔ)句序列n值n...選擇結(jié)構(gòu)程序設(shè)計(jì)小結(jié)掌握并熟練應(yīng)用if語(yǔ)句和switch語(yǔ)句C的循環(huán)語(yǔ)句C語(yǔ)言提供了描述循環(huán)計(jì)算的語(yǔ)句:

while語(yǔ)句

do...while語(yǔ)句

for語(yǔ)句學(xué)習(xí)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)就是掌握以上語(yǔ)句的使用方法C的循環(huán)語(yǔ)句C語(yǔ)言提供了描述循環(huán)計(jì)算的語(yǔ)句:學(xué)習(xí)循環(huán)結(jié)構(gòu)程序while語(yǔ)句while語(yǔ)句while語(yǔ)句的格式和含義while語(yǔ)句的格式:while(表達(dá)式p)

循環(huán)體語(yǔ)句ApA真

假循環(huán)結(jié)構(gòu)while語(yǔ)句的含義:1)

計(jì)算表達(dá)式p;2)

若表達(dá)式的值為“假”,則結(jié)束while語(yǔ)句的執(zhí)行;否則,執(zhí)行循環(huán)體語(yǔ)句A,然后轉(zhuǎn)1);while語(yǔ)句的格式和含義while語(yǔ)句的格式:whilewhile語(yǔ)句使用舉例1#include<stdio.h>intmain(){

inti,s;i=1;s=0;

while(i<=100){

溫馨提示

  • 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ù)覽,若沒有圖紙預(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)論