




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章選擇分支結(jié)構(gòu)程序設(shè)計(jì)第1頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月C語(yǔ)言程序設(shè)計(jì)例:
銀行存款的例子設(shè)銀行定期存款年利率rate一年3.8%二年4.50%三年5.22%五年及以上5.76%并已知存款期為n年,存款本金為capital元,編程計(jì)算n年后本息之和deposit.第2頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月C語(yǔ)言程序設(shè)計(jì)例:用C語(yǔ)言實(shí)現(xiàn)圖示的分段函數(shù)。
sin(x)/xx=0y=
1x=0分析問(wèn)題(建立數(shù)學(xué)模型,選擇公式
),確定算法。
輸入x;判斷x值;根據(jù)x值,計(jì)算y值;輸出y值。顯然②③順序結(jié)構(gòu)不能實(shí)現(xiàn),需用選擇結(jié)構(gòu)。第3頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月C語(yǔ)言程序設(shè)計(jì)
2.寫(xiě)出算法描述第4頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月C語(yǔ)言程序設(shè)計(jì)
3.編寫(xiě)程序:用計(jì)算機(jī)語(yǔ)言寫(xiě)出實(shí)現(xiàn)算法的程序。#include<stdio.h>#include<math.h>voidmain(){floatx,y;printf(“Enterx:”);scanf(“%f”,&x);
if(x!=0.0)y=sin(x)/x;elsey=1;printf(“x=%5.2f\ty=%7.2f\n”,x,y);}第5頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月C語(yǔ)言程序設(shè)計(jì)
3.編寫(xiě)程序:用計(jì)算機(jī)語(yǔ)言寫(xiě)出實(shí)現(xiàn)算法的程序。#include<stdio.h>#include<math.h>voidmain(){floatx,y;printf(“Enterx:”);scanf(“%f”,&x);
if(x!=0.0)y=sin(x)/x;elsey=1;printf(“x=%5.2f\ty=%7.2f\n”,x,y);}第6頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月C語(yǔ)言程序設(shè)計(jì)
4.輸入(編輯)程序,編譯、連接、執(zhí)行程序,輸出結(jié)果(測(cè)試)第7頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月C語(yǔ)言程序設(shè)計(jì)選擇結(jié)構(gòu)是三種基本結(jié)構(gòu)(順序、選擇、循環(huán))之一。選擇結(jié)構(gòu)的特點(diǎn)是:程序的流程是由多條支路構(gòu)成的,在程序的一次執(zhí)行過(guò)程中,根據(jù)不同的情況,只有一條支路被選擇執(zhí)行,而其它支路上的語(yǔ)句被直接跳過(guò)。在C語(yǔ)言中,提供了if語(yǔ)句和switch語(yǔ)句來(lái)實(shí)現(xiàn)選擇結(jié)構(gòu)。第8頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式
4.1.1關(guān)系運(yùn)算符及其優(yōu)先次序關(guān)系運(yùn)算:是對(duì)兩個(gè)量進(jìn)行“比較運(yùn)算”。關(guān)系運(yùn)算符:第9頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式
4.1.1關(guān)系運(yùn)算符及其優(yōu)先次序3.關(guān)于優(yōu)先級(jí)別:前4種關(guān)系運(yùn)算符的優(yōu)先級(jí)別相同,后兩種也相同。前4種高于后兩種。算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、賦值運(yùn)算符。
高
低第10頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式4.1.1關(guān)系運(yùn)算符及其優(yōu)先次序
例:c>a+b 等價(jià)于c>(a+b);關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符a>b==c 等價(jià)于(a>b)==c;“>”優(yōu)先級(jí)高于“==”a==b<c等價(jià)于a==(b<c);“<”優(yōu)先級(jí)高于“==”a=b>c 等價(jià)于a=(b>c);關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符。第11頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式4.1.2
關(guān)系表達(dá)式
1.用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(算術(shù)、關(guān)系、邏輯、賦值表達(dá)式等)連接起來(lái)的有意義的表達(dá)式,稱為關(guān)系表達(dá)式。
如:x!=0;‘a(chǎn)’==‘A’;a*a+b*b<Y*Y;說(shuō)明:數(shù)值量比較,數(shù)字的大小字符量比較,ASCII碼比較第12頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式4.1.2
關(guān)系表達(dá)式2.關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”。C語(yǔ)言編譯系統(tǒng),真(1),假(0).例:假如a=1,b=-5,c=‘a(chǎn)’,則:c>a+b;
a==b<c;
a=b<c;上述表達(dá)式的值是?1,1,1.第13頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.1邏輯運(yùn)算符及其優(yōu)先順序C語(yǔ)言提供三種邏輯運(yùn)算符:(1)&&邏輯與(2)||邏輯或(3)!邏輯非邏輯運(yùn)算的真值表:aba&&ba||b真真真真真假假真假真假真假假假假a!a真假假真第14頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.1邏輯運(yùn)算符及其優(yōu)先順序例:邏輯運(yùn)算舉例a&&b若a、b為真,則a&&b為真。a||b若a、b之一為真,則a||b為真。!a若a為真,則!a為假,反之若a為假,則!a為真。第15頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.1邏輯運(yùn)算符及其優(yōu)先順序3.在一個(gè)邏輯表達(dá)式中如果包含多個(gè)邏輯運(yùn)算符,則按照以下的優(yōu)先順序:(1)?。ǚ牵?&&(與),-||(或)高低(2)!(非)高算術(shù)運(yùn)算符關(guān)系運(yùn)算符
&&||賦值運(yùn)算符低第16頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.1邏輯運(yùn)算符及其優(yōu)先順序例:a>b&&x>y等價(jià)于(a>b)&&(x>y)a==b||x==y等價(jià)于(a==b)||(x==y)!a||a>b等價(jià)于(!a)||(a>b)第17頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式1.邏輯量:當(dāng)一個(gè)量(可以是基本類(lèi)型的常量或變量)用作判斷的時(shí)候,C編譯系統(tǒng)認(rèn)為:非0真,0假2.邏輯表達(dá)式:用邏輯運(yùn)算符(邏輯與、邏輯或、邏輯非)將關(guān)系表達(dá)式或邏輯量連接起來(lái)的有意義的表達(dá)式叫邏輯表達(dá)式。第18頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式3.邏輯表達(dá)式的值:真(1),假(0)。4.C語(yǔ)言編譯系統(tǒng)在給出邏輯運(yùn)算結(jié)果時(shí),以1代表“真”,以0代表“假”,但在判斷一個(gè)量是否為“真”時(shí),以0代表“假”,以非0代表“真”(即認(rèn)為一個(gè)非0的數(shù)值是“真”)。第19頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式例:若a=4,則!a值為0(假)。若a=4,b=5,則a&&b值為1(真),a||b值為1(真),!a||b值為1(真)4&&0||2值為1(真)‘c’&&’d’(真)值為1
第20頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式例:計(jì)算:5>3&&2||8<4-!0(注意運(yùn)算符優(yōu)先級(jí)、數(shù)值所起作用-是邏輯值,原值)第21頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式
在邏輯表達(dá)式的求解中,并不是所有的邏輯運(yùn)算符都被執(zhí)行,只是在必須執(zhí)行下一個(gè)邏輯運(yùn)算符才能求出表達(dá)式的解時(shí),才執(zhí)行該運(yùn)算符。第22頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式例如:a&&b&&c,只有a為真,才需要判別b的值;只有a、b都為真,才需要判別c的值。只要a為假,此時(shí)整個(gè)表達(dá)式已經(jīng)確定為假,就不必判別b,c;如果a為真,b為假,不判斷c。a||b||c,只要a為真,整個(gè)表達(dá)式已經(jīng)確定為真,就不必判斷b和c;只有a為假,才判斷b;a、b都為假才判斷c。第23頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式例:有以下程序
main()
{inta=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
printf("%d,%d\n",k,m);
}
程序運(yùn)行后的輸出結(jié)果是
A)0,0B)0,1C)1,0D)1,1
第24頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式
掌握C語(yǔ)言的關(guān)系運(yùn)算符和邏輯運(yùn)算符后,可以用一個(gè)邏輯表達(dá)式來(lái)表示一個(gè)復(fù)雜的條件。
例如:判斷某一年是否閏年。閏年:能被4整除,但不能被100整除;或能被400整除。(year%4==0&&year%100!=0)||year%400==0
表達(dá)式為“真”,閏年條件成立,是閏年,否則非閏年。
第25頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.2邏輯運(yùn)算符和邏輯表達(dá)式4.2.2邏輯表達(dá)式作業(yè):寫(xiě)出C語(yǔ)言的表達(dá)式1.|x|>22.x≤1+a并y≤b
3.的定義域
fabs(x)>2或x>2||x<-2x<=1+a&&y<=b(x>=2||x<=1)&&x!=0或(x-1)*(x-2)>=0&&x!=0
第26頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式1.條件執(zhí)行if(表達(dá)式)語(yǔ)句if(p)A第27頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式1.if(p)A例:
if(x>y)printf(“%d”,x);例:if(x>y){t=a;a=b;b=t;}第28頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式復(fù)合語(yǔ)句:用一對(duì)花括號(hào){}包圍起來(lái)的一條和多條語(yǔ)句。復(fù)合語(yǔ)句的形式:{
語(yǔ)句1;語(yǔ)句2;語(yǔ)句3;……}第29頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式
復(fù)合語(yǔ)句在選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)中經(jīng)常用到。我們?cè)谶壿嬌习褟?fù)合語(yǔ)句看成是一條語(yǔ)句。第30頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式
例:要求用戶輸入一個(gè)實(shí)數(shù),然后求出這個(gè)實(shí)數(shù)的絕對(duì)值。第31頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式2.分支執(zhí)行
if(表達(dá)式)語(yǔ)句1else語(yǔ)句2
即if(p)AelseB當(dāng)P為真時(shí)(非0)執(zhí)行A,否則執(zhí)行B或后續(xù)語(yǔ)句。
第32頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式2.分支執(zhí)行
例:if(a>0)printf(“Aisapositive\n”);elseprintf(“Aisnotapositive\n”);A和B可以使單一語(yǔ)句,也可以是復(fù)合語(yǔ)句。else部分不能獨(dú)立存在,前面一定有;和if語(yǔ)句。
第33頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式
注意:在if和else后面可以是單條語(yǔ)句,也可以是復(fù)合語(yǔ)句,如果使用了復(fù)合語(yǔ)句,一定要用花括號(hào)括起來(lái),語(yǔ)句塊后面不要“;”號(hào)。第34頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式例如:if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“%f”,area);}elseprintf(“itisnotatriangle”);第35頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式在C語(yǔ)言中,表達(dá)式P的值是非0時(shí),系統(tǒng)均按真值處理。
例(1)
if(‘a(chǎn)’)printf(“ok!”);(2)x=-5;if(x)printf(“ok!”);(3)y=0;if(y==0)printf(“ok!”);if(y)printf(“ok!”);第36頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式else子句不能單獨(dú)使用,必須是if語(yǔ)句的一部分,與if配對(duì)使用。(縮排的格式)
例:if(n>6)if(n<12)printf(“n大于6且小雨12\n”);elseprintf(“n小于等于6\n”);第37頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句例:以下程序運(yùn)行后的輸出結(jié)果是
〖
〗
。
main()
{inta=1,b=3,c=5;
if(c=a+b)printf("yes\n");
elseprintf("no\n");
}
yes第38頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式例:比較a和b的大小,并將大值賦給max,并打印出max的值。編程步驟:1.確定算法,畫(huà)出流程圖;2.寫(xiě)出程序;3.上機(jī)編譯;4.測(cè)試。第39頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式#include<stdio.h>(注意程序的縮排)voidmain(){floata,b,max;printf("pleaseinputa,b:");scanf("%f%f",&a,&b);if(a>b){printf("\na>b\n");max=a;}else{printf("a<=b\n");max=b;}printf(“\nmax=%f\n",max);}第40頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式例:從鍵盤(pán)上輸入a,b,c三個(gè)數(shù),按從大到小輸出。(難點(diǎn):交換數(shù)據(jù)算法)第41頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式#include<stdio.h>voidmain(){inta,b,c,t;printf(“Entera,b,c:”);scanf(“%d%d%d”,&a,&b,&c);if(a<b)/*t-臨時(shí)變量*/{t=a;a=b;b=t;}/*交換a,b*/if(a<c){t=a;a=c;c=t;}if(b<c){t=b;b=c;c=t;}printf(“\n%d%d%d\n”,a,b,c);}第42頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式3.
elseif形式(階梯式的elseif語(yǔ)句)第43頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式3.
elseif形式(階梯式的elseif語(yǔ)句)
系統(tǒng)自上而下逐步判斷條件P,一旦發(fā)現(xiàn)某個(gè)條件Pi滿足時(shí),則執(zhí)行與它相關(guān)的語(yǔ)句Si,并跳過(guò)其它剩余的階梯。若所有的條件均不滿足,執(zhí)行最后一個(gè)else語(yǔ)句或后續(xù)語(yǔ)句。第44頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式例:評(píng)價(jià)學(xué)生的成績(jī)
score>=90優(yōu)秀score>=80良好score>=70中等score>=60及格score<60不及格第45頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式#include<stdio.h>voidmain(){floatscore;printf(“inputscore:”);scanf(“%f”,&score);if(score>=90)printf(“Excellent!\n”);elseif(score>=80)printf(“Good!\n”);elseif(score>=70)printf(“Middle!\n”);elseif(score>=60)printf(“Pass!\n”);elseprintf(“Fail!\n”);}第46頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式例:模擬超市的優(yōu)惠購(gòu)物。根據(jù)顧客購(gòu)物數(shù)以及所購(gòu)商品單價(jià)計(jì)算顧客應(yīng)付金額,計(jì)算中要進(jìn)行優(yōu)惠打折。具體打折規(guī)定是:購(gòu)物超過(guò)10件按8折優(yōu)惠;購(gòu)物超過(guò)100件,按7折優(yōu)惠。第47頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.1if語(yǔ)句三種形式#include"stdio.h"#definerate11.0#definerate20.8#definerate30.7voidmain(){intnum;floatprice,money;printf("pleaseinputmumandprince:");scanf("%d%f",&num,&price);if(num>100)money=rate3*price*num;elseif(num>10)money=rate2*price*num;elsemoney=rate1*price*num;printf("moneyis%f",money);}第48頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.2if語(yǔ)句的嵌套
if語(yǔ)句的嵌套:if語(yǔ)句的if塊或else塊中,又包含一個(gè)if語(yǔ)句。
if(…)
if(…)語(yǔ)句1;
else語(yǔ)句2;
else
if(…)語(yǔ)句3;
else語(yǔ)句4;注意:應(yīng)當(dāng)注意if與else的配對(duì)關(guān)系。else總是與它上面的最近的未配對(duì)的if配對(duì)。特別是if/else子句數(shù)目不一樣時(shí)(if子句數(shù)量只會(huì)大于或等于else子句數(shù)量)
第49頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.2if語(yǔ)句的嵌套
例:編一個(gè)程序,輸入x,輸出y。輸入x
yx<-3?n
y=x-1yn輸出y。#include<stdio.h>#include<math.h>voidmain(){floatx,y;scanf(“f%”,&x);if(x<-3)y=x-1;elseif(x<=3)y=sqrt(9-x*x);elsey=log10(x);printf(/n“%f%f/n”,x,y);}第50頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.2if語(yǔ)句的嵌套比較例:1.if(x)if(y)printf(‘1’);elseprintf(“2”);2.if(x){if(y)printf(‘1’);}elseprintf(“2”);說(shuō)明:通過(guò)加{},可以改變else的層位,從而改變程序的執(zhí)行流程。第51頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.2if語(yǔ)句的嵌套例:下面程序的運(yùn)行結(jié)果是_____.#include<stdio.h>viodmain(){inta=2,b=3,c=1;if(a>b)if(a>c)printf(“%d\n”,a);elseprintf(“%d\n”,b);printf(“over!\n”);}over!第52頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.2if語(yǔ)句的嵌套例:判定某年是否閏年。閏年:能被4整除,但不能被100整除;或能被400整除。注意:leap是標(biāo)志性變量,在C語(yǔ)言中經(jīng)常用到。第53頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.2if語(yǔ)句的嵌套#include<stdio.h>viodmain(){intyear,leap;printf(“Whichyear?”);scanf(“%d”,year);if(year%400==0)leap=1;elseif(year%4==0)if(year%100==0)leap=0;elseleap=1;elseleap=0;if(leap=1)printf(“%disaleapyear”,year);elseprintf(“%disnotaleapyear”);}第54頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句
4.3.2if語(yǔ)句的嵌套或者程序?qū)懗桑海nclude<stdio.h>viodmain(){intyear,leap;printf(“Whichyear?”);scanf(“%d”,year);if((year%4==0)&&(year%100!=0)||(year%400==0))leap=1;elseleap=0;if(leap=1)printf(“%disaleapyear”,year);elseprintf(“%disnotaleapyear”);}第55頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.2if語(yǔ)句的嵌套
例:判斷某人是否屬于肥胖體型。根據(jù)身高與體重因素,醫(yī)務(wù)工作者經(jīng)廣泛的調(diào)查分析給出了以下“體指數(shù)”對(duì)肥胖程度的劃分:體指數(shù)t=體重w/(身高h(yuǎn))2(w單位為千克,h單位為米)
當(dāng)t<18時(shí),為低體重;當(dāng)t介于18到25之間時(shí),為正常體重;當(dāng)t介于25到27之間時(shí),為超重體重;當(dāng)t>=27時(shí),為肥胖。編程從鍵盤(pán)輸入你的身高和體重,根據(jù)給定公式計(jì)算體指數(shù),然后判斷你的體重屬于何種類(lèi)型。
第56頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.2if語(yǔ)句的嵌套#include<stdio.h>voidmain(){floath,w,t;printf("Pleaseenterh,w:");scanf("%f,%f",&h,&w);t=w/(h*h);if(t<18)printf("t=%f\tLowerweight!\n",t);elseif(t<25)printf("t=%f\tStandardweight!\n",t);elseif(t<27)printf("t=%f\tHigherweight!\n",t);elseprintf("t=%f\tToofat!\n",t);}第57頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.3條件運(yùn)算符(?:)條件表達(dá)式的一般形式:表達(dá)式1?表達(dá)式2:表達(dá)式3例如:條件運(yùn)算符來(lái)處理a>b?a:b;說(shuō)明:(1)條件運(yùn)算符的執(zhí)行順序:先求解表達(dá)式1,若為非0(真)則求解表達(dá)式2,表達(dá)式2的值就是整個(gè)條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,此時(shí)表達(dá)式3的值就是整個(gè)條件表達(dá)式的值。第58頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.3條件運(yùn)算符(?:)說(shuō)明:(2)條件運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符,低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符。例如:max=a>b?a:b等價(jià)于:max=((a>b)?a:b)
(3)條件運(yùn)算符的結(jié)合性“自右向左”。例如:a>b?a:c>d?c:d。先考慮優(yōu)先級(jí)、再考慮結(jié)合性:上面表達(dá)式等價(jià)與(a>b)?a:((c>d)?c:d)。
第59頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.3條件運(yùn)算符(?:)說(shuō)明:(4)表達(dá)式2和表達(dá)式3不僅可以是數(shù)值表達(dá)式,還可以是賦值表達(dá)式,函數(shù)表達(dá)式。例如:a>b?(a=100):(b=100);a>b?prinf(“%d”,a):prinf(“%d”,b);
(5)表達(dá)式1,表達(dá)式2,表達(dá)式3的類(lèi)型都可以不同。條件表達(dá)式值的類(lèi)型是表達(dá)式2,表達(dá)式3中類(lèi)型較高的類(lèi)型。例如:x>y?1:1.5整個(gè)表達(dá)式類(lèi)型為實(shí)型。第60頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句
4.3.3條件運(yùn)算符(?:)例從鍵盤(pán)輸入你和你朋友的年齡,編程判斷誰(shuí)的年齡最大,并打印最大者的年齡。第61頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句
4.3.3條件運(yùn)算符(?:)#include<stdio.h>voidmain(){intyourage,hisage,max;printf("Pleaseenteryourage:");scanf("%d",&yourage);printf("Pleaseenteryourfriend'sage:");scanf("%d",&hisage);if(hisage==yourage)printf("hisageisequaltoyourage.");else{max=(hisage>yourage)?hisage:yourage;printf("theolderageis%d\n",max);}}第62頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句
4.3.3條件運(yùn)算符(?:)
例:輸入一個(gè)字符,如果是大寫(xiě)字母,轉(zhuǎn)換為小寫(xiě),如果不是不轉(zhuǎn)換。最后輸出。#include<stdio.h>voidmain(){charch;scanf(“%c”,&ch);ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch;printf(“%c”,ch);}
第63頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.3if語(yǔ)句4.3.3條件運(yùn)算符(?:)
例:輸入一個(gè)字符,如果是大寫(xiě)字母,轉(zhuǎn)換為小寫(xiě),如果不是不轉(zhuǎn)換。最后輸出??紤]:編程通過(guò)鍵盤(pán)輸入一個(gè)字符,判斷該字符是數(shù)字字符(digitcharacter)、字母(englishcharacter)、空格(spacecharacter)還是其他字符(othercharacter)
。第64頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.4
switch語(yǔ)句
多分支可以使用嵌套的if語(yǔ)句處理,但如果分支較多,嵌套的if語(yǔ)句層數(shù)多,程序冗長(zhǎng),降低可讀性。
C語(yǔ)言中switch語(yǔ)句亦稱多分支選擇語(yǔ)句,它比用嵌套的if語(yǔ)句實(shí)現(xiàn)多路分支問(wèn)題,其程序結(jié)構(gòu)清晰、易讀。第65頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.4
switch語(yǔ)句1.switch語(yǔ)句一般形式:switch(表達(dá)式e){case常量表達(dá)式C1:語(yǔ)句1
case常量表達(dá)式C2:語(yǔ)句2………
case常量表達(dá)式Cn:語(yǔ)句n[default:語(yǔ)句n+1]}
第66頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.4
switch語(yǔ)句
說(shuō)明:(1)switch括號(hào)后面的表達(dá)式e,允許為任何類(lèi)型,例如整型、字符型、枚舉型。(2)常量表達(dá)式Ci必須與表達(dá)式e類(lèi)型一致(整型和字符型可以通用)。
第67頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.4
switch語(yǔ)句
2.執(zhí)行過(guò)程
(1)計(jì)算“表達(dá)式e”的值。(2)當(dāng)“表達(dá)式e”的值與某case后的“常量表達(dá)式Ci”的值一致時(shí),就執(zhí)行此case后面的語(yǔ)句i。直到遇到break語(yǔ)句和switch語(yǔ)句的“}”。(3)如果“表達(dá)式e”的值與所有常量表達(dá)式均不一致,就執(zhí)行default后面的語(yǔ)句(如果沒(méi)有default就執(zhí)行跳出switch,執(zhí)行switch語(yǔ)句后面的語(yǔ)句)。
第68頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.4
switch語(yǔ)句
注意:(1)常量表達(dá)式Ci僅起語(yǔ)句標(biāo)號(hào)的作用,不做求值判斷。(2)常量表達(dá)式Ci的值必須是唯一的,沒(méi)有先后次序。(3)多個(gè)case可以共用一組執(zhí)行語(yǔ)句。(注意break使用的位置)(4)case后面如果有多條語(yǔ)句,不必用{}括起來(lái)。
第69頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.4
switch語(yǔ)句
只有switch語(yǔ)句和break語(yǔ)句配合起來(lái),才能形成真正意義上的多分支。第70頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.4
switch語(yǔ)句
例:設(shè)有聲明語(yǔ)句inta=1,b=0;則執(zhí)行以下語(yǔ)句后輸出為_(kāi)_____.switch(a){case1:switch(b){case0:printf("**0**");break;case1:printf("**1**");break;}case2:printf("**2**");break;}**0****2**第71頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.4
switch語(yǔ)句問(wèn)題:本題中沒(méi)有break語(yǔ)句,執(zhí)行結(jié)果會(huì)怎么樣?如何解決這個(gè)問(wèn)題?#include<stdio.h>voidmain(){float
score;printf(“pleaseinputthescore:”);scanf(“%f”,&score);switch((int)score/10){case10:case9:printf(“excellent!\n”);case8:printf(“good!\n”);case7:printf(“middle!\n”);case6:printf(“pass!\n”);default:printf(“fail!\n”);}}第72頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.5
應(yīng)用程序舉例
例:物流公司對(duì)用戶計(jì)算運(yùn)費(fèi),收費(fèi)標(biāo)準(zhǔn)隨距離變化如下:
s<250km不折扣;250km≤s<500km%2;500km≤s<1000km%5;1000km≤s<2000km%8;2000km≤s<3000km%103000km≤s%15;計(jì)費(fèi)按照運(yùn)輸距離s貨物重量w進(jìn)行,設(shè)每公里每噸貨物基本運(yùn)費(fèi)為p,考慮折扣d時(shí),總運(yùn)費(fèi)計(jì)算公式為
f=p*w*s*(1-d);第73頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.5
應(yīng)用程序舉例
例:物流公司對(duì)用戶計(jì)算運(yùn)費(fèi),收費(fèi)標(biāo)準(zhǔn)隨距離變化如下:
分析:int(s/250)0:d=0;1:d=0.02;2、3:d=0.05;4~11:d=0.10;
其它d=1.5;第74頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.5
應(yīng)用程序舉例
#include<stdio.h>voidmain(){floatf,w,p,s,d;printf(“inputunitprice,space,weight:”);
scanf(“%f%f%f”,p,s,w);switch((int)s/250){case0:d=0;break;case1:d=0.02;break;case2:case3:d=0.05;break;case4:case5:case6:case7:d=0.08;break;case8:case9:case10:case11:d=0.1;break;default:d=0.15}}第75頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.5
應(yīng)用程序舉例
例:讀入一個(gè)年份和月份,打印出該月有多少天(考慮閏年),用switch語(yǔ)句編程。#include<stdio.h>voidmain(){intyear,month;printf("Inputyear,month:");scanf("%d,%d",&year,&month);switch(month){case1:case3:case5:case7:case8:case10:case12:printf("31days\n");break;
第76頁(yè),課件共83頁(yè),創(chuàng)作于2023年2月4.5
應(yīng)用程序舉例
case2:if((year%4==0&&year%100!=0)||(year%400==0))
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度快遞配送服務(wù)承包合同
- 二零二五年度農(nóng)業(yè)科技項(xiàng)目合作放棄承諾函合同范本
- 二零二五年度安防產(chǎn)品簡(jiǎn)易加工制造合同
- 二零二五年度養(yǎng)老產(chǎn)業(yè)擔(dān)保與借款人服務(wù)協(xié)議
- 二零二五年度私人土地租賃與體育設(shè)施建設(shè)合同
- 基于人工智能技術(shù)的智慧城市規(guī)劃合同書(shū)
- 服裝設(shè)計(jì)與制作合同
- 科技部技術(shù)服務(wù)合同
- 互聯(lián)網(wǎng)行業(yè)用戶隱私保護(hù)及免責(zé)協(xié)議
- 物流園區(qū)投資建設(shè)協(xié)議
- 2025年湖南工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完整版
- 作品集合同范本
- 保安員綜合理論考試題庫(kù)備考500題(含各題型)
- 山泉水公司《質(zhì)量管理手冊(cè)》
- X證書(shū)失智老年人照護(hù)身體綜合照護(hù)講解
- 2025年內(nèi)蒙古自治區(qū)政府工作報(bào)告測(cè)試題及參考答案
- 2024年全國(guó)職業(yè)院校技能大賽高職組(社區(qū)服務(wù)實(shí)務(wù)賽項(xiàng))考試題庫(kù)(含答案)
- 2025年度花卉產(chǎn)業(yè)大數(shù)據(jù)服務(wù)平臺(tái)建設(shè)合同2篇
- 2025年度花卉產(chǎn)業(yè)大數(shù)據(jù)平臺(tái)建設(shè)合同3篇
- 魚(yú)骨圖培訓(xùn)課件
- 護(hù)理禮儀與人文關(guān)懷
評(píng)論
0/150
提交評(píng)論