第四章 運算符與流程控制_第1頁
第四章 運算符與流程控制_第2頁
第四章 運算符與流程控制_第3頁
第四章 運算符與流程控制_第4頁
第四章 運算符與流程控制_第5頁
已閱讀5頁,還剩45頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第四章運算符與流程控制第1頁,課件共50頁,創作于2023年2月4.1運算符運算符是一種符號,用來指定要在表達式中執行的操作。C++中常用的運算符有:算術運算符賦值運算符關系運算符邏輯運算符條件運算符第2頁,課件共50頁,創作于2023年2月4.1運算符學習運算符應注意:運算符功能與運算量關系要求運算量個數(單目,雙目,三目)要求運算量類型運算符優先級別結合方向結果的類型第3頁,課件共50頁,創作于2023年2月4.1.1算術運算符算術運算符基本算術運算符:+-*/%功能:取模運算符%用于計算兩整數相除后得到的余數結合方向:從左向右優先級:*/%----->+-

(13)(12)

說明:兩整數相除,結果為整數%要求兩側均為整型數據例5/2=-5/2.0=例5%2=-5%2=1%10=

5%1=5.5%2例5/2=2

-5/2.0=-2.5例5%2=1

-5%2=-11%10=

1

5%1=

05.5%2()第4頁,課件共50頁,創作于2023年2月4.1.1算術運算符算術表達式由以上各種算術運算符和常量或變量構成的式子叫做算術表達式。算術表達式的操作數主要是數值類型的數據和字符類型的數據第5頁,課件共50頁,創作于2023年2月4.1.1算術運算符算術運算時的類型轉換當運算符兩邊的操作數不是同一種數據類型時,必須將它們先轉換成同一類型的數據再進行運算。數據類型的轉換有兩種方式:隱式類型轉換顯示類型轉換第6頁,課件共50頁,創作于2023年2月4.1.1算術運算符隱式類型轉換什么情況下發生運算轉換------不同類型數據混合運算時賦值轉換------把一個值賦給與其類型不同的變量時輸出轉換------輸出時轉換成指定的輸出格式函數調用轉換------實參與形參類型不一致時轉換運算轉換規則:不同類型數據運算時先自動轉換成同一類型第7頁,課件共50頁,創作于2023年2月說明:必定的轉換運算對象類型不同時轉換例charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a’+i*f-d/l例inti;floatf;doubled;longl;doublefloatlongunsignedintchar,short低高unsignedlong第8頁,課件共50頁,創作于2023年2月4.1.1算術運算符顯示類型轉換(類型名)表達式類型名(表達式)例(int)x+y(double)(3/2)(int)3.6說明:強制轉換得到所需類型的中間變量,原變量類型不變第9頁,課件共50頁,創作于2023年2月例題4-1將double類型的數據和int類型的數據進行顯示轉換。#include<iostream.h>voidmain(){doublea=10.6;intb=5;b=b+int(a);//將double類型的數據強制轉換為int型的數據cout<<b<<endl;charc='A';c=c+(char)b;//將int類型的數據轉換為char類型的數據。cout<<c<<endl;}4.1.1算術運算符第10頁,課件共50頁,創作于2023年2月簡單賦值運算符符號:=格式:變量標識符=表達式作用:將右側的表達式求出結果,賦給其左側的變量復合賦值運算符種類:+=-=*=/=%=《=》=&=^=|=含義:exp1op=exp2

exp1=exp1opexp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例a=3;d=func();c=d+2;4.1.2賦值運算符第11頁,課件共50頁,創作于2023年2月說明:結合方向:自右向左優先級:2左側必須是變量,不能是常量或表達式賦值表達式的值與變量值相等,且可嵌套賦值轉換規則:使賦值號右邊表達式值自動轉換成其左邊變量的類型例3=x-2*y;a+b=3;例

floatf;inti;i=10;f=i;則

f=10.0例inti;i=2.56;//結果i=2;例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表達式值為5,a,b,c值為5//b=5;a=5//表達式值11,c=6,a=11//表達式值10,a=10,b=4,c=6//表達式值5,a=5,b=10,c=24.1.2賦值運算符第12頁,課件共50頁,創作于2023年2月例j=3;k=++j;j=3;k=j++;j=3;cout<<++j<<endl;j=3;cout<<j++<<endl;a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4自增、自減運算符++--作用:使變量值加1或減1種類:前綴++i,--i(先執行i+1或i-1,再使用i值)后綴i++,i--(先使用i值,再執行i+1或i-1)4.1.3自增、自減運算符第13頁,課件共50頁,創作于2023年2月說明:++--不能用于常量和表達式,如5++,(a+b)++++--結合方向:自右向左優先級:15例-i++-(i++)i=3;cout<<-i++<<endl;//-3

例-i++i=3;cout<<-i++<<endl;自增、自減運算符++--作用:使變量值加1或減1種類:前綴++i,--i(先執行i+1或i-1,再使用i值)后綴i++,i--(先使用i值,再執行i+1或i-1)4.1.3自增、自減運算符第14頁,課件共50頁,創作于2023年2月種類:<<===>=>!=結合方向:自左向右優先級別:<<=>>===!=高(10)低(9)例c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)a=b>c//a=(b>c)關系表達式的值:是邏輯值“真”或“假”,用1和0表示例inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>bf=a>b>c//表達式值1//表達式值1//表達式值0//d=1//f=04.1.4關系運算符第15頁,課件共50頁,創作于2023年2月例注意區分“=”與“==”inta=0,b=1;if(a=b)cout<<“aequaltob“;elsecout<<“anotequaltob“;inta=0,b=1;if(a==b)cout<<“aequaltob“;else

cout<<“anotequaltob“;4.1.4關系運算符第16頁,課件共50頁,創作于2023年2月種類:!&&||邏輯運算真值表ab!a!ba&&ba||b真假真假假假真真真假假假假假真真假假真真真假真真4.1.5邏輯運算符第17頁,課件共50頁,創作于2023年2月!(15)&&(5)||(4)高低例a<=x&&x<=b

a>b&&x>ya==b||x==y!a||a>b優先級:結合方向:!:從右向左&&:從左向右||:從左向右//(a<=x)&&(x<=b)//(a>b)&&(x>y)//(a==b)||(x==y)//(!a)||(a>b)4.1.5邏輯運算符例a=4;b=5;!aa&&ba||b!a||b4&&0||25>3&&2||8<4-!0‘c’&&‘d’值為1值為0值為1值為1值為1值為1//(5>3)&&2||(8<(4-(!0)))值為1第18頁,課件共50頁,創作于2023年2月邏輯運算符的短路特性:邏輯表達式求解時,并非所有的邏輯運算符都被執行,只是在必須執行下一個邏輯運算符才能求出表達式的解時,才執行該運算符例a&&b&&c//只在a為真時,才判別b的值;只在a、b都為真時,才判別c的值例a||b||c//只在a為假時,才判別b的值;只在a、b都為假時,才判別c的值例a=1;b=2;c=3;d=4;m=1;n=1(初始值);(m=a>b)&&(n=c>d)//結果m=0,n=14.1.5邏輯運算符第19頁,課件共50頁,創作于2023年2月條件運算符是唯一的一個三目運算符,格式:expr1?expr2:expr3首先計算expr1的值,如果是true則返回的結果是表達式expr2;否則返回的結果是表達式expr34.1.6條件運算符第20頁,課件共50頁,創作于2023年2月條件運算符一般形式:expr1?expr2:expr3執行過程expr1取expr2值取expr3值非0=0例(a==b)?’Y’:’N’(x%2==1)?1:0(x>=0)?x:-x(c>=‘a’&&c<=‘z’)?c-’a’+’A’:c4.1.6條件運算符第21頁,課件共50頁,創作于2023年2月4.1.7sizeof運算符

sizeof運算符用于計算某種數據類型的運算對象在計算機中所占用的存儲空間的字節數。sizeof(數據類型)或者sizeof(表達式)第22頁,課件共50頁,創作于2023年2月4.1.8逗號運算符

逗號運算符是“,”,用它可以將多個表達式連接起來,格式如下:表達式1,表達式2,表達式3,…,表達式n它的運算過程是:按照從左到右的順序依次求出各表達式的值,并把最后一個表達式的值作為整個表達式的值。例題:(a=4,a+5,y=8)+5第23頁,課件共50頁,創作于2023年2月4.2分支結構有時候出于某種特殊目的,命令的執行是有條件的、選擇的被執行,不是在任何情況下都要執行這些命令,我們把這種程序結構叫做分支結構或選擇結構。第24頁,課件共50頁,創作于2023年2月4.2.1if語句

用if語句實現單個分支選擇執行結構。if(表達式) 語句|{語句塊};執行邏輯如下圖所示:第25頁,課件共50頁,創作于2023年2月用if語句實現雙分支選擇執行結構if(表達式) 語句1|{語句塊1}else 語句2|{語句塊2}執行邏輯如右圖所示:4.2.1if語句

第26頁,課件共50頁,創作于2023年2月用if語句實現多分支選擇執行結構if(表達式1) 語句1|{語句塊1}elseif(表達式2) 語句2|{語句塊2}……elseif(表達式n-1) 語句n-1|{語句塊n-1}else 語句n|{語句塊n}4.2.1if語句

第27頁,課件共50頁,創作于2023年2月

if~else配對原則:缺省{}時,else總是和它上面離它最近的未配對的if配對if(……)if(……)if(……)else…...else…...else…...if…else…語句的嵌套4.2.1if語句

第28頁,課件共50頁,創作于2023年2月例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if(a==b){if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);實現if~else正確配對方法:加{}4.2.1if語句

第29頁,課件共50頁,創作于2023年2月4.2.2switch語句

switch語句也可以實現程序的分支結構,當判斷條件比較多時,選擇switch語句更合適。因為它的結構比較清晰,不容易出錯。switch語句的格式如下第30頁,課件共50頁,創作于2023年2月switch語句的語法如下:switch(表達式){case常量表達式1:語句序列1;break;case常量表達式2:語句序列2;break;

…case常量表達式n:語句序列n;break;default:語句序列n+1;}4.2.2switch語句

switch表達式語句序列1語句序列2語句序列n語句n+1…...常量表達式1常量表達式2常量表達式ndefaultcase第31頁,課件共50頁,創作于2023年2月當執行switch語句時,條件表達式的值與常量表達式的值比較,如果哪一個case后面的常量表達式的值與條件表達式的值相等,那么程序將執行這個case后面緊跟的語句,直到遇到break才會跳出switch語句。如果沒有一個常量表達式的值與條件表達式的值相等,那么程序則執行default后面緊跟的語句。注意switch語句中,程序是以匹配的case語句作為入口,相對應的break語句作為出口的。如果漏掉了其中一個break語句,那么程序將會一直執行,直到遇到下一個break語句或執行完default語句。多個case可共用一組執行語句例題:4.2.2switch語句

第32頁,課件共50頁,創作于2023年2月4.3循環結構循環就是在某個條件保持為真時重復地執行一組語句,直到條件不再符合。在C++中,又可以分為while循環語句、do…while循環語句、for循環語句三種。第33頁,課件共50頁,創作于2023年2月4.3.1while循環

while循環語句while語句的語法如下:while(表達式){語句組;}第34頁,課件共50頁,創作于2023年2月例用while循環求#include<iostream.h>voidmain(){inti,sum=0;i=1;while(i<=100){sum+=i;i++;}cout<<“sum=“<<sum<<endl;}循環初值循環終值循環變量增值循環條件循環體第35頁,課件共50頁,創作于2023年2月do…while循環語句

do{語句組;}while(表達式);4.3.2do-while循環第36頁,課件共50頁,創作于2023年2月do…while循環與while循環的區別是:while循環先判斷后執行,do…while循環先執行后判斷do…while循環體至少要執行一次,然后才判斷表達式的值是否為真。注意while語句后帶的分號。4.3.2do-while循環第37頁,課件共50頁,創作于2023年2月for(<表達式1>;<表達式2>;<表達式3>){<語句>;}表2循環體假(0)真(非0)for表達式1表34.3.3for循環第38頁,課件共50頁,創作于2023年2月例:求數字1到10的平方的和(12+22+…+102)。#include<iostream.h>voidmain(){ for(inti=1,sum=0;i<=10;i++) { sum=sum+i*i; } cout<<"Thesumis:"<<sum;}第39頁,課件共50頁,創作于2023年2月4.3.4循環語句的嵌套

一個循環語句中包含一個或多個其他的循環語句,這就叫循環語句的嵌套。用循環語句的嵌套解決單重循環不能完成的問題。第40頁,課件共50頁,創作于2023年2月例題4-16用雙重循環輸出一個單位矩陣。從鍵盤上任意輸入一個整數n,程序將輸出一個以n值為行、列的單位矩陣。練習:打印乘法口訣表4.3.4循環語句的嵌套

第41頁,課件共50頁,創作于2023年2月

break語句格式:break;功能:用在循環語句和switch語句中,終止并跳出循環體或開關體說明:break只能終止并跳出最近一層的結構break不能用于循環語句和switch語句之外的任何其它語句之中例題:從鍵盤輸入任意個整數,求其中正數的和。(以0作為輸入結束的標志)4.4跳轉語句第42頁,課件共50頁,創作于2023年2月continue語句格式:continue;功能:結束本次循環,跳過循環體中尚未執行的語句,進行下一次循環僅用于循環語句中4.4跳轉語句第43頁,課件共50頁,創作于2023年2月4.5變量的作用域

一個變量能夠被訪問的區域叫做變量的作用域,本節將介紹三種不同類型的作用域:文件作用域局部作用域類作用域第44頁,課件共50頁,創作于2023年2月4.5.1文件作用域

溫馨提示

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

評論

0/150

提交評論