C#Base第一章c#程序基礎(chǔ)_第1頁
C#Base第一章c#程序基礎(chǔ)_第2頁
C#Base第一章c#程序基礎(chǔ)_第3頁
C#Base第一章c#程序基礎(chǔ)_第4頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C#Base第一章c#程序基礎(chǔ)C#語言簡介C#語言是一種基于微軟,NET平臺的高級編程語言,也是目前最流行的開發(fā)語言之一,最初它有一個更酷的名字—COOLo微軟從!998年12月開始了COOL項目,直到2000年2月,COOL被正式更名為C#語言;C#語言在2001年得以正式發(fā)布。C#語言的名字很有創(chuàng)意,讀作:〃CSharp","Sharp〃是鋒利的意思,寓意在軟件開發(fā)領(lǐng)域,C#語言將成為一把鋒利的開發(fā)工具,而事實也證明了它已經(jīng)做到了。C#語言是ー種安全的、穩(wěn)定的、簡單的、優(yōu)雅的編程語言,它擁有強大的功能,簡單得可視化操作和高運行效率,以其強大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持,成為.NET開發(fā)的首選語言。C#集成開發(fā)環(huán)境MicrosoftVisualStudio2012是微軟與2012年9月12日在美國西雅圖推出的新一代集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment,簡稱IDE),是目前最專業(yè),最流行的Windows平臺應(yīng)用程序開發(fā)環(huán)境。VisualStudio2012的開發(fā)界面主要由以下部分組成:.菜單和工具欄:與許多常見工具相同,此處的菜單和工具欄主要用于提供各種功能的快捷方式,而且可以根據(jù)當(dāng)前窗體類型進行動態(tài)改變。.工具箱區(qū):工具箱提供了可視化編程中需要用到的各種控件,開發(fā)是直接使用鼠標(biāo)拖拽,將控件拖拽至工作區(qū)即可。.工作區(qū):工作區(qū)是項目開發(fā)的主要操作區(qū)域,用于顯示各種文件、并提供編輯功能。例如:打開源代碼文件進行編輯,打開設(shè)計界面拖拽控件進行界面搭建等。.解決方案區(qū)和屬性區(qū)解決方案區(qū)主要顯示項目以及項目的資源,如項目中的文件夾、源代碼文件及圖片素材文件等。屬性區(qū)用于顯示當(dāng)前選中控件的各種屬性信息,且可更改。.輸出區(qū)輸出區(qū)用于顯示項目編譯或運行后的相關(guān)信息,如編譯錯誤信息、警告信息、出錯行數(shù)和錯誤原因等。1.3初始C#程序.創(chuàng)建第一個C#語言程序控制臺應(yīng)用程序也稱為Console應(yīng)用程序,用于在命令行方式下運行??刂婆_應(yīng)用程序的優(yōu)點在于可以方便的練習(xí)編程語言的語法和開發(fā)習(xí)慣,一般情況下,每個軟件從業(yè)者都有從學(xué)習(xí)控制臺應(yīng)用程序到學(xué)習(xí)可視化編程的轉(zhuǎn)變過程。⑴.啟動VisualStudio2012,新建項目2).選擇項目類型以及模板,選擇Windows控制臺應(yīng)用程序⑶.完成項目創(chuàng)建.示例:/*文件名:Program.cs作者:rather概述:第一個C#程序,向控制臺進行輸出信息*/UsingSystem;namespaceMyFirstCsharpClassProgramstaticvoidMain(string[]args)〃用于向控制臺進行輸出Console.WriteLine(/zHello/C#!,/)}))⑸.按Ctrl+F5編譯并執(zhí)行程序,輸出結(jié)果.項目結(jié)構(gòu)分析在創(chuàng)建C#應(yīng)用程序是,會自動生成相應(yīng)的解決方案,C#應(yīng)用程序均通過解決方案進行組織,那么解決方案是什么呢?解決方案和項目都是VisualStudio2012提供的有效管理應(yīng)用程序的容器,ー個解決方案可以包含ー個或者多個項目,且每一個項目能夠解決ー個獨立的問題,這樣,即使相關(guān)的代碼最終在計算機中的不同位置編譯為多個應(yīng)用程序,也可以將其組合在一起,作為整體進行管理。注意:C#語言源文件以.cs作為拓展名.程序結(jié)構(gòu)分析在解決方案資源管理器中,雙擊Program.cs源文件,將在エ作區(qū)中打開該文件,代碼如下:/*文件名:Program.cs作者:rather概述:第一個C#程序,向控制臺進行輸出信息*/UsingSystem;namespaceMyFirstCsharp(ClassProgram(staticvoidMain(string[]args)(〃用于向控制臺進行輸出Console.WriteLine("Hello,C#!"))⑴.using關(guān)鍵字Using關(guān)鍵字用于導(dǎo)入命名空間,是C#語言中組織代碼的方式,將具有相同功能的相似類在邏輯上進行分組,便于管理和查找,”usingSystem;”語句引入System命名空間,意味著可以直接使用System命名空間中的類和方法。.namespace關(guān)鍵字namespace關(guān)鍵字用于聲明命名空間、組織和管理代碼??梢詫⒁恍┚o密相關(guān)的代碼放在同一個命名空間中,提高管理和使用的效率。.class關(guān)鍵字C#語言是完全面向?qū)ο蟮恼Z言,類是組織代碼的最小單元,在C#語言中,可以通過class關(guān)鍵字聲明類。.Main函數(shù)Main函數(shù)被稱為主函數(shù),是所有C#語言程序的入口,任何C#語言程序均從Main函數(shù)開始運行,并在Main函數(shù)中結(jié)束運行。⑸.注釋注釋是指在程序的某些位置添加的ー些說明性的文字,用于提高程序代碼的可讀性,C#語言注釋通常分為兩種形式。.如果注釋包含多行,可以使用"/*”開始、〃?/〃結(jié)束,這兩個符號必須成對出現(xiàn)。.如果注釋僅包含一行,則只需要在注釋語句之間使用〃〃〃進行標(biāo)識,需要注意的是,〃〃〃之后的一整行都會被編譯器作為注釋處理。注意:注釋僅用于描述說明,所以編譯器在編譯代碼時會忽略注釋,即注釋不參與程序的運行。1.4控制臺的輸出控制臺是一個操作系統(tǒng)窗口,用戶可以在該窗口中通過計算機鍵盤輸入文本,經(jīng)過處理后將結(jié)束從計算機終端輸出,從而與操作系統(tǒng)或基于文本的控制臺應(yīng)用程序進行交互。例如:在windows中,控制臺稱為命令提示窗口,在開始つ運行中輸入命令〃cmd〃后回車,即可打開,該窗口可以執(zhí)行MS-DOS命令。語法:Console.Write("控制字符串〃);Console.WriteLine("控制字符串”);兩者的區(qū)別在于前者輸出后不換行,而后者輸出后換行,代碼見示例如下:classProgramStaticvoidMain(string[]args)(//Console.Write輸出不換行Console.Write("Hello");Consloe.Write("Mstanford");//Console.WriteLines輸出后換行Console.WriteLine("つ;Console.WriteLinef" つ;Console.WriteLine("Hello/,);Console.WriteLine("Mstanford,/);)}在Console.Write?;駽onsole.WriteLine。中的控制字符串中,除了可以出現(xiàn)文字字符外,還可以出現(xiàn)ー些非打印字符,用于對輸出信息進行格式的控制。非打印字符包括空格、制表符、換行符合其他轉(zhuǎn)義字符⑴?空格:用于分割字符。(2).制表符(\t):用于定位顯示的數(shù)據(jù),與Word中Tab鍵的文字定位效果類似。⑶.換行符(\n):用于實現(xiàn)在新的一行輸出信息。⑷.其他轉(zhuǎn)義字符:如單引號(ヽ’)、雙引號(ヽ”)等。示例:classProgram{staticvoidMain(string[]arge)(Console.Write("姓名、t年齡、t分數(shù)、n〃);Console.Write("jack\t23\t78\n");Console.Write("tom\t20\t80\nw);)提醒:在編寫代碼時,可以在鍵入"CW"后,連續(xù)兩次按下Tab鍵快捷生成代碼"Console.WriteLine。"。第一章本章總結(jié):.C#語言是ー種基于微軟.NET平臺的高級編程語言,也是目前最流行的開發(fā)語言之一。.MicrosoftVisualStudio2012是微軟推出的新一代集成開發(fā)環(huán)境,是目前最專業(yè)、最流行的windows平臺應(yīng)用程序開發(fā)環(huán)境。.使用C#語言創(chuàng)建控制臺應(yīng)用程序的過程是:創(chuàng)建控制臺應(yīng)用程序、編寫代碼、運行程序。.可使用Console.Write?;駽onsole.WriteLine()向控制臺進行輸出,并可以使用轉(zhuǎn)義字符。第二章數(shù)據(jù)類型和變量變量變量的基本概念可以將變量理解為是內(nèi)存中一段已經(jīng)命名的存儲空間。它擁有自己的名稱,通過變量名可以快速、簡單地訪問變量,將臨時數(shù)據(jù)成存儲到指定內(nèi)存區(qū)域中,或者從指定內(nèi)存區(qū)域中讀取數(shù)據(jù)。變量的使用使用步驟如下:⑴?聲明變量:開辟內(nèi)存空間。值:將數(shù)據(jù)存入空間。⑶?使用變量:操作數(shù)據(jù)。1.變量的聲明在C#語言中,任何變量在使用前都必須聲明,聲明變量的本質(zhì)是在內(nèi)存中開辟ー塊存儲空間并命名。語法:數(shù)據(jù)類型變量名:在C#語言中,可以一次聲明多個同類型的變量,只需在聲明時使用逗號隔開。例如:intwidth,height;變量的命名需要遵守的規(guī)范如下:.變量名由字母、數(shù)字和下劃線組成,不能出現(xiàn)其他特殊字符。.首字符必須是字母或下劃線,在C#語言中,變量名建議使用小寫字母開頭,如:age、name、addressl和my_money。在C#語言的變量命名規(guī)則中,下劃線不提倡使用,所以my_money建議寫成myMoneyo.變量名區(qū)分大小寫,如num和NUM代表兩個不同的變量。4).變量名不能和關(guān)鍵字同名,如不能將變量命名為int、void等。關(guān)鍵字:關(guān)鍵字是對編譯器具有特殊意義的預(yù)定義保留標(biāo)識符。他們不能再程序中用作標(biāo)識符,除非它們有一個@前綴。例如:@if是有效的標(biāo)識符,但if不是,因為if是關(guān)鍵字。.變量的賦值語法:變量名=值;在C#語言中,〃ゴ不同于數(shù)學(xué)公式〃1+1=2〃中的〃ー號,在數(shù)學(xué)公式中,〃メ表示運算結(jié)果。而C#語言中,〃メ是賦值運算符,表示將右側(cè)的值存儲至左側(cè)的變量中。示例:classProgram(staticvoidMain(string[]args)(Intage;〃聲明一個變量age=58;〃比爾蓋茨年齡變量賦值為58})提示:賦值運算的方向是從左到右、且賦值運算符的左邊只能是ー個變量。例如:〃a+b=l+2〃會出現(xiàn)編譯錯誤。.使用變量通過變量名可以訪問其中存儲的數(shù)據(jù),也可以修改其中存儲的數(shù)據(jù),示例:classProgramstaticvoidMain(string[]args)Intagel,age2;〃聲明兩個變量agel=58;〃比爾蓋茨年齡變量賦值為58age2=agel-29;〃計算馬克扎克伯格的年齡并賦值}}提示:變量中一次只能存儲ー個值,當(dāng)對同一個變量多次賦值時,將保留最后一次賦值結(jié)果。常量在現(xiàn)實生活中存在很多變化的數(shù)據(jù),如時間、年齡、身高和體重等,在程序中可以考慮將這些數(shù)據(jù)存儲在變量中,因為變量中存儲的數(shù)據(jù)允許被改變,但還存在ー些固定不變的數(shù)據(jù),如圓面積和周長時使用的圓周率、計算人承受的重力時使用的重力加速度等,對于這些數(shù)據(jù),在程序中應(yīng)該如何描述呢?在C#語言中引入了〃常量〃的概念,常量指在程序運行過程中存儲的內(nèi)容不能被改變的內(nèi)存空間,通常用于替換不會改變的數(shù)據(jù),常量的值在編譯時確定在整個程序中不允許修改。語法:const數(shù)據(jù)類型常量名=值;const關(guān)鍵字標(biāo)示聲明一個常量,常量名用于唯一性標(biāo)識該常量,應(yīng)該具有代表意義,不能過于簡練或復(fù)雜,且通常使用大寫形式。示例:classProgram{staticvoidMain(string[]args)(constdoublePI=301416;〃定義常量doubler=2.5;〃定義變量,圓的半徑doubles=PO*r*r;〃計算圓的面積})在控制臺中輸出變量的值在C#語言中,Console.Write。函數(shù)或Console.WriteLine()函數(shù)提供兩種方式可以將變量的值輸出至控制臺。方式ー:Console.WriteLine(需要輸出的字符串);方式二:Console.WriteLine("格式字符串”,值列表);其中,方式一將需要輸出字符串與變量的值通過〃+〃進行連接,(方式ー):classProgram{staticvoidMain(string[]args)(intagel=58,age2;age2=agel-29;Console.WriteLine("比爾蓋茨:"+agel+へn馬克扎克伯格:"+age2);}}(方式二):方式二在格式字符串中使用"{參數(shù)索引}"符號為后續(xù)值列表中的變量占位,參數(shù)索引從0開始。classProgram(staticvoidMain(string[]args)(intagel=58,age2;age2=agel-29;Console.WriteLine("比爾蓋茨:{0}、n馬克扎克伯格:{I}"agelzage2);}}2.2數(shù)據(jù)類型在C#語言中,定義了一套完整的數(shù)據(jù)類型系統(tǒng)用于表示不同形式的數(shù)據(jù),C#語言中的數(shù)據(jù)類型非為值類型和引用類型,常用的值類型包括整型、浮點型、字符型和布爾類型等;常用的引用類型包括字符串類型等。值類型.整型整型是常用的數(shù)據(jù)類型,用于表示整數(shù)數(shù)據(jù),常用的整型包括short(短整型)、int(整型)和long(長整型),它們之間的區(qū)別主要在于表示的范圍不ー樣。常用整型及其表示范圍類型范圍大小short-32,768到32,767有符號16位整數(shù)int-2,147,483,648至リ2,147,483,647有符號32位整數(shù)long-9,223,372,036,854,775,808至リ9,223,372,036,854,775,807有符號64位整數(shù).浮點型對于帶小數(shù)點的數(shù)據(jù),通常用浮點型來表示,浮點型的數(shù)據(jù)包括float和double兩種類型。常見的浮點型數(shù)據(jù)類型大致范圍粘度float-3,4X1038—+3.4X1038フ位double+5.OX1O324~+1.7X1O30815?16位float也稱為單精度浮點型,double也稱為雙精度浮點型。double類型的數(shù)據(jù)范圍要遠大于float類型,進度也更高。提示:在C#語言中,”1.0〃默認為double類型,如果將〃1.0〃賦值給float類型,則會編譯報錯,double類型的數(shù)據(jù)精度高于float類型,通俗而言,即float類型的變量裝不下double類型的數(shù)據(jù)。示例:classProgram{staticvoidMain(string[]args)(floatnum=12.34f;不能寫成如下格式:floatnum=12.34;編譯扌艮錯ツ)).布爾類型在C#語言中,布爾類型代表〃真〃和〃假〃,使用bool表示,它只有兩種值:true和false。通常用于判斷莫條件是否成立。解釋:例如:〃ー個星期有7天〃這個條件就是〃真〃,用bool值〃true〃來表示判斷結(jié)果,相反,如果說〃ー個星期有8天〃,那么這個條件就是〃假〃,用bool值〃false〃來表示判斷結(jié)果。示例:classProgram(staticvoidMain(string[]args)(boolbl=true;boolresult=1>2;//result賦值為falseConsole.WriteLine(bl+〃、n〃+result);).字符類型字符類型用于表示單個字符,使用char表示,例如ア、W等,字符類型數(shù)據(jù)必須使用兩個單引號括起來。在C#語言中,字符類型數(shù)據(jù)存儲形式與整型類型類似,程序只存儲字符所對應(yīng)的ASCLL碼。常用的ASCLL碼ASCLL碼字符48?57〇?965?90A?Z97?122a?z示例:classProgram(staticvoidMain(string[]args)(charcl='a';〃變量cl中實際存儲的是97Console.WriteLine((int)cl);〃強制類型轉(zhuǎn)換)2.2.2引用類型在C#語言中存在多種不同的引用類型,字符串類型是最常用的引用類型之一。字符串類型用于表示ー組字符序列(零個或多個字符),使用string表示,字符串類型數(shù)據(jù)必須使用雙引號括起來。示例:classProgram{staticvoidMain(string[]args)(stringname="jack";stringsex="男";Console.WriteLine("姓名:"+name"\n性別:"+sex);)}.3控制臺輸入任何類型的應(yīng)用程序都必須與用戶進行交互。對于控制臺的輸入,C#語言提供了對應(yīng)的Console.ReadLine()函數(shù)進行實現(xiàn)。Console.ReadLine。函數(shù)主要從控制臺接收用戶輸入的一行字符串。示例:classProgram(staticvoidMain(string[]args)(Console.WriteLine("請輸入英雄的稱號:つ;stringname=Console.ReadLine();〃接收用戶的輸入并賦值給變量nameConsole.WriteLine("你輸入的英雄名字是:"+name);))數(shù)據(jù)轉(zhuǎn)換使用Console.ReadLine。函數(shù)時,用戶輸入的數(shù)據(jù)都將作為string類型的數(shù)據(jù)被接收,若需要接收其他類型的數(shù)據(jù),則需要將接收到的string類型數(shù)據(jù)手動轉(zhuǎn)化為其他數(shù)據(jù)類型。(1)將string類型轉(zhuǎn)換為int類型int類型變量=int.Parse(字符串);⑵將string類型轉(zhuǎn)換為float類型float類型變量=float.Parse(字符串);(3)將string類型轉(zhuǎn)換為double類型double類型變量:double.Parse(字符串);示例:classProgram{staticvoidMain(string[]args){Console.WriteLine("請輸入英雄的稱號:");stirngname=Console.ReadLinef);Console.WriteLine("請輸入英雄的物理攻擊カ:");intattl=int.Parse(Console.ReadLine());Console.WriteLine("請輸入英雄的魔法攻擊カ:");intatt2=int.Parse(Console.ReadLine());Console.WriteLine("英雄稱號:"+name+"\n攻擊力:"+(attl+att2));)).4調(diào)試在軟件開發(fā)過程中,會產(chǎn)生很多錯誤,即使是實際應(yīng)用的軟件,也不能保證完全沒有錯誤,作為合格的軟件工程師,我們要盡量發(fā)現(xiàn)軟件存在的錯誤并修正,搜尋和消除錯誤的過程稱為調(diào)試,它是軟件工程師必須具備的技能之一。調(diào)試的步驟一般如下:(1)設(shè)置斷點⑵單步執(zhí)行⑶觀察變量(4)發(fā)現(xiàn)問題⑸修正代碼(6)解決問題第二章本章總結(jié):常量實在編譯時已知并在程序的生存期內(nèi)不發(fā)生更改的不可變值。變量是內(nèi)存中一段以命名的存儲空間,用于保存程序在執(zhí)行過程中產(chǎn)生的臨時數(shù)據(jù)。變量使用的步驟是:聲明變量、賦值、使用變量。C#語言中的數(shù)據(jù)類型分為值類型和引用類型,常用的數(shù)據(jù)類型包括int、char>bookfloat、double和string等??刂婆_的輸入可以通過Console.ReadLine。函數(shù)實現(xiàn),用于接收用戶輸入的一行字符串,若需要接受其他類型則需要類型轉(zhuǎn)換。調(diào)試的基本過程為:設(shè)置斷點、單步執(zhí)行、觀察變量、發(fā)現(xiàn)問題、修正代碼和解決問題。第三章運算符和表達式表達式表達式是指由操作數(shù)和運算符組成的用于完成某種運算功能的語句。操作數(shù)通??梢允浅A?、變量和表達式,而運算符則指可以完成某種運算功能的符號。運算符運算符,顧名思義就是用于計算的符號,在C#語言中存在大量的運算符,運算符按功能分為:賦值運算符、算術(shù)運算符、關(guān)系運算符和邏輯運算符等;按操作個數(shù)分為:單目運算符、雙目運算符和三目運算符。使用運算符時,要關(guān)注以下三個方面:.運算符的目運算符能連接操作數(shù)的個數(shù)稱為運算符的目。C#語言中運算符的目有以下3種:單目運算符:只能連接一個操作數(shù),如++、一等。⑵雙目運算符:可以連接兩個操作數(shù),C#語言中的多數(shù)運算符屬于雙目運算符。如+、-、ヽZ"Vj〇⑶三目運算符:可以連接三個操作數(shù)。C#語言中只有一個三目運算符,即條件運算符。.運算符的優(yōu)先級優(yōu)先級是指在ー個表達式中出現(xiàn)多個不同的運算符,在進行計算時運算符執(zhí)行的先后次序。如算術(shù)運算符的乘除運算符優(yōu)先級高于加減運算符的優(yōu)先級,在C#語言中,運算符都存在自身的優(yōu)先級,應(yīng)遵循優(yōu)先級高的運算符先處理的規(guī)則。.運算符的結(jié)合方向結(jié)合方向又稱為結(jié)合性,是指當(dāng)一個操作數(shù)連接連個同一優(yōu)先級的運算符時,按運算符的結(jié)合性所規(guī)定的結(jié)合方向處理。C#語言中各運算符的結(jié)合性分為兩種,分別為左結(jié)合性(自左向右)和右結(jié)合性(從左向右)。賦值運算符在C#語言中,賦值運算符為〃="賦值運算符用于將賦值運算符右側(cè)表達式的結(jié)果附于賦值運算符左側(cè)的變量,例如:intage=20;inta=1+1;intb=a+2;注意:賦值運算符左側(cè)只能為ー個變量,而右側(cè)可以變量、常量或表達式。賦值表達式的一般形式:變量名=表達式;賦值運算符的結(jié)合性是自左向右。例如:inta,b,c;a=b=c=l;執(zhí)行完畢后,變量a、b、c的值均為1。算術(shù)運算符算術(shù)運算符指能夠完成算術(shù)運算符功能的運算符,如使用〃+"運算符完成加法運算。算術(shù)運算符運算符功能示例+加法運算表達式1+2計算結(jié)果為3-減法運算表達式2-1計算結(jié)果為1*乘法運算表達式2*2計算結(jié)果為4/除法運算表達式4/2計算結(jié)果為2%模運算表達式5%2計算結(jié)果為1注意:⑴如果參與運算的數(shù)值都是整數(shù),則’7〃完成的是整除運算,如5/2的值是2I而非2.5.(2)模運算〃%〃是進行除法運算后取余數(shù),參與運算的必須是整數(shù)。示例:classProgram{staticvoidMain(string[]args)(intnuml=2,num2=l;intresult;result=numl+num2;Console.WriteLine("{〇}+{1}的結(jié)果為:{2}〃numl,num2,result);result=numl-num2;Console.WriteLine("{0}-{1}的結(jié)果為:{2}//,numl/num2,result);result=numl*num2;Console.WriteLine("{0}*{1}的結(jié)果為:{2}//,numl,num2,result);result=numl/num2;Console.WriteLine("{0}/{1}的結(jié)果為:{2}//,numl,num2,result);result=numl%num2;Console.WriteLine("{0}%{1}的結(jié)果為:{2}”,numl,num2,result);))解釋:在算術(shù)運算符中,除上述運算符中外,還存在兩個較為獨特的單目運算符,分別是自增(++)和自減(-),自增和自減運算符分別用于使變量值自增1或自減1,一般形式為:++變量名或變量名++ー變量名或變量名ー.如果將自增或自減運算符放在變量之前,則稱為前綴運算,前綴運算執(zhí)行的是〃先運算后使用〃的處理過程,例如:inta=5;intb=++a;〃等效于a=a+l;intb=a;執(zhí)行完畢后,變量a、b的值均為6.如果將自增或自減運算符放在變量之后,則稱為后綴運算,后綴運算執(zhí)行的是〃先使用后運算〃的處理過程,例如:inta=5;intb=a++;〃等效于:intb=a;a=a+l;執(zhí)行完畢后,變量a的值為6,b的值為5。.當(dāng)出現(xiàn)難以區(qū)分的若干個〃+〃或〃ー〃所組成的運算符時,在C#語言中規(guī)定:從左到右取盡可能多的符號組成運算符,例如:inta=l,b=2,c;C=a+++b;〃等效于c=(a++)+b;執(zhí)行完畢后,變量a和變量b的值均為2,變量c的值為3〇注意:⑴自增或自減運算只能作用于變量,如:1++、++(++x)均為錯誤。(2)當(dāng)單獨使用自增或自減時,前綴運算和后綴運算效果一致,例如:++X;等效于x++;--x;等效于X-;復(fù)合賦值運算符運算符功能示例+=加法運算inta=10;a+=2等效于a=a+2;a=12——減法運算inta=10;a-=2等效于a=a-2;a=8*—乘法運算inta=10;a*=2等效于a=a*2;a=20/=除法運算inta=10;a/=2等效于a=a/2;a=5%=模運算inta=10;a%=2等效于a=a%2;a=0注意:⑴當(dāng)需要對變量自身進行算術(shù)運算時,建議使用復(fù)合賦值運算符,效率遠高于算術(shù)運算符。⑵復(fù)合賦值運算符的結(jié)合性自右相左,例如:inta=5;a+=a+=5;〃等效于a=a+(a+5);執(zhí)行完畢后,變量a的值為15。關(guān)系運算符關(guān)系運算符用于比較兩個變量或表達式的值的大小關(guān)系,在C#語言中,關(guān)系運算結(jié)果值為bool類型,包括〃true〃或"false"。true表示〃真〃,false表示〃假〃。關(guān)系運算符運算符功能示例>比較大于關(guān)系表達式2>1計算結(jié)果為"true"<比較小于關(guān)系表達式2<1計算結(jié)果為"false">=比較大于或等于關(guān)系表達式2>=!計算結(jié)果為"true"<=比較小于或等于關(guān)系表達式2>1計算結(jié)果為"false"==比較相等關(guān)系表達式2>1計算結(jié)果為"false"!=比較不等于關(guān)系表達式2>1計算結(jié)果為"true"示例:classProgramstaticvoidMain(string[]args)intnuml=2/num2=l;boolresult;result=numl>num2;Console.WriteLine("{0}>{1}的結(jié)果為:{2},,/numl,num2,result);result=numl<num2;Console.WriteLine("{0}<{1}的結(jié)果為:{2}//,numl,num2,result);result=numl>=num2;Console.WriteLine("{〇}>={1}的結(jié)果為:{2}”,numl,num2,result);result=numl<=num2;Console.WriteLine("{〇}<={1}的結(jié)果為:{2}”,numl,num2,result);result=numl==num2;Console.WriteLine("{0}二={1}的結(jié)果為:{2}”,numl,num2,result);result=numl!=num2;Console.WriteLine("{0}!={1}的結(jié)果為:{2}”,numl,num2,result);}注意:Jゴ與〃ゴ的區(qū)別是:,』〃用于比較運算符兩邊的操作數(shù)是否相等,結(jié)果為〃bool〃;〃ゴ用于計算運算符右邊變大時的值并賦值給左邊的變量。邏輯運算符使用關(guān)系運算符可以比較程序中兩個值得大小關(guān)系,但在程序中經(jīng)常需要從多個比較關(guān)系中得到綜合判斷的結(jié)果,例如,要想進入微軟亞洲研究院工作,至少需要研究生畢業(yè),且從事軟件開發(fā)2年以上的工作經(jīng)驗。為了完成復(fù)雜的邏輯判斷問題,C#語言提供了一組邏輯運算符。邏輯運算符運算符功能示例&&與運算,即同時成立,缺ー不可a>b&&c>d:都為trueII或運算,即兩者中有一個成立即可a>b||c>d:ー個為true!非運算,取反!(a>b):取反項(a<b)注意與關(guān)系運算符”==〃類似,在書寫時,〃&&〃和〃||"兩個符號之間不允許有空格,否則編譯系統(tǒng)會將其識別為非法字符。示例classProgram{staticvoidMain(string[]args)(intdegree,workyear;degree=3;workyear=3;boolresult=(degree>=2)&&(workyear>=2);Console.WriteLine("博士并且工作3年的入職評判結(jié)果為:“+result);degree=2;workyear=l;boolresult=(degree>=2)&&(workyear>=2);Console.WriteLine("碩士并且工作1年的入職評判結(jié)果為:w+result);degree=l;workyear=l;boolresult=(degree>=2)&&(workyear>=2);Console.WriteLine(“本科并且工作1年的入職評判結(jié)果為:z,+result);)邏輯運算符存在〃短路〃現(xiàn)象,可以用于生成更高效的代碼,在&&運算中,如果第一個操作數(shù)為假,無論第二個操作數(shù)的值是什么,結(jié)果均為假。在II運算中,如果第一個操作數(shù)為真,無論第二個操作數(shù)的值是什么,運算的結(jié)果均為真,因此,在這兩種情況下,不需要計算第二個操作數(shù)。由于不計算第二個操作數(shù)節(jié)省了時間,因此生成了效率更高的代碼,例如:inta=3,b=4;Console.WriteLine(a>2||b++>3);執(zhí)行完畢后,變量a和變量b的值保持不變,變量b的值保持不變說明運算符II之后的表達式未執(zhí)行,因為運算符II之前的表達式的值為True,根據(jù)運算符||的運算規(guī)則,亦可以確定整個表達式結(jié)果為True。修改上述示例如下:inta=3,b=4;Console.WriteLine(a<211b++>3);執(zhí)行完畢后,變量a的值不變,變量b的值為5。運算符優(yōu)先級在編程過程中,經(jīng)常會出現(xiàn)多種運算符在同一表達式中的運算,在C#語言中進行表達式求值時,同一優(yōu)先級的運算符,運算次序由結(jié)合性決定,不同優(yōu)先級的運算符,運算次

序由優(yōu)先級決定。C#語言中運算符優(yōu)先級和結(jié)合性優(yōu)先級運算符結(jié)合性10從左到右2!、++ヽ—從右到左3*、/、%從左到右4+、?從左到右5>、<、>=、<二從左到右6==>!=從左到右7&&從左到右8II從左到右9二、十二、一二、?二、/二、%-從右到左3.3類型轉(zhuǎn)換在C#語言中,不同類型的數(shù)據(jù)在進行混合運算時需要進行類型轉(zhuǎn)換,即將不同類型的數(shù)據(jù)轉(zhuǎn)換成同種類型的數(shù)據(jù)再計算,針對于值類型的數(shù)據(jù),類型轉(zhuǎn)換主要包括隱式轉(zhuǎn)換和顯式轉(zhuǎn)換兩種形式.隱式轉(zhuǎn)換:系統(tǒng)默認的、無須顯式聲明即可進行的轉(zhuǎn)換。例如:floata;a=10;〃隱式轉(zhuǎn)換,a=10.0;隱式轉(zhuǎn)換是從低精度、小范圍的數(shù)據(jù)類型轉(zhuǎn)換為高精度、大范圍的數(shù)據(jù)類型,C#語言中支持的隱式轉(zhuǎn)換類型有c#語言中的運算符優(yōu)先級和結(jié)合性源類型目標(biāo)類型charint^long>float、doubleshortint、long、float、doubleIntlong、float、doublelongfloat、doublefloatdouble注意⑴char類型不能通過隱式轉(zhuǎn)換為short類型。(2)bool類型與數(shù)值類型不兼容,不能與數(shù)值類型進行類型轉(zhuǎn)換。.顯式轉(zhuǎn)換:一般情況下,數(shù)據(jù)類型的轉(zhuǎn)換通常由系統(tǒng)自動完成,無須人工干涉,所以稱為隱式轉(zhuǎn)換,但如果程序要求一定要將某ー類型的數(shù)據(jù)轉(zhuǎn)換為另外一種類型,則可以使用強制類型轉(zhuǎn)換運算符進行轉(zhuǎn)換,這種強制轉(zhuǎn)換的過程稱為顯式轉(zhuǎn)換。語法:(目標(biāo)數(shù)據(jù)類型)表達式;例如:inta=5,b=2;Console.WriteLine(a/b);輸出結(jié)果為2,小數(shù)部分丟失,可以使用顯式轉(zhuǎn)換保留小數(shù)部分。Console.WriteLine((double)a/b);輸出結(jié)果為2.5,變量a通過顯式轉(zhuǎn)換轉(zhuǎn)換為double類型,在進行除法運算之前,變量b通過隱式轉(zhuǎn)換轉(zhuǎn)換為double類型,所以運算結(jié)果為double類型,小數(shù)部分得以保留。使用顯式轉(zhuǎn)換同時存在風(fēng)險,當(dāng)源數(shù)據(jù)類型高于目標(biāo)數(shù)據(jù)類型時,將會丟失部分數(shù)據(jù),從而造成數(shù)據(jù)精度的降低,或者發(fā)送數(shù)據(jù)溢出,導(dǎo)致結(jié)果錯誤,例如,將浮點數(shù)1.83轉(zhuǎn)換為整型數(shù)后的結(jié)果為1,小數(shù)位0.83將丟失。示例:classProgram(staticvoidMain(string[]args)(intnumbl;floatnumb2;doublenumb3;constdoublePI=3.1415926;numbl=(int)PI;numb2=(float)PI;numb3=PI;Console.WriteLine("整型:num=w+numbl);Console.WriteLine("單精度:mjm="+numb2);Console.WriteLine("雙精度:num="+numb3);))3.string類型和值類型之間的轉(zhuǎn)換IJstring類型轉(zhuǎn)換為值類型語法:值類型.Parse(string類型變量);示例:classProgram(staticvoidMain(string[]args)(〃價格變量floatprice;〃商品數(shù)目變量intcount;〃商品總價變量floatmoney;Console.WriteLine(“請輸入商品價格:");price=float.Parse(Console.ReadLine());Console.WriteLine(“請輸入商品數(shù)量:");count=int.Parse(Console.ReadLine());money=price*count;Console.WriteLine("商品總價:"+money);)}2)值類型轉(zhuǎn)換為string類型語法:值類型變量.ToString();值類型變量.ToString(格式化字符串);例如:intmoney=100;stringstrMoney=money.ToString();strMoney=money.ToString("C");示例:classProgramstaticvoidMain(string[]args)〃價格變量floatprice;〃商品數(shù)目變量intcount;〃商品總價變量floatmoney;Console.WriteLine(“請輸入商品價格:");price=float.Parse(Console.ReadLine());Console.WriteLine(“請輸入商品數(shù)量:");count=int.Parse(Console.ReadLine());money=price*count;〃以貨幣格式輸出Console.WriteLine("商品總價:"+money.ToString(/zC"));))常見的格式化字符串格式格式化字符串結(jié)果貨幣2.5.ToString("C")¥2.50十進制數(shù)25.ToString("D5”)00025同定點25.ToString("F2”)25.00常規(guī)2.5.ToString(/,Gw)2.5數(shù)字2500000.ToString(wNw)2500000.00百分比0.126.ToString("P")12.6%第三章本章總結(jié)表達式指由操作數(shù)和運算符組成的用于完成某種運算功能的語句。運算符包括賦值運算符、算術(shù)運算符、關(guān)系運算符和邏輯運算符運算符的優(yōu)先級是指運算符在表達式中執(zhí)行運算的先后次序,由高到低的順序依次是算術(shù)運算符、關(guān)系運算符、邏輯運算符、賦值運算符。值類型數(shù)據(jù)之間的類型轉(zhuǎn)換包括自動類型轉(zhuǎn)換和強制類型轉(zhuǎn)換??赏ㄟ^“值類型.Parse。"函數(shù)實現(xiàn)string類型向值類型的轉(zhuǎn)換,也可通過“值類型變量.ToString()〃函數(shù)實現(xiàn)值類型向string類型的轉(zhuǎn)換。第四章if條件語句程序流程控制結(jié)構(gòu)C#語言提供了順序、田間和循環(huán)三種基本的流程控制結(jié)構(gòu)。順序結(jié)構(gòu):程序?qū)⑼耆凑諘鴮戫樞蛞来螆?zhí)行所有的語句。條件結(jié)構(gòu):根據(jù)條件判斷結(jié)果來決定程序的執(zhí)行流程。循環(huán)結(jié)構(gòu):在給定條件成立時反復(fù)執(zhí)行某程序段,直到條件不成立為止。從程序執(zhí)行過程角度看,順序、條件及循環(huán)三種結(jié)構(gòu)的順序連接連接或嵌套連接可以實現(xiàn)復(fù)雜多樣的程序。條件結(jié)構(gòu)隨著問題的復(fù)雜程度不斷增加,通過逐步執(zhí)行的簡單程序已經(jīng)不能滿足需求。例如,判斷ー個數(shù)的奇偶性,就需要根據(jù)處理結(jié)果進行判斷以絕定輸出哪一種判斷結(jié)果。這種根據(jù)判斷結(jié)果來控制程序執(zhí)行過程的結(jié)果稱為條件結(jié)構(gòu),條件結(jié)構(gòu)可以根據(jù)條件判斷結(jié)果來決定程序的執(zhí)行流程。在C#語言中,基本的條件結(jié)構(gòu)分為單分支if和雙分支if兩種結(jié)構(gòu)。421單分支if語句單分支if語句是最基本的條件語句之一,它根據(jù)判斷指定條件是否成立來決定是否執(zhí)行特定代碼。語法:If(條件表達式)語句;〃條件成立時,執(zhí)行的特定代碼}當(dāng)條件表達式為真時,執(zhí)行語句塊,當(dāng)條件表達式為假時,跳過語句塊。若if語句之后還存在其他語句,則繼續(xù)執(zhí)行。在數(shù)學(xué)運算中,經(jīng)常會使用絕對值,正整數(shù)的絕對值是其本身,負整數(shù)的絕對值是其相反數(shù),所以當(dāng)運算ー個整數(shù)的絕對值時正整數(shù)和負整數(shù)兩個可能:若為正數(shù),則不需要任何處理;若為負數(shù),則需要通過計算其相反數(shù)。可以使用單分支if結(jié)構(gòu)實現(xiàn)。示例:classProgram(staticvoidMain(string[]args)(intnum,absNum;Console.WriteLine("請輸入ー個整數(shù):");num=int.Parse(Console.ReadLine());absNum=num;if(num<0)absNum=O-absNum;Console.WriteLine(num+”的絕對值:w+absNum);)))注意⑴條件表達式通常是關(guān)系表達式或邏輯表達式,可以直接為true或false。例如:If(true)表示條件為真If(false)表示條件為假(2)大括號,if語句的功能是根據(jù)條件是否成立來選擇是否執(zhí)行大括號〃{「中包含的語句。⑶在單分支if結(jié)構(gòu)的條件之后可以直接使用分號'了,表示當(dāng)條件為"真〃時執(zhí)行空語句。例如:lf(a>l);Console.WriteLine(z/hello//);上述示例中,無論變量a為何值,字符串〃hello〃都將輸出至控制臺。4.2.2雙分支if結(jié)構(gòu)單分支if結(jié)構(gòu)只針對條件表達式為〃真〃時給出相應(yīng)的處理,但對于條件表達式為〃假〃時沒有進行任何的處理,若需要對條件表達式為〃真〃和〃假〃執(zhí)行不同的處理,則可以雙分支if結(jié)構(gòu)。雙分支if結(jié)構(gòu)也稱為if-else結(jié)構(gòu),用于根據(jù)條件判斷的結(jié)構(gòu)執(zhí)行不同的操作。語法:If(條件表達式)(語句塊1}else{語句塊2)當(dāng)條件表達式為真時,執(zhí)行語句塊1:當(dāng)條件表達式為假時,執(zhí)行語句塊2.若雙分支if結(jié)構(gòu)之后還存在其他語句,則繼續(xù)執(zhí)行。在程序中進行數(shù)據(jù)處理時,經(jīng)常需要獲取兩個數(shù)字之間的最大值。在求最大值時,存在兩種可能,若第一個數(shù)字大于第二個數(shù)字,則最大值為第一個數(shù)字,否則,最大值為第二個數(shù)字,可以使用雙分支if結(jié)構(gòu)實現(xiàn)。classProgram{staticvoidMain(string[]args)(inta,b,max;Console.WriteLine(“請輸入兩個整數(shù):");a=int.Parse(Console.ReadLine());b=int.Parse(Console.ReadLine());if(a>=b)(max=a;}else{max=b;)Console.WriteLine("最大值:"+max);))多重條件結(jié)構(gòu)當(dāng)ー個問題存在多種可能的條件時,需要針對每ー種條件分別進行處理,例如:商品促銷打折,購物達1000元,則享受8折優(yōu)惠;購物達800元,則享受9折優(yōu)惠,類似這樣的情況在現(xiàn)實生活中還有很多,遇到這些情況時,若使用簡單的條件結(jié)構(gòu)已無法滿足要求,可使用多重條件結(jié)構(gòu)解決此類問題。在C#語言中,多重條件結(jié)構(gòu)分為多重if結(jié)構(gòu)、嵌套if結(jié)構(gòu)及switch結(jié)構(gòu)三種結(jié)構(gòu)。多重if結(jié)構(gòu)多重if結(jié)構(gòu)是在if-else結(jié)構(gòu)的else語句中包含另外一個if-else結(jié)構(gòu),并且將其后的if關(guān)鍵字直接放置于前ー個else之后,是依次重疊的if-else語句。語法:If(條件表達式1){語句塊1}elseif(表達式2){語句塊2}elseif(表達式3){語句塊3}else{語句塊四計算條件表達式1,若結(jié)果為真,則執(zhí)行語句塊!,否則,計算條件表達式2,若結(jié)果為真,則執(zhí)行語句塊2,否則,計算條件表達式3,若結(jié)果為真,則執(zhí)行語句塊3;否則執(zhí)行語句塊4,對于一次條件判斷,只能選擇ー個分支執(zhí)行,不能同時執(zhí)行。在程序設(shè)計過程中,經(jīng)常需要比較兩個數(shù)之間的關(guān)系,兩個數(shù)之間的關(guān)系存在三種,大于、等于及小于,三種關(guān)系至少需要判斷兩次,因此可以使用多重條件結(jié)構(gòu)實現(xiàn)。示例:classProgram{staticvoidMain(string[]args){inta,b;Console.WriteLine(“請輸入a的值”);a=int.Parse(Console.ReadLine());Console.WriteLine(“請輸入b的值");b=int.Parse(Console.ReadLine());if(a>b)(Console.WriteLine(z/a大于b");Console.WriteLineC'a<[、于b");}else{Console.WriteLlne(wa等于b");)嵌套if結(jié)構(gòu)在if-else結(jié)構(gòu)的if語句屮包含ー個或多個if語句形成的多重條件結(jié)構(gòu)稱為嵌套if結(jié)構(gòu),在嵌套語句中,只有在外層條件成立的情況下,オ會執(zhí)行內(nèi)層的條件語句。語法:if(表達式1){if(表達式2){if(表達式3){語句塊4;}else{語句塊3;}}else{語句塊2;}else{語句塊1;}計算表達式1,若結(jié)果為真,則執(zhí)行語句塊!,否則計算表達式2,若結(jié)果為真,則執(zhí)行語句塊2,否則,計算表達式3,若結(jié)果為真,則執(zhí)行語句塊3,否則,計算表達式4,同樣,對于一次條件判斷,只能選擇ー個分支執(zhí)行,不嫩同時執(zhí)行。示例:classProgram{staticvoidMain(string[]args){intprice;Console.WriteLine(“請輸入本次購物金額:つ;price=int.Parse(Console.ReadLine());doublesum=0;if(price>=500){if(price>=800){if(price>=1000){sum=price*0.85;}else{sum=price*0.9;)}else{sum=price*0.95;}}else{sum=price;)Console.WriteLine(“應(yīng)付款金額:"+sum.ToString("F2"));))第四章本章總結(jié)在C#語言中,基本的條件結(jié)構(gòu)分為單分支if和雙分支if兩種結(jié)構(gòu)。單分支if結(jié)構(gòu)是最基本的條件結(jié)構(gòu)之一,它根據(jù)指定條件是否成立來決定是否執(zhí)行特定代碼。雙分支if結(jié)構(gòu)也稱為if-else結(jié)構(gòu),用于根據(jù)條件判斷的結(jié)果執(zhí)行不同操作。在if結(jié)構(gòu)語句中,包含ー個或多個if語句,稱為嵌套if語句。在C#語言中,多重條件結(jié)構(gòu)分為多重if結(jié)構(gòu)、嵌套if結(jié)構(gòu)及switch結(jié)構(gòu)三種結(jié)構(gòu)。多重if結(jié)構(gòu)是在if-else結(jié)構(gòu)的else語句中包含另外一個if-else結(jié)構(gòu),并且將其后的if關(guān)鍵字直接放置于前ー個else之后,是依次重疊的if-else語句。在if-else結(jié)構(gòu)中if語句中包含ー個或多個if語句形成的多重條件結(jié)構(gòu)稱為嵌套if結(jié)構(gòu),在嵌套語句中,只有在外層條件成立的情況下,オ會執(zhí)行內(nèi)層的條件語句。第五章Switch條件結(jié)構(gòu)C#語言中的等值判斷通過對if語句的學(xué)習(xí),可以實現(xiàn)功能更為復(fù)雜的應(yīng)用程序,例如,模擬簡單得計算器示例classProgram(staticvoidMain(string[]args)(intnumlznum2;stringop;Console.WriteLine(“請輸入兩個操作數(shù):つ;numl=int.Parse(Console.ReadLine());num2=int.Parse(Console.ReadLine());Console.WriteLine(“請輸入運算符:");op=Console.ReadLine();if(op=ゴ+"){Console.WriteLine(/z{0}+{l}={2}"numl,num2znuml+num2);}elseif(op==w-"){Console.WriteLine(//{0}-{l}={2}"numl,num2,numl-num2);}elseif(op=="*"){Console.WriteLine(/z{0}*{l}={2}"numl,num2,numl*num2);}elseif(op==7w){Console.WriteLine('/{0}/{l}={2}",numl,num2/numl/num2);}else{Console.WriteLine("運算符輸入錯誤!”);)))雖然通過if語句解決了該問題,但程序結(jié)構(gòu)冗長,if語句使用的條件表達式為等值判斷,對此,C#語言中提供了另ー種多重條件結(jié)構(gòu)ー—switch結(jié)構(gòu),可以方便的解決等值判斷問題。switch結(jié)構(gòu)的概述switch結(jié)構(gòu)又稱為多路分支條件語句,用于處理多重條件選擇結(jié)構(gòu),可以簡化程序的結(jié)構(gòu),通過判斷表達式的值與常量列表中的值是否相匹配來選擇相關(guān)聯(lián)的執(zhí)行語句。語法:switch(表達式)(case常量1;語句塊1;break;case吊量2;語句塊2;break;default:語句塊n;break;}上述語法中,switch>case>break和default均為關(guān)鍵字。(l)switch:表示“開關(guān)”,“開關(guān)”即switch關(guān)鍵字之后表達式的值,其類型可以是char、im和string。(2)case:表示“情況”,case之后必須是一個常量表達式,其類型同樣可以是charJnt和stringocase快可以存在多個,且可以改變相互之間的順序,但每個case之后,常量表達式的值不能相同。(3)dafaule:表示“默認”,用于處理switch結(jié)構(gòu)的非法操作,可以省略。當(dāng)表達式的值與任何ー個case之后常量表達式的值均不匹配時,執(zhí)行default語句。(4)break:表示“停止”,即跳出當(dāng)前switch結(jié)構(gòu),不再繼續(xù)執(zhí)行switch結(jié)構(gòu)中剩余部分。switch結(jié)構(gòu)的執(zhí)行過程:⑴計算switch關(guān)鍵字之后表達式的值。(2)將表達式的值依次與每ー個case之后的常量進行比較,若存在匹配項,則執(zhí)行對應(yīng)case之后的語句塊,并執(zhí)行break語句,結(jié)束switch結(jié)構(gòu)的執(zhí)行。⑶若表達式的值與所有case之后的常量都不匹配,則檢查是否存在default?若存在,則執(zhí)行default之后的語句,并執(zhí)行break語句,結(jié)束switch結(jié)構(gòu)的執(zhí)行,若不存在,則直接結(jié)束switch結(jié)構(gòu)的執(zhí)行。示例:classProgram{staticvoidMain(string[]args)(intnumlznum2;stringop;Console.WriteLine(“請輸入兩個操作數(shù):");numl=int.Parse(Console.ReadLine());num2=int.Parse(Console.ReadLine());Console.WriteLine(“請輸入運算符:");op=Console.ReadLine();switch(op)(case"+";(Console.WriteLine("{0}+{l}={2}",numl,num2〃numl+num2);}break;case"-";Console.WriteLine(//{0}-{l}={2F,numl/num27/numl+num2);)break;case"*";(Console.WriteLine(z/{0}*{l}={2}"numl/num2//numl+num2);)break;case"/";(Console.WriteLine(z/{0}/{l}={2}"numl,num2?numl+num2);)break;default;(Console.WriteLine("運算符輸入錯誤!");)注意:(l)break語句。break語句用于結(jié)束switch結(jié)構(gòu)的執(zhí)行,在C#語言中,要求每ー個case語句和default語句中都必須包含break語句,否則將出現(xiàn)語法錯誤。存在特殊情況,當(dāng)兩個case語句之間沒有任何其他語句時,前ー個case語句中的break語句可以省略。(2)default語句。當(dāng)表達式的值與任何ー個case之后常量表達式的值都不匹配時,則執(zhí)行default語句。可以調(diào)整case語句與default語句之間的順序,不會對結(jié)構(gòu)產(chǎn)生影響。default語句可以省略,省略時,若不存在匹配項,則不執(zhí)行任何代碼,直接結(jié)束switch結(jié)構(gòu)的執(zhí)行。switch結(jié)構(gòu)與多重if結(jié)構(gòu)的區(qū)別結(jié)合switch結(jié)構(gòu)與多重if結(jié)構(gòu)的工作原理,不難發(fā)現(xiàn),兩者的運行過程非常相似,均為在前一個條件不成立的情況下開始下一次條件的判斷。如果某個條件成立,將執(zhí)行該條件對應(yīng)的所有語句,執(zhí)行完畢后,將不再測試其他的條件,直接結(jié)束。但switch結(jié)構(gòu)與多重if結(jié)構(gòu)的使用場合存在差異,switch結(jié)構(gòu)僅適用于整型、字符型及字符串類型的等值判斷的情況,存在一定的局限性,而多重if結(jié)構(gòu)在判斷條件時通用性更強,主要運用與條件判斷為區(qū)間的情況。當(dāng)面對多重條件判斷的問題時,應(yīng)首先考慮使用switch結(jié)構(gòu)實現(xiàn),因為switch結(jié)構(gòu)實現(xiàn)多路分支,程序結(jié)構(gòu)更加清晰,可以提高程序的可讀性,若不能滿足switch結(jié)構(gòu)的適用條件,則在考慮使用多重if結(jié)構(gòu)實現(xiàn)。例如:顯示學(xué)生成績等級。⑴成績高于90,則輸出“A”。⑵成績介于80~89之間,則輸出“B”。(3)成績介于70~79之間,則輸出“C”.⑷成績介于60~69之間,則輸出“D”。⑸成績低于60,則輸出“E”。由于學(xué)生成績判斷屬于區(qū)間判斷,則使用if結(jié)構(gòu)更為合適。If-else示例classProgram(staticvoidMain(string[]args)intscore;Console.WriteLine(“請輸入學(xué)生成績:り;score=int.Parse(Console.ReadLine());if(score>=90){Console.WriteLine('W);}elseif(score>=80){Console.WriteLine(//B//);}elseif(score>=70){Console.WriteLine(MCw);}elseif(score>=60){Console.WriteLine(/zD/z);}else{Console.WriteLine(z/Ew);)}}再如:公司發(fā)年終獎,根據(jù)公司員エ的職位不同,將金數(shù)也不一樣,具體的規(guī)定如下。(1)A類,年終獎按年收入的30%提成。(2)B類,年終獎按年收入I的25%提成。(3)C類,年終獎按年收入的20%提成。(4)D類,年終獎按年收入的15%提成。要求輸入年收入及員エ類型,計算對應(yīng)的年終獎。由于員エ類型的判斷屬于字符串類型的等值判斷,則使用switch結(jié)構(gòu)更為合適。switch示例classPargrom{staticvoidMain(string[]args)(doublemoney,bonus=0;stringlevel;Console.WriteLine(“請輸入員エ的年收入:");money=double.Parse(Console.ReadLine());Console.WriteLine(“請輸入員エ的等級:つ;level=Console.ReadLine();switch(level)(case*':bonus=money*0.3;break;case"B":bonus=money*0.25;break;case"C":bonus=money*0.2;break;case"D”:bonus=money*0.15;break;}Console.WriteLine("員エ的年終獎:"+bonus);))第五章本章總結(jié)switch語句又稱為多路分支條件語句,通過判斷表達式的值與整數(shù)或字符常量列表中的值是否相匹配來選擇相關(guān)聯(lián)的執(zhí)行語句。switch結(jié)構(gòu)中存在switch>case、break和default關(guān)鍵字。Switch關(guān)鍵字之后表達式的值,其類型可以是char、int和stringocase之后必須是一個常量表達式,其類型同樣可以是char、int和string。case塊可以存在多個,且可以改變相互之間的順序,但每個case之后常量表達式的值不能相同。當(dāng)表達式的值與任何ー個case之后常量表達式的值都不匹配時,執(zhí)行default語句,可以省略。break用于跳出當(dāng)前switch結(jié)構(gòu),不在繼續(xù)執(zhí)行switch結(jié)構(gòu)中剩余部分。Switch結(jié)構(gòu)與多重if結(jié)構(gòu)都可以實現(xiàn)多重條件判斷,但switch結(jié)構(gòu)僅適用于等值判斷情況,多重if結(jié)構(gòu)更適合于區(qū)間判斷情況。第六章while循環(huán)語句6.1循環(huán)在進行軟件編程時,經(jīng)常會執(zhí)行重復(fù)的操作,例如,使用順序流程編寫C#語句程序,實現(xiàn)打印5行“HelloC#"。示例classProgram(staticvoidMain(string[]args)(Console.WriteLine(/zHelloC#!");Console.WriteLine(/zHelloC#!");Console.WriteLine(z/HelloC#!");Console.WriteLine("HelloC#!");Console.WriteLine(/zHelloC#!");)}以此類推,若要打印100行“HelloC#!”使用上述方法實現(xiàn)則需要重復(fù)編寫100次wConsole.WriteLine(z/HelloC#!")”代碼,這樣的解決方式顯然并不可取,為了簡化程序代碼,在程序中引入了“循環(huán)”的概論,用于解決重復(fù)執(zhí)行某些操作的問題,使用循環(huán)結(jié)構(gòu)改寫上述代碼while示例classProgram(staticvoidMain(string[]args)(inti=l;while(i<=5)(Console.WriteLine(/zHelloC#!");i++;))無論是在生活中還是在C#語言中,所有的循環(huán)結(jié)構(gòu)都存在以下兩個特點:循環(huán)不是無休止進行的,滿足一定條件時,循環(huán)オ會繼續(xù),稱之為“循環(huán)條件”循環(huán)條件不滿足時,循環(huán)將會終止。循環(huán)是反復(fù)執(zhí)行相同類型的一系列操作,稱為“循環(huán)操作”或“循環(huán)體”。C#語言中的循環(huán)結(jié)構(gòu)有四種實現(xiàn)方式:while循環(huán)、do-while循環(huán)、for循環(huán)及foreach循環(huán)。while循環(huán)while循環(huán)是C#語言中比較常見的循環(huán)結(jié)構(gòu)之一,先判斷條件,在執(zhí)行循環(huán)操作語句。語法while(循環(huán)條件){循環(huán)操作;}其中:(a)while是C#語言中的關(guān)鍵字;(b)循環(huán)條件通常是具有bool類型值的關(guān)系表達式或邏輯表達式。(c)循環(huán)操作可以是一條簡單語句,也可以是由多條語句構(gòu)成的復(fù)合結(jié)構(gòu),當(dāng)僅存在一條語句時,括號可以省略。先計算循環(huán)條件的結(jié)果,若為真,則循環(huán)條件成立,執(zhí)行循環(huán)操作,重復(fù)上述過程,知道循環(huán)條件的結(jié)果為假時退出while循環(huán),轉(zhuǎn)而執(zhí)行while循環(huán)之后的語句。注意while循環(huán)的次數(shù)通常不能事先確定,需要根據(jù)循環(huán)條件來判定,若循環(huán)條件開始即為假,則循環(huán)體一次也不執(zhí)行。編寫C#語言程序,計算1?100之間所有的自然數(shù)之和。此為累加求和的問題,第一次累加1,第二次累加2……第100次累加100,每次累加的操作,可以視為ー個循環(huán),需要循環(huán)100次。定義int類型變量sum,用于存儲自然數(shù)的累價值,設(shè)置初始值為〇,定義int類型變量count作為循環(huán)控制變量設(shè)置初始值為1,要將1、2、3……100累加至sum中,只需將count反復(fù)累加至sum中,且每次累加完畢,將count自增1.通過分析可得:循環(huán)條件:count<=100循環(huán)操作:sum+=count;count++;classProgram{saticvoidMain(string[]args)(intcount=l,sum=0;while(count<=100)(sum+=count;count++;)Console.WriteLine(z/l~100自然數(shù)之和:"+sum);}}經(jīng)驗:使用while循環(huán)結(jié)構(gòu)解決問題的常用步驟⑴分析循環(huán)條件和循環(huán)體。(2)套用while循環(huán)體。⑶查詢循環(huán)是否能夠正常退出。⑷編寫循環(huán)結(jié)構(gòu)的代碼出錯時,仔細分析循環(huán)初始條件、循環(huán)體哦啊見以及循環(huán)體執(zhí)行過程,即可發(fā)現(xiàn)問題,解決問題。do-while循環(huán)與while循環(huán)不同,do-while循環(huán)先執(zhí)行循環(huán)操作語句,再判斷循環(huán)條件,即使循環(huán)條件不成立,循環(huán)體也至少執(zhí)行一次。語法:do{循環(huán)操作:}while(循環(huán)條件);其中:(l)do>while是C#語言中的關(guān)鍵字。(2)while(循環(huán)條件)之后的分號ケ”不能省略。⑶循環(huán)條件通常是具有bool類型值的關(guān)系表達式或邏輯表達式。⑷循環(huán)操作可以是一條簡單語句,也可以是由多條語句構(gòu)成的復(fù)合語句,當(dāng)僅存在一條語句時,括號可以省略。do-while循環(huán)的執(zhí)行過程:先執(zhí)行ー次循環(huán)操作,在計算循環(huán)條件的結(jié)果,若為真,則循環(huán)條件成立,執(zhí)行循環(huán)操作,重復(fù)上述過程,知道循環(huán)條件的結(jié)果為假時退出do-while循環(huán),轉(zhuǎn)而執(zhí)行do-while循環(huán)之后的語句。編寫C#語言程序,實現(xiàn)猜數(shù)字游戲。示例:classProgram{staticvoidMain(string[]args)(intrandom=newRandom().Next(100);〃產(chǎn)生一個〇?99之間的隨機數(shù)intguess;do{Console.WriteLine("請輸入所猜數(shù)字:");guess=int.Parse(Console.ReadLine());if(guess>readom){Console.WriteLine("太大”);}if(guess<random){Console.WriteLine("太小”);}while(random!=guess);Console.WriteLine("恭喜你猜中了!游戲終止");)}while循環(huán)和do-while循環(huán)的區(qū)別While循環(huán)和do-while循環(huán)在語法、執(zhí)行過程、使用場合拄相互之間存在一定區(qū)別,while循環(huán)與do-while循環(huán)的區(qū)別while循環(huán)do-while循環(huán)相同點實現(xiàn)循環(huán)結(jié)構(gòu)適用于循環(huán)次數(shù)未知的情況不同點while(循環(huán)條件)(循環(huán)操作;)do循環(huán)操作;}while(循環(huán)條件);先執(zhí)行后循環(huán)先執(zhí)行后判斷ー開始循環(huán)條件為假,循環(huán)一次也不執(zhí)行ー開始循環(huán)條件為假,循環(huán)至少執(zhí)行一次第六章本章總結(jié)循環(huán)結(jié)構(gòu)是指重復(fù)循環(huán)操作,知道循環(huán)條件不成立為止。C#語言中的循環(huán)結(jié)構(gòu)存在四種實現(xiàn)方式:while循環(huán)結(jié)構(gòu)、do-while循環(huán)結(jié)構(gòu)、for循環(huán)結(jié)構(gòu)和foreach循環(huán)結(jié)構(gòu)。while循環(huán)是先判斷循環(huán)條件再執(zhí)行循環(huán)操作,若一開始條件為假,則循環(huán)ー次也不執(zhí)行。do-while循環(huán)是先執(zhí)行循環(huán)操作再判斷執(zhí)行條件,若一開始循環(huán)條件為假,則循環(huán)至少執(zhí)行ー次。使用循環(huán)結(jié)構(gòu)解決問題的常見步驟:分析循環(huán)條件和循環(huán)體、套用循環(huán)結(jié)構(gòu)語法、查詢循環(huán)是否能夠正常退出。死循環(huán)是指一直執(zhí)行,不能終止的循環(huán),在編寫程序時應(yīng)避免出現(xiàn)死循環(huán)。while循環(huán)和do-while循環(huán)語句之間存在一定的區(qū)別,主要體現(xiàn)在語法結(jié)構(gòu)、執(zhí)行順序的等方面。第七章for循環(huán)語句for循環(huán)for循環(huán)概述classProgram(staticvoidMain(string[]args)(inti=l;while(i<=5)(Console.WriteLine(z/HelloC#!");i++;}上述代碼中,可以發(fā)現(xiàn),循環(huán)次數(shù)由以下三個要素決定⑴初始部分(i=l)(2)循環(huán)條件(i<=5)⑶迭代部分(i++)這些要素可以使用更簡單的for循環(huán)實現(xiàn),for循環(huán)是C#語言中的另一種循環(huán)結(jié)構(gòu)的實現(xiàn),在很多情況下,使用for循環(huán)更加簡潔清晰。for(inti=l;i<=5;i++){Console.WriteLine(/zHelloC#!”);)for循環(huán)是循環(huán)結(jié)構(gòu)中使用最廣泛的一種循環(huán)控制語句,特別適用于已知循環(huán)次數(shù)的情況。語法:for(表達式1;表達式2;表達式3;)(循環(huán)操作;)語法說明:⑴表達式1稱為初值表達式,用于為循環(huán)控制變量賦初始值,通常為賦值表達式。(2)表達式2稱為條件表達式,用于判斷循環(huán)的條件是否成立,當(dāng)循環(huán)控制變量滿足表達式2時,循環(huán)正常執(zhí)行,通常為關(guān)系表達式或邏輯表達式。⑶表達式3稱為

溫馨提示

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

最新文檔

評論

0/150

提交評論