C語(yǔ)言 分支結(jié)構(gòu)程序設(shè)計(jì)_第1頁(yè)
C語(yǔ)言 分支結(jié)構(gòu)程序設(shè)計(jì)_第2頁(yè)
C語(yǔ)言 分支結(jié)構(gòu)程序設(shè)計(jì)_第3頁(yè)
C語(yǔ)言 分支結(jié)構(gòu)程序設(shè)計(jì)_第4頁(yè)
C語(yǔ)言 分支結(jié)構(gòu)程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩59頁(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)介

第2章分支結(jié)構(gòu)程序設(shè)計(jì)本章要點(diǎn)C語(yǔ)言中有哪些關(guān)系運(yùn)算和邏輯運(yùn)算?關(guān)系運(yùn)算和邏輯運(yùn)算的優(yōu)先級(jí)如何?如何用IF語(yǔ)句構(gòu)成分支結(jié)構(gòu)?如何用SWITCH語(yǔ)句構(gòu)成多分支結(jié)構(gòu)?Yoursitehere語(yǔ)言教材主要內(nèi)容2.1求分段函數(shù)2.2求兩數(shù)中的最大值2.3求付費(fèi)金額2.4輸出成績(jī)等級(jí)2.5輸出最大值2.6分支結(jié)構(gòu)程序設(shè)計(jì)實(shí)例1.3.求圓的周長(zhǎng)2.7字母大小寫轉(zhuǎn)換Yoursitehere語(yǔ)言教材2.1求分段函數(shù)【例2-1】用C語(yǔ)言實(shí)現(xiàn)數(shù)學(xué)上的一個(gè)分段函數(shù):

1,x>0y=-1,其他

源程序:#include<stdio.h>voidmain(){inty;floatx;printf("Inputx:\n");scanf("%f",&x);

2.1.1程序解析Yoursitehere語(yǔ)言教材2.1求分段函數(shù)if(x>0)y=1;elsey=-1;printf("y=%d\n",y);return0;}運(yùn)行結(jié)果:

Inputx:3.6y=1Yoursitehere語(yǔ)言教材2.1求分段函數(shù)2.1.2關(guān)系運(yùn)算及其表達(dá)式1.關(guān)系運(yùn)算符關(guān)系運(yùn)算是邏輯運(yùn)算中比較簡(jiǎn)單的一種,“關(guān)系運(yùn)算”就是“比較運(yùn)算”。即,將兩個(gè)值進(jìn)行比較,判斷是否符合或滿足給定的條件。如果符合或滿足給定的條件,則稱關(guān)系運(yùn)算的結(jié)果為“真”;如果不符合或不滿足給定的條件,則稱關(guān)系運(yùn)算的結(jié)果為“假”。

操作符用法>大于>=大于或等于<小于<=小于或等于==等于!=不等于表2-1關(guān)系運(yùn)算符Yoursitehere語(yǔ)言教材2.1求分段函數(shù)使用關(guān)系運(yùn)算符時(shí)要注意以下幾點(diǎn):(1)由兩個(gè)字符組成的運(yùn)算符之間不可加空格,用空格從中分開寫就會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤。例如:a>=b;是錯(cuò)誤的,但是可以寫成:a>=b;在運(yùn)算符的兩側(cè)增加空格會(huì)提高可讀性。同樣將運(yùn)算符寫反,例如:=>、=<、=!等形式會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤。(2)關(guān)系運(yùn)算符、算術(shù)運(yùn)算符和賦值運(yùn)算符之間的優(yōu)先次序依次是:算術(shù)運(yùn)算符級(jí)別最高,關(guān)系運(yùn)算符次之、賦值運(yùn)算符最低。關(guān)系運(yùn)算符按照從左到右的順序結(jié)合。(3)由于計(jì)算機(jī)內(nèi)存放的實(shí)數(shù)與實(shí)際中的實(shí)數(shù)存在著一定的誤差,如果對(duì)浮點(diǎn)數(shù)進(jìn)行==(相等)或!=(不相等)的比較,容易產(chǎn)生錯(cuò)誤結(jié)果。應(yīng)該盡量避免。Yoursitehere語(yǔ)言教材2.1求分段函數(shù)2.關(guān)系表達(dá)式由關(guān)系運(yùn)算符組成的表達(dá)式,稱為關(guān)系表達(dá)式。關(guān)系運(yùn)算符兩邊的運(yùn)算對(duì)象可以是C語(yǔ)言中任意合法的表達(dá)式。(1)賦值運(yùn)算符“=”賦值運(yùn)算的一般形式為:<變量名>=<表達(dá)式>賦值運(yùn)算符的左面只能是一個(gè)變量名,用等號(hào)右面的表達(dá)式的值對(duì)其賦值。運(yùn)算結(jié)果的數(shù)據(jù)類型取決于賦值號(hào)左面變量的數(shù)據(jù)類型,可以是整型、實(shí)型、字符型等。(2)關(guān)系運(yùn)算符“==”一般形式為:<表達(dá)式1>==<表達(dá)式2>關(guān)系運(yùn)算“==”是在兩個(gè)表達(dá)式之間進(jìn)行的,左面的表達(dá)式可以是一個(gè)變量,也可以是一個(gè)常數(shù)或表達(dá)式。運(yùn)算結(jié)果的數(shù)據(jù)類型只能為整型(0或1)。Yoursitehere語(yǔ)言教材2.1求分段函數(shù)2.1.3邏輯運(yùn)算及其表達(dá)式1.邏輯運(yùn)算符

表2-2邏輯運(yùn)算符運(yùn)算符含義優(yōu)先級(jí)||邏輯或(OR)低&&邏輯與(AND)中!邏輯非(NOT)高Yoursitehere語(yǔ)言教材三種邏輯運(yùn)算符含義說(shuō)明如下;(1)&&邏輯與(相當(dāng)日常生活中:而且,并且,只在兩條件同時(shí)成立時(shí)為“真”)(2)||邏輯或(相當(dāng)日常生活中:或,兩個(gè)條件只要有一個(gè)成立時(shí)即為“真”)(3)!邏輯非(條件為真,運(yùn)算后為假,條件為假,運(yùn)算后為真)與運(yùn)算符&&和或運(yùn)算符||均為雙目運(yùn)算符。具有左結(jié)合性。非運(yùn)算符!為單目運(yùn)算符,具有右結(jié)合性。2.1求分段函數(shù)Yoursitehere語(yǔ)言教材2.1求分段函數(shù)表2-3邏輯運(yùn)算規(guī)則ab!a!ba&&ba||b非0非00011非0001010非01001001100其求值規(guī)則說(shuō)明如下:(1)與運(yùn)算(&&):參與運(yùn)算的兩個(gè)量都為真時(shí),結(jié)果才為真,否則為假。(2)或運(yùn)算(||):參與運(yùn)算的兩個(gè)量只要有一個(gè)為真,結(jié)果就為真。兩個(gè)量都為假時(shí),結(jié)果為假。(3)非運(yùn)算(!):參與運(yùn)算量為真時(shí),結(jié)果為假;參與運(yùn)算量為假時(shí),結(jié)果為真。Yoursitehere語(yǔ)言教材2.1求分段函數(shù)2.邏輯表達(dá)式邏輯表達(dá)式類似于關(guān)系表達(dá)式,是用邏輯運(yùn)算符把兩個(gè)表達(dá)式連接起來(lái)的式子。邏輯表達(dá)式邏輯表達(dá)式的一般形式為:表達(dá)式邏輯運(yùn)算符表達(dá)式。其中的表達(dá)式可以又是邏輯表達(dá)式,從而組成了嵌套的情形。例如:(a&&b)&&c根據(jù)邏輯運(yùn)算符的左結(jié)合性,上式也可寫為:a&&b&&c。邏輯表達(dá)式的值是式中各種邏輯運(yùn)算的最后值。C語(yǔ)言編譯系統(tǒng)在給出邏輯運(yùn)算結(jié)果時(shí),以1代表“真”,以0代表“假”,但在判斷一個(gè)量是否為“真”時(shí),以0代表“假”,以非0代表“真”(即認(rèn)為一個(gè)非0的數(shù)值是“真”)。Yoursitehere語(yǔ)言教材2.2求兩數(shù)種的最大值【例2-2】輸入兩個(gè)整數(shù),輸出其中的大數(shù)。源程序:#include<stdio.h>voidmain(){inta,b,max;/*max-臨時(shí)變量/printf(“Inputtwointegers:\n”);scanf(“%d%d”,&a,&b);max=a;if(max<b)max=b;/*求a,b中最大值*/printf(“max=%d\n”,max);return0;}2.2.1程序解析Yoursitehere語(yǔ)言教材運(yùn)行結(jié)果:Inputtwointegers:27max=7Inputtwointegers:310max=102.2求兩數(shù)種的最大值Yoursitehere語(yǔ)言教材2.2求兩數(shù)中的最大值2.2.2if語(yǔ)句實(shí)現(xiàn)分支基本if語(yǔ)句格式如下:

if(表達(dá)式)語(yǔ)句;其語(yǔ)義是:如果表達(dá)式的值為真,則執(zhí)行其后的語(yǔ)句,否則不執(zhí)行該語(yǔ)句。該語(yǔ)句的執(zhí)行過(guò)程如圖2-1所示。

表達(dá)式值為真執(zhí)行語(yǔ)句NYYoursitehere語(yǔ)言教材2.2求兩數(shù)中的最大值C語(yǔ)言中,用括號(hào)括起來(lái)的語(yǔ)句塊與一個(gè)單語(yǔ)句等價(jià),因此如果表達(dá)式的值為真時(shí)可以執(zhí)行多個(gè)語(yǔ)句。由此可以得到if語(yǔ)句的另一種形式:if(表達(dá)式){語(yǔ)句1;語(yǔ)句2;語(yǔ)句3;}Yoursitehere語(yǔ)言教材2.2求兩數(shù)種的最大值源程序:#include<stdio.h>voidmain(){inta,b;printf(“Inputtwointegers:\n”);scanf(“%d%d”,&a,&b);if(a<b){a=b;printf(“max=%d\n”,a);return0;}}Yoursitehere語(yǔ)言教材運(yùn)行結(jié)果:Inputtwointegers:27max=7Inputtwointegers:310max=102.2求兩數(shù)種的最大值Yoursitehere語(yǔ)言教材2.3求付費(fèi)金額【例2-3】某商品的零售價(jià)為每公斤8.5元,批發(fā)價(jià)為每公斤6.5元,購(gòu)買量在10公斤以上,便可按批發(fā)價(jià)計(jì)算,設(shè)某顧客購(gòu)買此商品公斤數(shù)(weight),請(qǐng)編程計(jì)算該顧客需付費(fèi)(pay)多少?源程序:#include<stdio.h>voidmain(){floatweight,pay;printf(“Pleaseinputtheweight:\n”);scanf(“%f”,&weight);if(weight>=10)pay=weight*6.5;elsepay=weight*8.5;printf(“Youshouldpay%fyuans\n”,pay);}2.3.1程序解析Yoursitehere語(yǔ)言教材運(yùn)行結(jié)果:Pleaseinputtheweight:12Youshouldpay78.000000yuansPleaseinputtheweight:5Youshouldpay42.500000yuans2.3求付費(fèi)金額Yoursitehere語(yǔ)言教材2.3求付費(fèi)金額2.3.2二分支結(jié)構(gòu)if…else語(yǔ)句有時(shí),我們需要在某種條件下讓程序執(zhí)行一個(gè)分支,否則執(zhí)行另一分支。這時(shí),可以采用if……else語(yǔ)句。其語(yǔ)句格式如下:if(表達(dá)式)語(yǔ)句1;else語(yǔ)句2;該語(yǔ)句的執(zhí)行過(guò)程如圖2-3所示。表達(dá)式語(yǔ)句1語(yǔ)句2Yoursitehere語(yǔ)言教材2.3求付費(fèi)金額源程序:#include<stdio.h>voidmain(){inta,b;printf(“Inputtwointegers:\n”);scanf(“%d%d”,&a,&b);if(a>b)printf(“max=%d\n”,a);elseprintf(“max=%d\n”,b);return0;}Yoursitehere語(yǔ)言教材運(yùn)行結(jié)果:Inputtwointegers:27max=7Inputtwointegers:310max=102.3求付費(fèi)金額Yoursitehere語(yǔ)言教材2.3求付費(fèi)金額2.3.3if…else語(yǔ)句的嵌套if和else子句中,可以是任意合法的C語(yǔ)句或語(yǔ)句塊,如果這子句是個(gè)if語(yǔ)句,則構(gòu)成了if語(yǔ)句的嵌套。內(nèi)嵌的if語(yǔ)句可以嵌套在if子句中,也可以嵌套在else子句中。嵌套的if語(yǔ)句有以下幾種格式:1.if(表達(dá)式1)語(yǔ)句1;elseif(表達(dá)式2)語(yǔ)句2;elseif(表達(dá)式3)語(yǔ)句3;…elseif(表達(dá)式m)語(yǔ)句m;else語(yǔ)句n;其語(yǔ)義是:依次判斷表達(dá)式的值,當(dāng)出現(xiàn)某個(gè)值為真時(shí),則執(zhí)行其對(duì)應(yīng)的語(yǔ)句。然后跳到整個(gè)if語(yǔ)句之外繼續(xù)執(zhí)行程序。如果所有的表達(dá)式均為假,則執(zhí)行語(yǔ)句n。然后繼續(xù)執(zhí)行后續(xù)程序。Yoursitehere語(yǔ)言教材其執(zhí)行過(guò)程如圖2-4所示。

2.3求付費(fèi)金額表達(dá)式1表達(dá)式2表達(dá)式m語(yǔ)句n語(yǔ)句m語(yǔ)句2語(yǔ)句1NNNYoursitehere語(yǔ)言教材2.3求付費(fèi)金額【例2-4】根據(jù)輸入的百分制成績(jī)(score),要求輸出成績(jī)等級(jí)(grade)A、B、C、D、E。90分以上為A,80~89分為B,70~79分為C,60~69分為D,60分以下為E。源程序:#include<stdio.h>voidmain(){intscore;chargrade;printf(“\nPleaseinputascore(0~100):”);scanf(“%d”,&score);

if(score>=90)

grade=’A’;elseif(score>=80)

grade=’B’;elseif(score>=70)

grade=’C’;

elseif(score>=60)

grade=’D’;elsegrade=’E’;printf(“Thegradeis%c\n”,grade);return0;}Yoursitehere語(yǔ)言教材運(yùn)行結(jié)果:Pleaseinputascore(0~100):91ThegradeisAPleaseinputascore(0~100):86ThegradeisBPleaseinputascore(0~100):73ThegradeisCPleaseinputascore(0~100):65ThegradeisDPleaseinputascore(0~100):39ThegradeisE2.3求付費(fèi)金額Yoursitehere語(yǔ)言教材2.3求付費(fèi)金額【例2-5】判別鍵盤輸入字符的類別。源程序:#include<stdio.h>voidmain(){charc;printf("inputacharacter:");c=getchar();if(c<32)printf("Thisisacontrolcharacter\n");elseif(c>='0'&&c<='9')printf("Thisisadigit\n");elseif(c>='A'&&c<='Z')printf("Thisisacapitalletter\n");elseif(c>='a'&&c<='z')printf("Thisisasmallletter\n");elseprintf("Thisisanothercharacter\n");return0;}Yoursitehere語(yǔ)言教材運(yùn)行結(jié)果:Pleaseinputacharacter:(鍵盤輸入“回車符”)ThisisacontrolcharacterPleaseinputacharacter:5ThisisadigitPleaseinputacharacter:FThisisacapitalcharacterPleaseinputacharacter:fThisisasmallcharacterPleaseinputacharacter:=Thisisanothercharacter2.3求付費(fèi)金額Yoursitehere語(yǔ)言教材2.3求付費(fèi)金額2.if(…)if(…)語(yǔ)句1;

else語(yǔ)句2;

elseif(…)語(yǔ)句3;

else語(yǔ)句4;應(yīng)當(dāng)注意if與else的配對(duì)關(guān)系。特別是if/else子句數(shù)目不一樣時(shí)(if子句數(shù)量只會(huì)大于或等于else子句數(shù)量)。Yoursitehere語(yǔ)言教材2.3求付費(fèi)金額【例2-6】編程實(shí)現(xiàn)下面函數(shù):

-1(x<0)y=0(x=0),編一個(gè)程序,輸入x,輸出y。

1(x>0)算法1:源程序:#include<stdio.h>voidmain(){intx,y;printf(“Inputthex:”);scanf(“%d”,&x);Yoursitehere語(yǔ)言教材if(x<0)y=-1;if(x==0)y=0;if(x>0)y=1;printf(“Theyis:%d”,y);return0;}運(yùn)行結(jié)果:Inputthex:-2Theyis:-1Inputthex:0Theyis:0Inputthex:3Theyis:12.3求付費(fèi)金額Yoursitehere語(yǔ)言教材2.3求付費(fèi)金額算法2:源程序:#include<stdio.h>voidmain(){intx,y;printf(“Inputthex:”);scanf(“%d”,&x);if(x<0)y=-1;elseif(x=0)y=0;elsey=1;printf(“Theyis:%d”,y);return0;}Yoursitehere語(yǔ)言教材運(yùn)行結(jié)果:Inputthex:-2Theyis:-1Inputthex:0Theyis:0Inputthex:3Theyis:1在使用if語(yǔ)句中還應(yīng)注意以下問(wèn)題:(1)在三種形式的if語(yǔ)句中,在if關(guān)鍵字之后均為表達(dá)式。(2)在if語(yǔ)句中,條件判斷表達(dá)式必須用括號(hào)括起來(lái),在語(yǔ)句之后必須加分號(hào)。(3)在if語(yǔ)句的三種形式中,所有的語(yǔ)句應(yīng)為單個(gè)語(yǔ)句,如果要想在滿足條件時(shí)執(zhí)行一組(多個(gè))語(yǔ)句,則必須把這一組語(yǔ)句用{}括起來(lái)組成一個(gè)復(fù)合語(yǔ)句。但要注意的是在}之后不能再加分號(hào)。2.3求付費(fèi)金額Yoursitehere語(yǔ)言教材2.4輸出成績(jī)等級(jí)【例2-7】從鍵盤上輸入一個(gè)百分制成績(jī)score,按下列原則輸出其等級(jí):score≥90,等級(jí)為A;80≤score<90,等級(jí)為B;70≤score<80,等級(jí)為C;60≤score<70,等級(jí)為D;score<60,等級(jí)為E。源程序:#include<stdio.h>voidmain(){intscore,gradeprintf(“Inputascore(0~100):”);scanf(“%d”,&score);grade=score/10;/*轉(zhuǎn)化成switch語(yǔ)句中的case標(biāo)號(hào)*/

2.4.1程序解析Yoursitehere語(yǔ)言教材switch(grade){case10: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:case4:case3:case2:case1:case0:printf(“grade=E\n”);break;default:printf(“Thescoreisoutofrange!\n”);}return0;

}2.4輸出成績(jī)等級(jí)Yoursitehere語(yǔ)言教材運(yùn)行結(jié)果:Inputascore(0~100):95grade=AInputascore(0~100):83grade=BInputascore(0~100):77grade=CInputascore(0~100):61grade=DInputascore(0~100):37grade=E2.4輸出成績(jī)等級(jí)Yoursitehere語(yǔ)言教材2.4輸出成績(jī)等級(jí)2.4.2用switch語(yǔ)句實(shí)現(xiàn)多分支的程序結(jié)構(gòu)多分支可以使用嵌套的if語(yǔ)句處理,但如果分支較多,嵌套的if語(yǔ)句層數(shù)多,程序冗長(zhǎng),降低可讀性。C語(yǔ)言提供switch語(yǔ)句直接處理多分支選擇。其一般形式:switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1case常量表達(dá)式2:語(yǔ)句2………case常量表達(dá)式n:語(yǔ)句ndefault:語(yǔ)句n+1}Yoursitehere語(yǔ)言教材2.4輸出成績(jī)等級(jí)說(shuō)明:switch括號(hào)后面的表達(dá)式,允許為任何類型。各個(gè)常量表達(dá)式的值必須互不相同,否則出現(xiàn)矛盾。各個(gè)case,default出現(xiàn)的順序不影響執(zhí)行結(jié)果。執(zhí)行完一個(gè)case后面的語(yǔ)句后,流程控制轉(zhuǎn)移到下一個(gè)case中的語(yǔ)句繼續(xù)執(zhí)行。此時(shí),“case常量表達(dá)式”只是起到語(yǔ)句標(biāo)號(hào)的作用,并不在此處進(jìn)行條件判斷。case后面如果有多條語(yǔ)句,不必用{}括起來(lái)。多個(gè)case可以共用一組執(zhí)行語(yǔ)句。Yoursitehere語(yǔ)言教材2.4輸出成績(jī)等級(jí)【例2-8】將一個(gè)星期數(shù)字轉(zhuǎn)換成星期的英文名稱。

源程序:

#include<stdio.h>voidmain(){inta;printf("inputintegernumber:");scanf("%d",&a);switch(a){

case1:printf("Monday\n");

case2:printf("Tuesday\n");

case3:printf("Wednesday\n");

case4:printf("Thursday\n");

case5:printf("Friday\n");

case6:printf("Saturday\n");

case7:printf("Sunday\n");

default:printf("error!\n");

}return0;}Yoursitehere語(yǔ)言教材運(yùn)行結(jié)果:inputintegernumber:3WednesdayThursdayFridaySaturdaySundayerror!

2.4輸出成績(jī)等級(jí)Yoursitehere語(yǔ)言教材2.4輸出成績(jī)等級(jí)2.4.3switch語(yǔ)句的執(zhí)行邏輯與break語(yǔ)句的作用添加break語(yǔ)句后的switch結(jié)構(gòu)如下:switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1break;case常量表達(dá)式2:語(yǔ)句2break;………case常量表達(dá)式n:語(yǔ)句nbreak;default:語(yǔ)句n+1break;}Yoursitehere語(yǔ)言教材2.4輸出成績(jī)等級(jí)添加break語(yǔ)句后的例2-8源程序如下:源程序:

#include<stdio.h>voidmain(){

inta;

printf("inputintegernumber:");

scanf("%d",&a);

switch(a){

case1:printf("Monday\n");break;

case2:printf("Tuesday\n");break;

case3:printf("Wednesday\n");break;

case4:printf("Thursday\n");break;

case5:printf("Friday\n");break;

case6:printf("Saturday\n");break;

case7:printf("Sunday\n");break;

default:printf("error!\n");break;

}return0;}Yoursitehere語(yǔ)言教材2.4輸出成績(jī)等級(jí)運(yùn)行結(jié)果:inputintegernumber:3Wednesday【例2-9】運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)費(fèi)。路程s越遠(yuǎn),每公里運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下:

sc=(int)(s/250)ds<250km0沒(méi)有折扣250≤s<50012%500≤s<10002,35%1000≤s<20004,5,6,78%2000≤s<30008,9,10,1110%s≥300012,13…15%Yoursitehere語(yǔ)言教材2.4輸出成績(jī)等級(jí)源程序:

#include<stdio.h>

voidmain(){intc,s;floatp,w,d,f;scanf(“%f,%f,%d”,&p,&w,&s);if(s>=3000)c=12;elsec=s/250;switch(c){case0:d=0;break;case1:d=2;break;case2:case3:d=5;break;Yoursitehere語(yǔ)言教材2.4輸出成績(jī)等級(jí)

case4:case5:case6:case7:d=8;break;case8:case9:case10:case11:d=10;break;case12:d=15;break;}f=p*w*s*(1-d/100.0);printf(“freight=%15.4f\n”,f)return0;}運(yùn)行結(jié)果:100,20,30freight=588000.0000!

Yoursitehere語(yǔ)言教材2.5輸出最大值【例2-10】輸入兩個(gè)數(shù),輸出其中最大值。

源程序:#include<stdio.h>voidmain(){

floata,b,max;printf(″Input2realsplease:″);scanf(″%f%f″,&a,&b);max=a>b?a∶b;printf(″Themaxis%f\n″,max);return0;}2.5.1程序解析Yoursitehere語(yǔ)言教材運(yùn)行結(jié)果:Input2realsplease:8956Themaxis89.000000Input2realsplease:21-9Themaxis21.0000002.5輸出最大值Yoursitehere語(yǔ)言教材2.5輸出最大值2.5.2條件表達(dá)式及其分支結(jié)構(gòu)如果在條件語(yǔ)句中,只執(zhí)行單個(gè)的賦值語(yǔ)句時(shí),??墒褂脳l件表達(dá)式來(lái)實(shí)現(xiàn)。不但使程序簡(jiǎn)潔,也提高了運(yùn)行效率。它的一般形式為表達(dá)式1?表達(dá)式2:表達(dá)式3其求值規(guī)則為:若表達(dá)式1的值為真(非0),則以表達(dá)式2的值作為該條件表達(dá)式的值;否則取表達(dá)式3的值作為該條件表達(dá)式的值。Yoursitehere語(yǔ)言教材2.5輸出最大值使用條件表達(dá)式時(shí),還應(yīng)注意以下幾點(diǎn):1.條件運(yùn)算符的運(yùn)算優(yōu)先級(jí)低于關(guān)系運(yùn)算符和算術(shù)運(yùn)算符,但高于賦值符。因此max=(a>b)?a:b可以去掉括號(hào)而寫為max=a>b?a:b。2.條件運(yùn)算符?和:是一對(duì)運(yùn)算符,不能分開單獨(dú)使用,是C語(yǔ)言中唯一的三元運(yùn)算符。3.條件運(yùn)算符的結(jié)合方向是自右至左。4.條件表達(dá)式不能取代一般的if語(yǔ)句,只有在if語(yǔ)句中內(nèi)嵌的語(yǔ)句為賦值語(yǔ)句,并且兩個(gè)分支都給同一個(gè)變量賦值時(shí)才能代替if語(yǔ)句。Yoursitehere語(yǔ)言教材2.5輸出最大值【例2-11】要求從鍵盤輸入一個(gè)字符,判斷它是否是大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;否則,不轉(zhuǎn)換。最后將結(jié)果輸出。源程序:#include<stdio.h>voidmain(){

charch;scanf(“%c”,&ch);ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch;printf(“%c”,ch);return0;}

Yoursitehere語(yǔ)言教材運(yùn)行結(jié)果:Input2realsplease:8956Aabb2.5輸出最大值Yoursitehere語(yǔ)言教材2.6分支結(jié)構(gòu)程序設(shè)計(jì)實(shí)例【例2-12】編寫程序,輸入3個(gè)整數(shù),輸出其中的最小值。

源程序:#include<stdio.h>voidmain(){inta,b,c,min;printf("inputthreenumber:\n");scanf("%d%d%d",&a,&b,&c);min=a;if(min>b)min=b;

if(min>c)min=c;printf("min=%d\n",min);return0;}

Yoursitehere語(yǔ)言教材2.6分支結(jié)構(gòu)程序設(shè)計(jì)實(shí)例【例2-13】輸入三個(gè)數(shù)x,y,z,請(qǐng)把這三個(gè)數(shù)由小到大輸出。

源程序:#include<stdio.h>voidmain(){

intx,y,z,t;

scanf("%f%f%f",&x,&y,&z);

if(x>y)

{t=x;x=y;y=t;}if(x>z){t=z;z=x;x=t;}Yoursitehere語(yǔ)言教材2.6分支結(jié)構(gòu)程序設(shè)計(jì)實(shí)例if(y>z){t=y;y=z;z=t;}printf("smalltobig:%f%f%f\n",x,y,z);return0;}Yoursitehere語(yǔ)言教材2.6分支結(jié)構(gòu)程序設(shè)計(jì)實(shí)例【例2-14】企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)低于或等于10萬(wàn)元時(shí),獎(jiǎng)金可提10%;利潤(rùn)高于10萬(wàn)元,低于20萬(wàn)元時(shí),低于10萬(wàn)元的部分按10%提成,高于10萬(wàn)元的部分,可提成7.5%;20萬(wàn)到40萬(wàn)之間時(shí),高于20萬(wàn)元的部分,可提成5%;40萬(wàn)到60萬(wàn)之間時(shí)高于40萬(wàn)元的部分,可提成3%;60萬(wàn)到100萬(wàn)之間時(shí),高于60萬(wàn)元的部分,可提成1.5%,高于100萬(wàn)元時(shí),超過(guò)100萬(wàn)元的部分按1%提成,從鍵盤輸入當(dāng)月利潤(rùn)i,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)?源程序:#include<stdio.h>voidmain(){longinti;intbonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);

bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15;Yoursitehere語(yǔ)言教材2.6分支結(jié)構(gòu)程序設(shè)計(jì)實(shí)例

if(i<=100000)

bonus=i*0.1;

elseif(i<=200000)

bonus=bonus1+(i-100000)*0.075;

elseif(i<=400000)

bonus=bonus2+(i-200000)*0.05;

elseif(i<=600000)

bonus=bonus4+(i-400000)*0.03;

elseif(i<=1000000)

bonus=bonus6+(i-600000)*0.015;

else

bonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);return0;Yoursitehere語(yǔ)言教材2.6分支結(jié)構(gòu)程序設(shè)計(jì)實(shí)例【例2-15】判斷某一年是否是閏年。

源程序:#include

<stdio.h>voidmain(){

int

year;

printf("Pleaseinputtheyear:");scanf("%d",&year);if(year%400==0||year%4==0&&year%100!=0)

printf("%d

isaleapyear!",year);else

printf("

%d

isnotaleapyear!",year);return0;Yoursitehere語(yǔ)言教材2.6分支結(jié)構(gòu)程序設(shè)計(jì)實(shí)例【例2-16】輸入某年某月某日,判斷這一天是這一年的第幾天?

源程序:#include

<stdio.h>voidmain(){intday,month,year,sum,leap;printf("\npleaseinputyear,month,day\n");scanf("%d,%d,%d",&year,&month,&day);switch(month){case1:sum=0;break;

case2:sum=31;break;

case3:sum=59;break;

case4:sum=90;break;

case5:sum=120;break;

case6

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論