C#程序設計及應用教程第2章+數(shù)據(jù)類型與流程控制.ppt_第1頁
C#程序設計及應用教程第2章+數(shù)據(jù)類型與流程控制.ppt_第2頁
C#程序設計及應用教程第2章+數(shù)據(jù)類型與流程控制.ppt_第3頁
C#程序設計及應用教程第2章+數(shù)據(jù)類型與流程控制.ppt_第4頁
C#程序設計及應用教程第2章+數(shù)據(jù)類型與流程控制.ppt_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第2章 數(shù)據(jù)類型與流程控制,2.1 數(shù)據(jù)類型 2.2 不同數(shù)據(jù)類型之間的轉(zhuǎn)換 2.3 常量與變量 2.4 運算符與表達式 2.5 控制臺應用程序與格式化輸出 2.6 C#流程控制語句,2.1 數(shù)據(jù)類型,C#數(shù)據(jù)類型分為兩類:值類型和引用類型。 值類型: 包括簡單類型、枚舉類型、結構類型、可空類型。 引用類型: 包括類、接口、數(shù)組、委托。 一般把引用類型的變量稱為對象。,值類型與引用類型區(qū)別,堆棧,堆,5,6,i,j,實際數(shù)據(jù),12345H,obj,值類型和引用類型的區(qū)別,2.1.2 整型,C#提供了八種整型(即計算機組成原理中的“定點數(shù)”): sbyte:1字節(jié)有符號 byte: 1字節(jié)無符號

2、 short: 2字節(jié)有符號 ushort:2字節(jié)無符號 int: 4字節(jié)有符號,最常用 uint: 4字節(jié)無符號 long: 8字節(jié)有符號 ulong:8 字節(jié)無符號,2.1.3 浮點類型,float:4字節(jié)浮點數(shù),常用。例如:35.0f double:8字節(jié)浮點數(shù),常用。例如:2.7E+23 decimal:16字節(jié)浮點數(shù),特殊的浮點數(shù),精度高,適用于金融、貨幣等需要高精度數(shù)值的領域。其類型指定符為M(或m)。 例如: decimal y = 9999999999999999999999999m; float和double的浮點數(shù)格式與計算機組成原理介紹的IEEE754規(guī)定的格式相同,2.

3、1.4 布爾型,用bool表示,bool類型只有兩個值true和false。 例如: bool isExist = false; bool b = (i0 /錯誤,2.1.5 字符型與字符串類型,char型,為單個Unicode字符,字符型常量必須用單引號引起來 。 例如: char cha; 如果是字符串(單個字符的組合),對應的類型為string。string類型的常量用雙引號將字符串引起來。 例如:string str=“hello”; char和string類型的常量均可以使用轉(zhuǎn)義符。,2.2 值類型之間的數(shù)據(jù)轉(zhuǎn)換,有兩種轉(zhuǎn)換方式:隱式轉(zhuǎn)換與顯式轉(zhuǎn)換; 如果是不同值類型之間的轉(zhuǎn)換,可以

4、使用Convert類。,2.2.1 隱式轉(zhuǎn)換和顯式轉(zhuǎn)換,隱式轉(zhuǎn)換 從低精度、小范圍的數(shù)據(jù)類型轉(zhuǎn)換為高精度、大范圍的數(shù)據(jù)類型,可以用隱式轉(zhuǎn)換。 例如: int k = 1; long i = 2; i = k; /隱式轉(zhuǎn)換,2.2.1 隱式轉(zhuǎn)換和顯式轉(zhuǎn)換,顯式轉(zhuǎn)換 如: long k = 5000; int i = (int)k 所有的隱式轉(zhuǎn)換也都可以采用顯式轉(zhuǎn)換的形式來表示。如: int i = 10; long j = (long)i; 將大范圍類型的數(shù)據(jù)轉(zhuǎn)換為小范圍類型的數(shù)據(jù)的時候,必須特別謹慎,因為此時有丟失數(shù)據(jù)的危險。,2.2.2 裝箱與拆箱,Object類型:所有其他引用類型的基類。

5、 裝箱:將值類型轉(zhuǎn)換為object類型 int i=123; object o = i; 拆箱:將object類型轉(zhuǎn)換為值類型 int k = (int)o;,2.3 常量和變量,C#中提供2種類型的常量: 使用const關鍵字聲明 const常量是在編譯時設置其值并且永遠不能更改其值的字段,在對程序進行編譯的時候,編譯器會把所有const常量全部替換為常數(shù)。 使用readonly關鍵字聲明 readonly關鍵字在程序運行期間只能初始化“一次”的字段,可以在聲明語句中初始化該字段,也可以在構造函數(shù)中初始化該字段。初始化以后,用readonly聲明的字段的值就不能再更改。 二者區(qū)別: read

6、only常量運行時初始化,const常量編譯時初始化。 const常量只能在聲明中賦值,readonly常量既可以在聲明中賦值,也可以在構造函數(shù)中賦值。,變量,變量用來表示一個數(shù)值、一個字符串值或者一個類的對象。變量存儲的值可能會發(fā)生更改,但變量名稱保持不變。 C#定義了7類變量,分別是:靜態(tài)變量、實例變量、數(shù)組元素、值參數(shù)、引用參數(shù)、輸出參數(shù)和局部變量。 class A public static int x; int y; void F(int v, int a, ref int b, out int c) int i = 1; c = a + b+; ,變量,聲明變量舉例: int a

7、= 100;/聲明一個整型變量a,并賦初值為100 也可以采用先定義、后賦值的方式,例如: int a; /聲明一個整型變量a a = 100; /為整型變量a賦值為100 另外,也可以把幾個變量聲明和初始化用一條語句完成,各個變量之間用逗號分隔,例如: int a = 100, b, c = 200,d; /聲明整型變量a、b、c、d,并將a賦值100,c賦值200,匿名類型的變量,匿名類型的變量就是程序員不必指定“局部”變量的類型,統(tǒng)統(tǒng)用var來表示類型即可。 在LINQ表達式或者foreach語句中,使用匿名類型的變量比較方便。,2.4 運算符和表達式,C#提供了3大類運算符: 一元運算

8、符:帶有一個操作數(shù)的運算符稱為“一元”運算符,例如,i+。 二元運算符:帶有兩個操作數(shù)的運算符稱為“二元”運算符,例如,x + y。 三元運算符:帶有三個操作數(shù)的運算符稱為“三元”運算符,在C#中,只存在1個三元運算符,即條件運算符“?:”。 表達式 C#的表達式與C+和Java類似。,2.5 控制臺應用程序與格式化輸出,控制臺(Console類) 控制臺輸出 Console.Write (); Console.WriteLine(); 控制臺輸入 Console.ReadKey(); 標準輸入流讀取用戶按下的字符或功能鍵。 Console.ReadLine(); 從標準輸入流讀取一行字符。,

9、字符串的格式化輸出,格式輸出的一般形式為 N , M: 格式碼 其中, :表示其中的內(nèi)容為可選項。 N:從零開始的整數(shù),表示第幾個參數(shù)。 M:可選整數(shù),表示最小長度。若參數(shù)N的長度小于M,就用空格填充。如果M為負,則左對齊;如果M為正,則右對齊;如果未指定M,則默認為零。 格式碼:可選的格式化代碼字符串。,常用格式碼及舉例,字符串的格式化輸出,對于字符串來說,可以直接利用格式化輸出得到希望的格式,例如: string s = string.Format(0, 30, ); /s得到的結果為30個空格的字符串 string s1 = string.Format(0, -20, 15); /s1得

10、到的結果為左對齊長度為20的字符串,數(shù)字的格式化輸出,常用格式舉例: 1) 在ToString中使用d格式。 int i = 12345; / i.ToString(d)表示將i按照實際整數(shù)寬度轉(zhuǎn)換為字符串 string str = i.ToString(d); Console.WriteLine(str); /結果12345 / i.ToString(d8)表示將i轉(zhuǎn)換為字符串,寬度為8位,不夠8位左邊用0填充 string str1 = i.ToString(d8); Console.WriteLine(str1); /結果00012345,數(shù)字的格式化輸出,2) 在string.Form

11、at中使用d格式。 int i = 123; double j = 123.45; / 0,7:d表示第0個參數(shù),寬度7位,不夠7位左邊用空格填充,d表示十進制整數(shù) string s1 = string.Format(the value is 0,7:d,i); Console.WriteLine(s1); /結果 the value is 123 / 0,7:f3表示第0個參數(shù),總寬度7位,其中小數(shù)部分占3位,不夠7位左邊填空格 / f表示浮點數(shù) string s2 = string.Format(the value is 0,7:f3,j); Console.WriteLine(s2);

12、/結果 the value is 123.450,數(shù)字的格式化輸出,3) 在ToString中使用f格式。 double i = 12345.6789; / f2表示浮點數(shù)小數(shù)部分為2位,多余部分四舍五入,不夠2位時右邊補零 string str = i.ToString(f2); Console.WriteLine(str); /結果 12345.68 string str1 = i.ToString(f6); Console.WriteLine(str1); /結果 12345.678900,數(shù)字的格式化輸出,4) 在ToString中使用n格式。 double i = 12345.678

13、9; / n表示整數(shù)部分從小數(shù)點向左每3位用逗號分隔開,小數(shù)部分2位,多余部分四舍五入 string str = i.ToString(n); Console.WriteLine(str); /結果 12,345.68 / n4表示整數(shù)部分從小數(shù)點向左每3位用逗號分隔開,小數(shù)部分4位,多余部分四舍五入 string str1 = i.ToString(n4); Console.WriteLine(str1); /結果 12,345.6789,數(shù)字的格式化輸出,5) 在ToString中使用p格式。 double i = 0.126; / p表示百分數(shù)形式 string s = string.F

14、ormat(the value is 0:p,i); Console.WriteLine(s); /結果 the value is 12.60% string str = i.ToString(p); Console.WriteLine(str); /結果 12.60%,日期和時間的格式化輸出,DateTime dt = new DateTime(2006,5,25); / yy表示年占兩位,M表示月占1位,超出1位按實際位數(shù) / d表示日占1位,超出1位按實際位數(shù) string str = dt.ToString(yy.M.d); Console.WriteLine(str); /結果 06

15、.5.25 /yyyy表示年占4位,M表示月占1位,超出1位按實際位數(shù),其他按原字符輸出 string str1 = dt.ToString(yyyy年M月); Console.WriteLine(str1); /結果 2006年5月,2.6 C#流程控制語句,流程控制的形式: 順序 分支 循環(huán) 異常捕獲 如果一個邏輯塊包含兩條或兩條以上的語句序列,必須使用大括號將語句括起來。,2.6.1 條件分支語句,if語句:根據(jù)布爾表達式的值(true或者false)選擇要執(zhí)行的語句序列,使用時要注意else應和最近的if語句匹配。 三種形式: if ifelse ifelse ifelse,2.6.1

16、 條件分支語句(續(xù)),switch 語句也叫case語句 switch語句與C+和Java均不完全相同。 switch語句常用形式為: switch (表達式) case 常量表達式1: 語句序列1 case 常量表達式2: 語句序列2 default: 語句序列 ,2.6.1 條件分支語句(續(xù)),常量表達式 switch條件表達式的值和每個case后的常量表達式可以是string、int、char、enum或其它值類型。 語句序列 每個case后的語句序列可以用大括號括起來,也可以不用,但是每個case塊的最后一句一定要是break語句,或者是goto語句。 switch語句的執(zhí)行順序 a)

17、 如果switch語句的條件表達式的值和某一個case標記后指定的值相等,則轉(zhuǎn)到該case標記后的語句序列執(zhí)行; b)若switch語句的條件表達式的值和任何一個case標記后指定的值都不相等,則跳到default標記后的語句序列執(zhí)行;,2.6.1 條件分支語句(續(xù)),c)若switch語句下面沒有default標記,則跳到switch語句的結尾。 注意: a) 要求每個語句序列的最后一條語句必須是break語句,但是有一個情況例外:如果某個case塊為空,則會從這個case塊直接跳到下一個case塊上。 b) 如果case后有語句,則此case的順序怎么放都無所謂,甚至可以將default子

18、句放到最上面。因此,在一個switch中,不能有相同的兩個case標記。,例.使用switch語句,完成對成績等級的評定,using System; namespace SwitchExample public class Program public static void Main() Console.Write(請輸入成績:); /從鍵盤接收一行字符 string str = Console.ReadLine(); /轉(zhuǎn)換為整型,注意此語句可能會產(chǎn)生異常,一般需要異常處理 int i = Int32.Parse(str.Trim(); /或者int.Parse()或者Convert.To

19、Int32 () if (i 100 | i 0) Console.WriteLine(成績不在0-100范圍內(nèi)); ,else switch (i / 10) /整除 case 10: Console.Write(滿分,); goto case 9; case 9: Console.WriteLine(優(yōu)秀); break; case 8: case 7: Console.WriteLine(良好); break; case 6: Console.WriteLine(及格); break; default: Console.WriteLine(不及格); break; Console.Rea

20、dLine(); ,2.6.2 循環(huán)語句,包括: for語句 while語句 do-while語句 foreach語句,用于對集合、數(shù)組進行操作。,2.6.2 循環(huán)語句(續(xù)),for語句 一般形式: for (初始值;循環(huán)條件;循環(huán)控制) 語句序列 ,例.使用for語句控制循環(huán)體,public static void Main() Console.Clear(); Console.BackgroundColor = ConsoleColor.Blue; Console.ForegroundColor = ConsoleColor.Red; Console.Beep(); for (int i

21、= 1; i 10; i += 2) Console.SetCursorPosition(40 - i / 2, i); for (int j = 0; j i; j+) Console.Write(*); Console.WriteLine(); Console.ReadLine(); ,2.6.2 循環(huán)語句(續(xù)),while語句 一般形式: while (條件) 語句序列 循環(huán)體內(nèi)的程序可能會執(zhí)行多次,也可能一次也不執(zhí)行。,2.6.2 循環(huán)語句(續(xù)),do-while 一般形式: do 語句序列 while (條件); 循環(huán)體內(nèi)的程序至少會執(zhí)行一次,然后再判斷條件是否為true,如果條件為

22、true,則繼續(xù)循環(huán)。,2.6.2 循環(huán)語句(續(xù)),foreach語句 foreach語句用于逐個提取集合中的元素,并對集合中每個元素執(zhí)行語句序列中操作的場合。一般形式為: foreach ( 類型 標識符 in 表達式 ) 語句序列 注意:循環(huán)變量是一個只讀型的局部變量。,2.6.2 循環(huán)語句(續(xù)),判斷下列語句是否正確,并說明原因 int myInt=1,2,3; foreach(int test in myInt) test+; Console.WriteLine(test); ,2.6.3 跳轉(zhuǎn)語句,1.break語句 功能:退出最近的封閉switch、while、do- while、

23、for或foreach語句。 格式: break;,【例】循環(huán)接收和輸出鍵盤輸入的每一行的值,當接收的內(nèi)容為空字符串時退出。,using System; namespace BreakExample public class Program public static void Main() for (; ; ) Console.Write(請輸入一個字符串(直接回車退出):); string s = Console.ReadLine(); if (s = ) break; Console.WriteLine(你輸入的是: 0., s); Console.ReadLine(); ,2.6.3 跳轉(zhuǎn)語句 (續(xù)),2.continue語句 功能:將控制傳遞給下一個while、do-while、 for或foreach,繼續(xù)執(zhí)行下一次循環(huán)。 格式: continue ;,2.6.3 跳轉(zhuǎn)語句 (續(xù)),3.goto語句 僅在下面兩種情況下才可能會使用goto語句: (1)用于switch語句中從一個case標簽轉(zhuǎn)到另一個case標簽處。 (2)用于直接退出到多重嵌套循環(huán)的外部。,2.6.3 跳轉(zhuǎn)語句 (續(xù)),4.return語句 功能:將控制返回到出現(xiàn)return語句的函數(shù)成 員的調(diào)用方。 格式: return 表達式; 其中表達式為可

溫馨提示

  • 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

提交評論