流程控制語句與函數(shù)_第1頁
流程控制語句與函數(shù)_第2頁
流程控制語句與函數(shù)_第3頁
流程控制語句與函數(shù)_第4頁
流程控制語句與函數(shù)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、流程控制語句與函數(shù)第1頁,共46頁,2022年,5月20日,11點27分,星期四5.1 控制程序流程控制程序流程的方法很多,主要有如下3種。選擇語句:如同考試中的單選題目,選擇執(zhí)行了某條語句,另一條就不會再執(zhí)行。循環(huán)語句:在需要將一個表達式進行多次重復運算時,可以使用循環(huán)語句,指定其循環(huán)次數(shù)或者界定其退出循環(huán)的條件。 goto語句:即標記語句,使程序自動跳到標記語句處執(zhí)行,標記語句執(zhí)行完畢又直接回到調(diào)用標記語句處。需要注意的是,在程序中最好不使用goto語句,因為該語句會使得程序代碼可讀性很差。第2頁,共46頁,2022年,5月20日,11點27分,星期四5.2 使用選擇語句5.2.1 if語

2、句用if語句實現(xiàn)單分支選擇結(jié)構(gòu) if(表達式)語句; 語句中的表達式通常用于表示條件,應為關(guān)系表達式或邏輯表達式。語句只是一條語句,如果在條件滿足時需要執(zhí)行多條語句,應使用花括號()括起來,使之成為語句塊?!?表達式)”中的括號不能省略。第3頁,共46頁,2022年,5月20日,11點27分,星期四5.2.1 if語句示例:static void Main(string args) double score; score = Convert.ToDouble (Console.ReadLine(); if (score = 60) Console.WriteLine(恭喜你,通過了這次考試!)

3、; Console.Read(); 第4頁,共46頁,2022年,5月20日,11點27分,星期四5.2.1 if語句用if語句實現(xiàn)雙分支選擇結(jié)構(gòu) if(表達式) 語句1; else 語句2;第5頁,共46頁,2022年,5月20日,11點27分,星期四5.2.1 if語句用if語句實現(xiàn)多分支選擇結(jié)構(gòu) if(表達式1) 語句1;else if(表達式2) 語句2;else if(表達式3) 語句3;else語句n;第6頁,共46頁,2022年,5月20日,11點27分,星期四5.2.2 switch語句在C#語言中,除了可以使用if語句實現(xiàn)多分支外,也可以使用switch語句 。switch(

4、表達式) case常量表達式1: 語句1; break; case常量表達式2: 語句2; break; case常量表達式n: 語句n; break; default: 語句n+1; break; 第7頁,共46頁,2022年,5月20日,11點27分,星期四5.2.2 switch語句switch表達式的類型為sbyte、byte、short、ushort、int、uint、long、ulong、char、string、枚舉或用戶自定義類型。每個case分支中的常量表達式必須能隱式轉(zhuǎn)換為switch表達式的類型,且常量表達式的值不能相同,從而保證分支選擇的唯一性。如果某個分支有多條語句,可

5、以用花括號括起來,也可以不加花括號。default分支可有可無,但是每個switch語句最多只能有一個default分支。當default語句缺省時,如果switch后面的表達式值與任意常量表達式值不相等,將不執(zhí)行任何語句,直接退出switch語句。各分支語句中的break不可省略,否則將會出現(xiàn)錯誤。使用switch語句時一定要注意,case后面必須是常量表達式,以冒號結(jié)束而不是分號,且case語句后一定要跟break語句,這一點跟Java和C+不同。第8頁,共46頁,2022年,5月20日,11點27分,星期四5.2.2 switch語句示例:static void Main(string

6、args) double score; char class1; int i; Console.WriteLine(請輸入你的成績:); score = Convert.ToDouble (Console.ReadLine(); i = (int) score / 10; switch (i) case 10: case 9: class1 = A; break; case 8: class1 = B; break; case 7: class1 = C; break; case 6: class1 = D; break; default: class1 = E; break; Console

7、.WriteLine(你的成績等級為:0,class1 ); 第9頁,共46頁,2022年,5月20日,11點27分,星期四5.2.3 switch語句的控制類型switch語句的控制可以按case語句的排列先后順序進行,也可以通過跳轉(zhuǎn)語句來實現(xiàn)。 示例:實現(xiàn)switch語句的跳轉(zhuǎn)語句 。 static void Main(string args) int days = 0; int month = 3; switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case

8、 2: days = 28; break; case 4: case 6: case 9: case 11: days = 30; break; default: days = 0; break; Console.WriteLine(this month has 0 days, days); 第10頁,共46頁,2022年,5月20日,11點27分,星期四5.3 使用循環(huán)語句5.3.1 while語句while語句是用來實現(xiàn)循環(huán)的語句,該類循環(huán)先測試循環(huán)條件再執(zhí)行循環(huán)體,按照不同條件執(zhí)行循環(huán)體部分零次或多次。它的語法形式如下。while(表達式) 循環(huán)體部分;第11頁,共46頁,2022年,5

9、月20日,11點27分,星期四5.3.1 while語句注意:循環(huán)體如果包含一條以上的語句,應以花括號括起來作為復合語句。在循環(huán)體中,通常應包含改變循環(huán)條件表達式值的語句,否則便會造成無限循環(huán)。由于先判斷條件,可能出現(xiàn)第一次測試條件時,表達式的值就為false。此種情況下循環(huán)體將一次也不執(zhí)行,又稱“允許0次循環(huán)”。第12頁,共46頁,2022年,5月20日,11點27分,星期四5.3.1 while語句示例: class TestWhile static void Main(string args) int number = 1, sum = 0; while (number = 10) su

10、m+=number ; number+; Console.WriteLine(the sum is 0, sum ); Console.Read(); 執(zhí)行上述代碼,運行結(jié)果為:the sum is 55。第13頁,共46頁,2022年,5月20日,11點27分,星期四5.3.2 do語句do循環(huán)語句實現(xiàn)的是直到型循環(huán),該類循環(huán)先執(zhí)行循環(huán)體再測試循環(huán)條件。 do 循環(huán)體語句while(表達式);第14頁,共46頁,2022年,5月20日,11點27分,星期四5.3.2 do語句示例: class TestWhile static void Main(string args) int numbe

11、r = 1, sum = 0; do sum+=number ; number+; while (number = 10); Console.WriteLine(the sum is 0, sum ); Console.Read(); 執(zhí)行上述代碼,運行結(jié)果為:the sum is 55。第15頁,共46頁,2022年,5月20日,11點27分,星期四5.3.3 for語句for(表達式1;表達式2;表達式3)語句;第16頁,共46頁,2022年,5月20日,11點27分,星期四5.3.3 for語句表達式1、2、3都可以省略,分號不能省略。如果表達式1、2、3都省略,則將無終止地執(zhí)行循環(huán)體。

12、表達式2是循環(huán)控制條件,如果省略,循環(huán)將無終止地進行下去。表達式1一般用于為循環(huán)控制條件賦初值,也可以是與循環(huán)變量無關(guān)的其他表達式。如果表達式1省略或者是與循環(huán)條件無關(guān)的其他表達式,則應該在for語句之前給循環(huán)控制條件賦初值。表達式3一般用于改變循環(huán)控制條件的值。如果表達式3省略或者是其他與循環(huán)條件無關(guān)的表達式,則應該在循環(huán)體中另有語句改變循環(huán)條件,以保證循環(huán)能正常結(jié)束。第17頁,共46頁,2022年,5月20日,11點27分,星期四5.3.4 foreach語句foreach(類型 標識符 in 表達式)嵌入語句;示例:static void Main(string args) int li

13、st = 10, 20, 30, 40, 50, 60 ; foreach (int m in list) Console.Write(0,-5, m); Console.Read();第18頁,共46頁,2022年,5月20日,11點27分,星期四5.3.5 break語句和continue語句break語句用于跳出包含它的switch、while、do、for、foreach語句,如果break不是在switch、while、do、for、foreach語句塊中,將發(fā)生編譯錯誤。當switch、while、do、for、foreach語句相互嵌套時,break語句只是跳出直接包含它的語句塊

14、。 第19頁,共46頁,2022年,5月20日,11點27分,星期四5.3.5 break語句和continue語句 class TestBreak static void Main(string args) for (int i = 0; i 10; i+) Console.Write(enter a word :); string s = Console.ReadLine(); if (s = end) break; Console.WriteLine(you entered :0 , s); Console .Read (); 第20頁,共46頁,2022年,5月20日,11點27分,星

15、期四5.3.5 break語句和continue語句continue語句類似于break語句,也必須用于while、do while、for、foreach語句,它只從循環(huán)的當前迭代中退出,然后在循環(huán)的下一次迭代開始重新執(zhí)行,而不是退出循環(huán)。需要注意如下事項。continue語句的目標地址為直接包含它的while、do while、for或者foreach語句的嵌套語句結(jié)尾。假如continue語句不能被while、do while、for或者foreach語句包含,將發(fā)生編譯錯誤。當有while、do while、for或者foreach語句相互嵌套時,continue語句只適用于直接包含它

16、的語句塊。如果要在多個嵌套語句中完成轉(zhuǎn)移,必須使用goto語句。第21頁,共46頁,2022年,5月20日,11點27分,星期四5.3.5 break語句和continue語句示例static void Main(string args) for (int i = 0; i 10; i+) Console.Write(enter a word :); string s = Console.ReadLine(); if (s = end) continue; Console.WriteLine(you entered :0, s); Console .Read ();第22頁,共46頁,2022

17、年,5月20日,11點27分,星期四5.4 使用goto語句 goto語句是除選擇語句、循環(huán)語句之外的控制程序流程的語句,常用于將程序流程轉(zhuǎn)移出嵌套范圍。 goto語句的常見用法為goto lable語句。其中,lable為一個標簽 ,其語法形式為:標簽1:第23頁,共46頁,2022年,5月20日,11點27分,星期四5.4 使用goto語句示例:static void Main(string args) int n = 1, sum = 0; lable : if (n=5) sum=sum+n; n+; goto lable; Console .WriteLine (sum=0,sum

18、); Console .Read ();第24頁,共46頁,2022年,5月20日,11點27分,星期四5.5 嵌套使用流程控制語句選擇結(jié)構(gòu)的嵌套 :if(表達式1) if(表達式2) 語句1 else 語句2else if(表達式3) 語句3 else 語句4第25頁,共46頁,2022年,5月20日,11點27分,星期四5.5 嵌套使用流程控制語句循環(huán)結(jié)構(gòu)的嵌套 示例:static void Main(string args) int i = 1, a = 0; for (; i = 5; i+) do i+; a+; while (i 3); i+; Console.WriteLine(

19、a的值為0,i的值為1, a, i); Console.ReadLine(); 第26頁,共46頁,2022年,5月20日,11點27分,星期四5.6 函數(shù)5.6.1 函數(shù)的定義與使用函數(shù)在使用之前必須先定義,函數(shù)定義的形式如下。函數(shù)修飾符 數(shù)據(jù)類型標識符 函數(shù)名(形式參數(shù)說明列表) 變量、數(shù)組的定義語句; 其他可執(zhí)行部分 函數(shù)的返回值是需要返回給主調(diào)函數(shù)的處理結(jié)果,由return語句給出。對于無返回值的函數(shù),其類型標識符為void,不需要return語句 第27頁,共46頁,2022年,5月20日,11點27分,星期四5.6.1 函數(shù)的定義與使用示例:編寫一個函數(shù),用于求任意兩個整數(shù)之間所有

20、數(shù)的平方和。 class Program private static int pfh(int x, int y) int i, sum = 0; for (i = x; i = y; i+) sum = sum + i * i; return (sum); 第28頁,共46頁,2022年,5月20日,11點27分,星期四5.6.1 函數(shù)的定義與使用函數(shù)的使用 在類中的某個函數(shù)中,調(diào)用本類中由“函數(shù)名”指定的函數(shù),其語法形式如下:函數(shù)名(實際參數(shù)列表)調(diào)用由另一個類的對象指定的函數(shù),其語法形式如下: 對象名.方法名(實際參數(shù)列表)只能調(diào)用非本類的另一個類的靜態(tài)方法,其語法形式如下:類名.方法名

21、(實際參數(shù)列表)第29頁,共46頁,2022年,5月20日,11點27分,星期四5.6.2 函數(shù)的參數(shù)傳遞參數(shù)傳遞中的類型轉(zhuǎn)化 示例:class Program static float Sqr(float k) return (k * k); static void Main(string args) int y; float yy; y = 6; yy = Sqr(y); Console.WriteLine(0的平方是1, y, yy); Console.ReadLine(); 第30頁,共46頁,2022年,5月20日,11點27分,星期四5.6.2 函數(shù)的參數(shù)傳遞參數(shù)傳遞的類型 值傳遞

22、時參數(shù)的語法形式如下:參數(shù)類型 參數(shù)名引用傳遞參數(shù)的語法形式如下:ref 參數(shù)類型 參數(shù)名輸出引用類型參數(shù)的語法形式如下:out 參數(shù)類型 參數(shù)名參數(shù)數(shù)組:使用params關(guān)鍵字聲明參數(shù)的個數(shù)為不確定。第31頁,共46頁,2022年,5月20日,11點27分,星期四5.6.2 函數(shù)的參數(shù)傳遞引用傳遞參數(shù)示例:class Program static void swap(ref int a, ref int b) int i; i = a; a = b; b = i; static void Main(string args) int x, y; Console.WriteLine(請輸入x和y

23、的值:); x = Convert.ToInt32(Console.ReadLine(); y= Convert.ToInt32(Console.ReadLine(); swap(ref x, ref y); Console.WriteLine(轉(zhuǎn)換后x和y的值為:0,1, x, y); Console.ReadLine(); 第32頁,共46頁,2022年,5月20日,11點27分,星期四5.6.2 函數(shù)的參數(shù)傳遞輸出引用類型參數(shù)示例:class Program static void swap(out int a, out int b) int i; a = Convert.ToInt32

24、(Console.ReadLine(); b = Convert.ToInt32(Console.ReadLine(); i = a; a = b; b = i; static void Main(string args) int x, y; swap(out x, out y); Console.WriteLine(轉(zhuǎn)換后x和y的值為:0,1, x, y); Console.ReadLine(); 第33頁,共46頁,2022年,5月20日,11點27分,星期四5.6.2 函數(shù)的參數(shù)傳遞參數(shù)數(shù)組示例:class Program public static float Average(para

25、ms long array) long total, i; for (i = 0, total = 0; i array.Length; +i ) total = total + arrayi; return (float)total / array.Length); static void Main(string args) float x = Average(1, 2, 3, 5); Console.WriteLine(1、2、3、5的平均值為0, x); x = Average(10, 20, 35, 52); Console.WriteLine(10、20、35、52的平均值為0, x

26、); Console.ReadLine(); 第34頁,共46頁,2022年,5月20日,11點27分,星期四5.6.3 內(nèi)聯(lián)函數(shù)對于一些功能簡單、規(guī)模較小又使用頻繁的函數(shù),CLR會做出是否使用內(nèi)聯(lián)函數(shù)的判斷。內(nèi)聯(lián)函數(shù)不在調(diào)用時發(fā)生控制轉(zhuǎn)移,而是在編譯時將函數(shù)體嵌入在每一個調(diào)用處,這樣就節(jié)省了參數(shù)傳遞、控制轉(zhuǎn)移等消耗。注意:在何處內(nèi)聯(lián)代碼完全由CLR判斷得出,無法使用諸如C+中inline的關(guān)鍵字來控制哪些方法是內(nèi)聯(lián)的。第35頁,共46頁,2022年,5月20日,11點27分,星期四5.6.4 函數(shù)重載函數(shù)重載允許一個類中有同名的函數(shù)存在,即一個類中可以存在兩個以上的函數(shù)名稱相同。重載函數(shù)的形

27、參必須不同,可以個數(shù)不同或者類型不同 。示例:int add(int x,int y);int add(int a,int b); /錯誤!編譯器不以形參名來區(qū)分函數(shù)int add(int x,int y);void add(int x,int y); /錯誤!編譯器不以返回值來區(qū)分函數(shù)第36頁,共46頁,2022年,5月20日,11點27分,星期四5.6.4 函數(shù)重載示例:class Program public static int Add(int i, int j) return i + j; public static string Add(string s1, string s2)

28、return s1 + s2; public static long Add(long x) return x + 5; static void Main(string args) Console.WriteLine(Add(1, 2); Console.WriteLine(Add(1, 2); Console.WriteLine(Add(10); Console.ReadLine(); 第37頁,共46頁,2022年,5月20日,11點27分,星期四5.7 常用內(nèi)部函數(shù)5.7.1 隨機函數(shù)介紹在C#中要生成隨機數(shù)需要使用Random類 。該類的主要方法是Next方法,它生成一個介于兩個整數(shù)之

29、間的隨機數(shù),其語法形式如下:public virtual int Next( int minValue,int maxValue);第38頁,共46頁,2022年,5月20日,11點27分,星期四5.7.1 隨機函數(shù)介紹示例: class Program static void Main(string args) Random op1 = new Random(10); Random op2 = new Random(); int result; result = op1.Next(10, 99) + op2.Next(0, 9); Console.WriteLine(result); Con

30、sole.Read(); 由于結(jié)果是隨機值,所以這里不再描述運行結(jié)果, 第39頁,共46頁,2022年,5月20日,11點27分,星期四5.7.2 格式化函數(shù)介紹.NET為處理數(shù)字、日期以及字符串的格式化提供了WriteLine方法、Format方法和ToString方法。通過WriteLine方法和Format方法可對多個變量進行格式化,ToString方法只能對一個變量進行格式化。對于使用WriteLine方法和Format方法格式化字符串,規(guī)定格式的一般語法形式如下。N,M:格式碼 精度對于使用ToString方法格式化字符串,規(guī)定形式的一般語法如下。格式碼 精度第40頁,共46頁,20

31、22年,5月20日,11點27分,星期四5.7.2 格式化函數(shù)介紹 :表示其中的內(nèi)容為可選項。N:表示要格式化的參數(shù)的索引。M:可選參數(shù),表示格式化后的參數(shù)所占的寬度。如果M是負數(shù),那么格式化后的值就是左對齊的;如果M是正數(shù),那么格式化后的值是右對齊的;如果未指定M,則默認為零。格式碼:可選的格式化代碼字符串。精度:格式化輸出的有效位數(shù)或小數(shù)位數(shù)。第41頁,共46頁,2022年,5月20日,11點27分,星期四5.7.3 日期函數(shù)介紹用于處理時間和日期的對象為DateTime結(jié)構(gòu)和TimeSpan類。DateTime結(jié)構(gòu)用于表示日期和時間,表示范圍在0001年1月1日午夜12:00:00到99

32、99年12月31日晚上11:59:59之間的日期和時間,最小時間單位等于100納秒。TimeSpan類可以表示一個時間間隔,表示范圍可以在Int64.Min Value到Int64.Max Value之間。 第42頁,共46頁,2022年,5月20日,11點27分,星期四5.7.3 日期函數(shù)介紹DateTime結(jié)構(gòu)的常用方法如下:AddYears、AddMonths、AddDays、AddHours、AddMinutes、AddSeconds方法,用于將指定的年、月、日、時、分、秒加到DateTime上。Substract方法:日期相減。IsLeapYear方法:判斷是否為閏年。true為閏年,false為非閏年。ToLongDateString和ToLongTimeString方法:把DateTime轉(zhuǎn)換為字符串,且以長格式表示日期或時間。ToShortDateString和ToShortTimeString方法:把D

溫馨提示

  • 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

提交評論