第五章選擇結(jié)構(gòu)程序設計_第1頁
第五章選擇結(jié)構(gòu)程序設計_第2頁
第五章選擇結(jié)構(gòu)程序設計_第3頁
第五章選擇結(jié)構(gòu)程序設計_第4頁
第五章選擇結(jié)構(gòu)程序設計_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章選擇結(jié)構(gòu)程序設計第一頁,共二十四頁,2022年,8月28日第五章選擇結(jié)構(gòu)程序設計

本章主要內(nèi)容:5.1關系運算符及其表達式5.2邏輯運算符及其表達式5.3if語句5.4switch語句5.5綜合應用舉例本章重點:熟練掌握關系、邏輯運算;深刻理解if語句的執(zhí)行過程及在程序設計中的作用;熟練掌握if語句的變化和switch語句的功能和作用。第二頁,共二十四頁,2022年,8月28日5.1關系運算符及其表達式

關系運算符:<<=>>===!=關系表達式

5>2 5<=2 比較的結(jié)果是一個邏輯量,即“真”或“假”,分別用整數(shù)1和0表示。關系運算符的優(yōu)先級低于算術運算符,高于賦值運算符。如:a=2*2<8 (b=2)>5-1[例5.1]關系運算符的應用選擇結(jié)構(gòu)程序設計成立,為“真”(1)不成立,為“假”(0)第三頁,共二十四頁,2022年,8月28日5.2邏輯運算符及其表達式邏輯運算符 !(邏輯非)、&&(邏輯與)、||(邏輯或)邏輯表達式!(a>b)10<x&&y<100 p==q||x!=y 邏輯表達式的結(jié)果還是邏輯值,即“真”或“假”,分別用1和0表示。[例5.2]邏輯運算典型的運算量是關系表達式選擇結(jié)構(gòu)程序設計第四頁,共二十四頁,2022年,8月28日運算量是算術表達式時,如果算術表達式的值為0則認為“假”,非0認為“真”。在一個邏輯表達式中可以包含多個邏輯運算和其它各種運算符,這時將按它們的優(yōu)先級進行運算:選擇結(jié)構(gòu)程序設計()!、++、--、+、-

*、/、%

+、-

<、<=、>、>=

==、!=

&&

||

=、+=、-=、*=、/=、%=等

高低第五頁,共二十四頁,2022年,8月28日如表達式“5>3&&2||8<4-!0”的運算順序如下:短路運算:由于邏輯運算的特殊性,邏輯表達式求值不一定必須求到底。如:

a&&b&&c a||b||c選擇結(jié)構(gòu)程序設計只有a為真時才判斷b,只有a&&b為真時才判斷c。亦即:若a為假,表達式的值已經(jīng)肯定為假,不必再往下判斷了。只要a為真,就不必再繼續(xù)判斷,結(jié)果一定為真。

第六頁,共二十四頁,2022年,8月28日用來判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定要執(zhí)行的語句。if語句的格式:格式1:

if(表達式)語句如:if(a<b)a=b;

printf(“a=%d\n”,a);[例5.5-1]將輸入的兩個數(shù)中最大的打印出來。[例5.5-2]將輸入的兩個數(shù)先大后小輸出。表達式語句真假5.3if語句選擇結(jié)構(gòu)程序設計第七頁,共二十四頁,2022年,8月28日格式2:

if(表達式)語句1else語句2如:if(a>b)c=a; elsec=b;

printf(“c=%d\n”,c);[例5.5-1]將輸入的兩個數(shù)中最大的打印出來。[例5.5-2]將輸入的兩個數(shù)先大后小輸出。選擇結(jié)構(gòu)程序設計表達式真假語句1語句2第八頁,共二十四頁,2022年,8月28日嵌套的if語句在if語句中的“語句”處又是if語句,則稱為if語句的嵌套。一般格式如下:

if(表達式1) if(表達式2) 語句1 else 語句2 else if(表達式3) 語句3 else 語句4在嵌套的if語句中,人們習慣將它寫成鋸齒形,以增加程序的可讀性。 選擇結(jié)構(gòu)程序設計第九頁,共二十四頁,2022年,8月28日內(nèi)層的if語句如果是簡化的if,如:if(表達式1) if(表達式2)語句1else 語句2從最內(nèi)層開始,else總是與它上面最近的、未曾配對的if配對。選擇結(jié)構(gòu)程序設計{}?第十頁,共二十四頁,2022年,8月28日[例5.6]求分段函數(shù)的值main(){intx,y;scanf(“%d”,&x);

printf(“y=%d\n”,y);}選擇結(jié)構(gòu)程序設計if(x<0)y=-1;elseif(x==0)y=0;elsey=1;if(x<=0)if(x<0)y=-1;else y=0;else y=1;y=-1;if(x>=0)if(x>0)y=1;else y=0;y=0;if(x>=0){if(x>0)y=1;}else y=-1;√第十一頁,共二十四頁,2022年,8月28日else-if格式if(表達式1) 語句1elseif(表達式2) 語句2elseif(表達式3) 語句3……else 語句n

它實際上是if語句在else中有if嵌套的格式變化。如:選擇結(jié)構(gòu)程序設計if(x<0) y=-1;elseif(x==0)y=0;elsey=1;第十二頁,共二十四頁,2022年,8月28日[例5.7]輸入考試成績的等級,打印出百分制分數(shù)段(A等:85分以上,B等:70~84,C等:60~69,D等:60分以下)。

main() { chargrade; scanf(“%d”,&grade); if(grade==’A’)printf(“85~100\n”); elseif(grade==’B’)printf(“70~84\n”); elseif(grade==’C’)printf(“60~69\n”); elseif(grade==’D’)printf(“<60\n”); elseprintf(“Error\n”); }

選擇結(jié)構(gòu)程序設計第十三頁,共二十四頁,2022年,8月28日條件運算符語法格式為:表達式1?表達式2:表達式3如: max=(a>b)?a:b; 與 if(a>b)max=a;elsemax=b;等價條件運算符的優(yōu)先級僅僅高于賦值運算符和逗號運算符,低于所有其它運算符。[例5.8]判斷鍵盤輸入的一個字符是否為大寫字母,如果是則轉(zhuǎn)換為小寫字母,否則不轉(zhuǎn)換。輸出處理后的字符。選擇結(jié)構(gòu)程序設計條件第十四頁,共二十四頁,2022年,8月28日5.4switch語句語法格式:switch(表達式){ case常量1:語句組1 case常量2:語句組2 …… case常量n:語句組n default:語句組n+1}

選擇結(jié)構(gòu)程序設計=常量1=常量2=常量n表達式語句組1語句組2語句組n語句組n+1yyynnn第十五頁,共二十四頁,2022年,8月28日如在例5.7中的if部分可以考慮寫成下面的switch語句:

switch(grade) { case’A’:printf(“85~100\n”); case’B’:printf(“70~84\n”); case’C’:printf(“60~69\n”); case’D’:printf(“<60\n”); default:printf(“Error\n”); }

若grade=‘C’,則輸出: 60~69 <60 Error選擇結(jié)構(gòu)程序設計第十六頁,共二十四頁,2022年,8月28日改進的switch語句語法格式:switch(表達式){ case常量1:語句組1;break; case常量2:語句組2;break; …… case常量n:語句組n;break; default:語句組n+1}

選擇結(jié)構(gòu)程序設計=常量1=常量2=常量n表達式語句組1語句組2語句組n語句組n+1yyynnn第十七頁,共二十四頁,2022年,8月28日改進后的switch語句:

switch(grade) { case’A’:printf(“85~100\n”);break; case’B’:printf(“70~84\n”);break; case’C’:printf(“60~69\n”);break; case’D’:printf(“<60\n”);break; default:printf(“Error\n”); }

若grade=‘C’,則輸出: 60~69選擇結(jié)構(gòu)程序設計第十八頁,共二十四頁,2022年,8月28日多個case可以共用一組執(zhí)行語句。如: switch(grade) { case’A’: case’B’: case’C’:printf(“60~100\n”);break; case’D’:printf(“<60\n”);break; default:printf(“Error\n”); }選擇結(jié)構(gòu)程序設計第十九頁,共二十四頁,2022年,8月28日5.5綜合應用舉例[例5.9]在例2.9的計算機隨機出一道兩位數(shù)的加法題中,當用戶回答完畢后,給出適當?shù)脑u語。分析:重設隨機種子:randomize();產(chǎn)生10~99之間的隨機數(shù):a=random(90)+10;可能的運行情況:計算:23+72=96↙回答錯誤,您輸入的數(shù)是:96要看答案嗎(y/n)?y↙正確答案是:95

選擇結(jié)構(gòu)程序設計第二十頁,共二十四頁,2022年,8月28日[例5.10]輸入年、月,輸出該月有多少天。分析:每年的1、3、5、7、8、10、12月有31天;4、6、9、11月有30天;2月閏年有29天,平年有28天。年號能被4整除,但不能被100整除,或者年號能被400整除的年均是閏年。設年份為year,判斷year是否為閏年:

if(year%4==0&&year%100!=0||year%400==0)

選擇結(jié)構(gòu)程序設計第二十一頁,共二十四頁,2022年,8月28日本章小結(jié):本章介紹了關系運算符和邏輯運算符,由它們構(gòu)成的表達式通常是在if語句和循環(huán)語句中作為條件來使用的。if語句和switch語句的使用,使程序的執(zhí)行變成了“跳躍”式執(zhí)行了,實際上是對程序中的某些部分實現(xiàn)的選擇運行。這種選擇是必要的,可以根據(jù)不同的情況選擇合適的代碼進行處理。在理解了問題的要求后,如果需要這樣的選擇,就應該使用選擇結(jié)構(gòu)的語句。第二十二頁,共二十四頁,2022年,8月28日第5章作業(yè)5.1輸入一個整數(shù),如果為正數(shù)或零,計算該數(shù)的平方;如果為負數(shù),計算該數(shù)的立方。5.2輸入一個整數(shù),如果:(1)當為正數(shù)時,如果它即是3又是7的倍數(shù),輸出“是3、7的倍數(shù)”;否則輸出“不是3、7的倍數(shù)”。(2)當為負數(shù)或零時,顯示“不是正整數(shù)”。5.3輸入3個數(shù),將其中最大數(shù)輸出。5.4輸入3個字母,按字母表順序從小到大輸出這3個字母。選擇結(jié)構(gòu)程序設計第二十三頁,共二十四頁,2022年,8月28日5.5輸入某學生成績,若

溫馨提示

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

最新文檔

評論

0/150

提交評論