關于網(wǎng)絡選擇結(jié)構(gòu)程序設計_第1頁
關于網(wǎng)絡選擇結(jié)構(gòu)程序設計_第2頁
關于網(wǎng)絡選擇結(jié)構(gòu)程序設計_第3頁
關于網(wǎng)絡選擇結(jié)構(gòu)程序設計_第4頁
關于網(wǎng)絡選擇結(jié)構(gòu)程序設計_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

4第四章選擇結(jié)構(gòu)程序設計

12/26/20231重慶理工大學計算機學院基礎教研室第四章選擇結(jié)構(gòu)程序設計

4.1語句的分類

C語言將語句(statement)分成以下幾類:控制語句函數(shù)調(diào)用語句空語句表達式語句復合語句12/26/20232重慶理工大學計算機學院基礎教研室if()…else… (條件語句)switch (多分支選擇語句)for()… (循環(huán)語句)while()… (循環(huán)語句)do…while()… (循環(huán)語句)1.控制語句12/26/20233重慶理工大學計算機學院基礎教研室1.控制語句continue (結(jié)束本次循環(huán)語句)break (中止執(zhí)行switch或循環(huán)語句)goto (轉(zhuǎn)向語句)return (從函數(shù)返回語句)12/26/20234重慶理工大學計算機學院基礎教研室2.函數(shù)調(diào)用語句函數(shù)調(diào)用語句由一個函數(shù)調(diào)用加上一個分號(;)構(gòu)成。例如:

printf(“Hello!”);3.空語句只有一個分號(;)的語句??照Z句不執(zhí)行任何操作。例如:

;12/26/20235重慶理工大學計算機學院基礎教研室4.表達式語句由C語言的任意合法表達式加上一個分號(;)構(gòu)成。例如:函數(shù)調(diào)用屬于表達式的一種,而空語句則是沒有任何表達式的語句i++; (使變量的值加1)x+y; (完成x+y操作,但不將其結(jié)果賦給 某一變量,所以該語句無實際意義); (空語句)printf(“Hello!”);(函數(shù)調(diào)用語句) 12/26/20236重慶理工大學計算機學院基礎教研室5.復合語句包含在由左花括號{開始,右花括號}結(jié)束的一組語句,在邏輯上構(gòu)成一個整體,稱為復合語句。例如: {

x=k+t; y=x%5; printf(“yis%d”,y); }任何可以放置語句的地方,都可以放置復合語句

12/26/20237重慶理工大學計算機學院基礎教研室4.2關系運算符、邏輯運算符、條件運算符本章將著重討論利用選擇控制實現(xiàn)選擇結(jié)構(gòu)程序設計。選擇控制是指根據(jù)指定的條件是否滿足,選擇下一步要執(zhí)行的語句。滿足為真,不滿足為假。對于條件的描述,最為常見的就是關系表達式。其一般形式:

4.2.1關系運算符和關系表達式操作數(shù)關系運算符 操作數(shù)每個操作數(shù)可以是變量、常量或者是任意有效的C語言表達式。12/26/20238重慶理工大學計算機學院基礎教研室大于 a>b大于等于 a>=b小于a<b小于等于 a<=b等于 a==b不等于 a!=b6種關系運算符:

關系表達式只能產(chǎn)生兩個數(shù)值之一:0或1。一個判定為真的關系表達式的值為1;一個判定為假的關系表達式的值為0。

C語言中,邏輯值真為1;邏輯值假為0。

12/26/20239重慶理工大學計算機學院基礎教研室關系運算符的優(yōu)先級低于算術運算符的優(yōu)先級,但高于賦值運算符的優(yōu)先級。其結(jié)合性是左結(jié)合性。

例如: a=20,b=70,c=50,d=90,有下列表達式:a<b>d

相當于(a<b)>d,a<b的值為1,1>d為假,整個表達式的值為0k=a+b<c+d

相當于k=((a+b)<(c+d)),即k=(90<140),即k=1,為變量k賦值1,整個表達式的值為1。12/26/202310重慶理工大學計算機學院基礎教研室字符數(shù)據(jù)同樣可以用關系運算符比較,比較的依據(jù)是其所用代碼的數(shù)值。

例如比較ASCII碼的字符: 表達式‘a(chǎn)’==‘A’的值為0 表達式‘A’>‘C’的值為0 表達式‘C’<‘a(chǎn)’的值為112/26/202311重慶理工大學計算機學院基礎教研室邏輯運算符將其操作數(shù)視為邏輯值,即“真”或“假”。而C語言對于操作數(shù)真假的判定采取了如下原則:

4.2.2邏輯運算符和邏輯表達式三種邏輯運算符:邏輯非 !a邏輯與 a&&b邏輯或 a||b高低C語言中,任意非零值為邏輯值真;零為邏輯值假。

12/26/202312重慶理工大學計算機學院基礎教研室邏輯表達式!(5<10)的值為0邏輯表達式(5>10)&&(8<10)的值為0;邏輯表達式(5>10)||(8<10)的值為1。邏輯表達式(5<10)&&(—10)的值為1邏輯表達式!’a’的值為0例如:12/26/202313重慶理工大學計算機學院基礎教研室條件運算符(?)是C語言中惟一的一個三目運算符,其表達式的一般形式:

4.2.2條件運算符和條件表達式操作數(shù)1?操作數(shù)2:操作數(shù)3條件表達式的執(zhí)行過程為:先求解操作數(shù)1的邏輯值,如果為非零值——“真”,再求解操作數(shù)2,并將操作數(shù)2的值作為該條件表達式的值;如果為零值——“假”,則求解操作數(shù)3,并將操作數(shù)3的值作為該條件表達式的值。12/26/202314重慶理工大學計算機學院基礎教研室條件運算符的優(yōu)先級高于賦值運算符,但低于算術運算符、關系運算符及邏輯運算符。我們來看一個例子:

y=x>=60?‘P’:‘F’ 如果x大于或等于60,則y被賦值‘P’,該表達式的值為‘P’;如果x小于60,則y被賦值‘F’,該表達式的值為‘F’。12/26/202315重慶理工大學計算機學院基礎教研室C語言提供兩種選擇控制語句:if語句switch語句。

4.3選擇結(jié)構(gòu)的程序設計所有程序的正常執(zhí)行次序通常都是順序的。然而,在許多問題的解決方案中,常會根據(jù)情況的不同,采取不同的處理方式。12/26/202316重慶理工大學計算機學院基礎教研室

if(表達式) 語句A

else 語句B

4.3.1if語句if語句的一般形式:

表達式?語句A語句B真(非0)假(0)12/26/202317重慶理工大學計算機學院基礎教研室else子句,是可選的。當無else子句時的if語句形式為:

if(表達式) 語句表達式?語句真(非0)假(0)12/26/202318重慶理工大學計算機學院基礎教研室當if語句的目標塊中又出現(xiàn)if語句時,C語言有如下規(guī)定:else子句總與距它最近的if配套。例如:if(k){ if(h)do1();

if(i)do2(); /*這個if*/

elsedo3();/*和這個else組合*/ if(t)do4();}elsedo5(); /*這個else和if(k)組合*/12/26/202319重慶理工大學計算機學院基礎教研室基于上述規(guī)則,一個常用的嵌套if語言構(gòu)成多分支選擇結(jié)構(gòu),也稱為if-else-if階梯,其

一般形式如下:

if(表達式1) 語句1;elseif(表達式2) 語句2;elseif(表達式3) 語句3;......else語句n;12/26/202320重慶理工大學計算機學院基礎教研室C語言中,switch語句同樣可以實現(xiàn)多分支選擇。switch語句的一般形式是:

4.3.1switch語句switch(表達式){

case常量1:語句序列1

break;

case常量2:語句序列2

break;

case常量3:語句序列3

break;......

default:語句序列n}可選

可選

12/26/202321重慶理工大學計算機學院基礎教研室switch語句可以作為另一個switch語句中語句序列的一部份,形成嵌套switch語句。這時,即使內(nèi)外層的常量相同,也不會引起沖突。例如:switch(x){case1:printf(“process(x,y)\n”); switch(y)

{ case0: printf(“Dividedby0error!\n”); break; case1: process(x,y);

} break;case2: ……}12/26/202322重慶理工大學計算機學院基礎教研室例4.1從鍵盤讀入兩個整數(shù),然后顯示這兩個數(shù)的商。4.3選擇結(jié)構(gòu)的程序設計舉例

#include<stdio.h>voidmain(){ inta,b; printf("Entertwonumbers(separateby,):"); scanf("%d,%d",&a,&b); if(b)

printf("a/b=%d\n",a/b); else printf("Cannotdividebyzero.\n");}12/26/202323重慶理工大學計算機學院基礎教研室例4.2從鍵盤讀入年份,然后判斷該年是否為閏年。符合下列條件之一的年份都是閏年:能被400整除的年份;不能被100整除,但可以被4整除的年份。12/26/202324重慶理工大學計算機學院基礎教研室#include<stdio.h>voidmain(){ intyear,leap; printf("Enteryear:"); scanf("%d",&year); /*判斷是不是閏年*/ if(year%400==0||(year%4==0&&year%100!=0)) leap=1; /*是閏年*/ else leap=0; if(leap) printf("%disaleapyear.\n",year); else printf("%disnotaleapyear.\n",year);}12/26/202325重慶理工大學計算機學院基礎教研室例4.3企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤(I)不超過10萬元時,獎金可提10%;利潤不超過20萬元時,其中的10萬元按10%提成,高于10萬元的部分提成7.5%;20萬到40萬元,其中的20萬元按前述b方法提成,高于20萬元的部分提成5%;40萬到60萬元,其中的40萬元按前述c方法提成,高于40萬元的部分提成3%;60萬到100萬元,其中的60萬元按前述d方法提成,高于60萬元的部分提成1.5%;高于100萬元時,其中的100萬元按前述e方法提成,超過100萬元的部分提成1%。從鍵盤輸入當月利潤I,求應發(fā)放獎金總數(shù)?12/26/202326重慶理工大學計算機學院基礎教研室#include<stdio.h>voidmain(){ longinti; intbonus1,bonus2,bonus4,bonus6,bonus10,bonus; printf("Enterprofitearned:"); scanf("%ld",&i);

bonus1=100000*0.1; bonus2=bonus1+100000*0.075;

bonus4=bonus2+200000*0.05; bonus6=bonus4+200000*0.03; bonus10=bonus6+400000*0.015;12/26/202327重慶理工大學計算機學院基礎教研室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\n",bonus);}12/26/202328重慶理工大學計算機學院基礎教研室例4.4輸入某年某月某日,判斷這一天是這一年的第幾天?解析:以2000年4月8日為例,應該先把前三個月的天數(shù)加起來,然后再加上8天即本年的第幾天。遇閏年情況,且輸入月份大于3時需要多加一天。12/26/202329重慶理工大學計算機學院基礎教研室#include<stdio.h>voidmain(){ intday,month,year,sum,leap; printf("\npleaseinputyear,month,day\n"); scanf("%d,%d,%d",&year,&month,&day); switch(month)/*先計算某月以前月份的總天數(shù)*/ { case1:sum=0;break; case2:sum=31;break; case3:sum=59;break; case4:sum=90;break; case5:sum=120;break; case6:sum=151;break; case7:sum=181;break; case8:sum=212;break;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論