




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上一、C#語言語法基礎(chǔ)C#中的關(guān)鍵字關(guān)鍵字,是一些被C#規(guī)定了用途的重要單詞。在Visual Studio的開發(fā)環(huán)境中,關(guān)鍵字被標(biāo)識(shí)為藍(lán)色,下圖代碼中,用紅方框圈出的單詞就是關(guān)鍵字。關(guān)鍵字 class ,這個(gè)關(guān)鍵字的用途是聲明類。比如上面例子中,類名叫做Program。關(guān)鍵字 namespace ,這個(gè)關(guān)鍵字的用途是聲明“命名空間”。比如上面例子中,命名空間叫做MyApp1。關(guān)鍵字 using ,這個(gè)關(guān)鍵字的用途是導(dǎo)入命名空間。比如這句:using System.Text; 作用是
2、導(dǎo)入System.Text命名空間中的類。關(guān)鍵字 static (靜態(tài)的)、 void (無返回值)、 string (字符串類型)。常常在Main()方法的聲明中看到:static void Main(string args)Main() 方法是 C# 中的特殊方法,是程序的入口,就是說,如果沒有 Main ()方法,程序就無法啟動(dòng)。注意:你會(huì)發(fā)現(xiàn),所有關(guān)鍵字都是由小寫字母組成的,C#語言中,大小寫是嚴(yán)格區(qū)分的。C#的注釋注釋,是代碼中的一些“說明性文字”。注釋本身不會(huì)參與程序的編譯和運(yùn)行,僅僅供程序員閱讀。注釋
3、分為:單行注釋、多行注釋、文檔注釋。單行注釋的符號(hào)是2條斜線(請(qǐng)注意斜線的方向),2條斜線右側(cè)的內(nèi)容就是注釋,左側(cè)的代碼不會(huì)受影響。 多行注釋以“/*”開始,以“*/”結(jié)束,之間的內(nèi)容就是注釋,可以包含多行。 文檔注釋寫在類、方法或?qū)傩裕ㄒ院髸?huì)學(xué)到)的前面,它的符號(hào)是3條斜線“/”。 注意:代碼中的Console.WriteLine()與之前的Console.Write()不同,后者不換行,而前者會(huì)在打印之后換行。C#的常量常量,顧名思義,就是“不會(huì)改變的量”。我們平時(shí)書寫的數(shù)字(比如12.85)、字符(比如'F')、字符串(比如"謝謝&
4、quot;),它們都屬于“字面常量”。有一些常量既重要又容易出錯(cuò),比如圓周率的值為3.,所以,我們常常會(huì)使用自定義常量。請(qǐng)看下面的代碼: 需要解釋2個(gè)關(guān)鍵字: const 關(guān)鍵字,表明PI是一個(gè)常量; double 關(guān)鍵字,表明PI的類型為“雙精度浮點(diǎn)型”(一種精度很高的數(shù)字類型)。你會(huì)發(fā)現(xiàn),這段代碼中使用了2次圓周率(周長、面積),但是因?yàn)槭褂米远x常量,所以字面常量3.只書寫了一次。這樣做避免了重復(fù)書寫導(dǎo)致的錯(cuò)誤。運(yùn)行效果: 還有一點(diǎn)要特別注意:常量在聲明時(shí)賦值,之后是不能修改的。C#的變量上一節(jié)我們學(xué)習(xí)了常量,但編程中使用最多的
5、是變量,這一節(jié)我們學(xué)習(xí)變量。變量能夠存儲(chǔ)數(shù)據(jù),并且與常量不同,變量存儲(chǔ)的數(shù)據(jù)可以修改。比如今年18歲,明年可以變成19歲。使用變量分為3步:聲明、賦值、使用。聲明變量的語法:數(shù)據(jù)類型 變量名;給變量賦值的語法:變量名=值;請(qǐng)閱讀下面的代碼:運(yùn)行結(jié)果如此:變量的聲明和賦值可以同時(shí)完成,上面代碼Main()方法中的前兩行可以改寫為:int age=18;/聲明并賦值算法交換上次我們學(xué)習(xí)了變量。這次我們將了解,怎樣將2個(gè)變量的值交換。交換2個(gè)變量的值,就如同交換兩只杯子中的飲料:一杯滿滿的牛奶和一杯滿滿的咖啡,怎樣才能互換呢?變量的交換也如此。兩個(gè)變量的交換也需要一只“空杯子”,就是中間變
6、量:string a="振剛"/第一個(gè)變量string b="文峰"/第二個(gè)變量string temp;/中間變量/第一步:將變量a賦值給中間變量temp=a;/如同牛奶倒入空杯/第二步:將變量b賦值給變量aa=b;/如同咖啡倒入牛奶杯/第三步:將中間變量賦值給變量bb=temp;/如同空杯中的牛奶倒入咖啡杯/此時(shí)交換完成,變量a存儲(chǔ)了“文峰”,b存儲(chǔ)了“振剛”上面三個(gè)步驟就能交換2個(gè)變量,你學(xué)會(huì)了嗎?這種解決實(shí)際問題的步驟就叫做“算法”,交換就是最常用的一種算法。任務(wù)聲明2個(gè)變量保存男孩女孩名字,但是弄反了,編寫代碼交換回來:1. 在第
7、60;14 行輸入temp = boy;2. 在第 15 行輸入boy = girl;3. 在第 16 行輸入girl = temp;運(yùn)行結(jié)果:編程練習(xí)假設(shè)a、b兩個(gè)變量交換值,需要先聲明一個(gè)中間變量temp,用temp臨時(shí)存儲(chǔ)其中變量a的值,再將變量b的值賦值給a,最后將temp賦值給b。任務(wù)這段程序中有 2 個(gè)變量,分別存儲(chǔ)了“今天的午飯”和“明天的午飯”。現(xiàn)在想要“今天吃小雞燉蘑菇,明天吃魚香肉絲”,請(qǐng)?jiān)诖a中補(bǔ)充變量交換的代碼。?不會(huì)了怎么辦
8、60; /交換today和tomorrow的值 string temp;/中間變量 temp = today;/今天的午飯賦值給temp today = tomorrow;/明天的午飯賦值給今天 tomorrow = temp;/temp賦值給明天using System
9、;using System.Collections.Generic;using System.Text;namespace Test class Program static void Main(string args) string today;/今天的午飯 string tomorrow;/明天的午飯 today = "魚香肉絲" tomorrow = "小雞燉蘑菇" string temp;/中間變量 temp = today;/今天的午飯賦值給temp today = tomorrow;/明天的午飯賦值給今天 tomorrow = temp;/請(qǐng)
10、在這里補(bǔ)充代碼,實(shí)現(xiàn)變量today和tomorrow的交換 /打印 Console.WriteLine("我今天吃0,明天吃1。",today,tomorrow); C#的數(shù)據(jù)類型我們知道聲明變量需要寫出數(shù)據(jù)類型,我們今天要學(xué)習(xí)的是最常用的幾種類型。字符類型 char ,存儲(chǔ)用 '' (單引號(hào))括起來的一個(gè)字符,例如:char sex='男'/存儲(chǔ)性別字符串類型 string ,存儲(chǔ)用“”(雙引號(hào))括起來的一串字符,例如:string address="北京市宣武區(qū)牛街北口"/存儲(chǔ)地
11、址整數(shù)類型 int ,存儲(chǔ)整數(shù),例如:int age=23;/存儲(chǔ)年齡雙精度浮點(diǎn)型 double ,存儲(chǔ)小數(shù),例如:double salary=7991.63;/存儲(chǔ)工資以上四種是最常用的數(shù)據(jù)類型,其他常用類型,我們會(huì)隨著課程深入慢慢介紹。需要注意的是,某種類型的變量,只能存儲(chǔ)這種類型的數(shù)據(jù),否則,可能會(huì)出錯(cuò)。C#的類型轉(zhuǎn)換上一節(jié)我們學(xué)習(xí)了4種數(shù)據(jù)類型,也提到每種類型的變量只能存這種類型的數(shù)據(jù)。可是,有時(shí)候真的需要把不同類型的值放在一起運(yùn)算,比如這種:3.5+8 這時(shí)候怎么辦呢?有下面2種情況:自動(dòng)類型轉(zhuǎn)換:2種不同類型的數(shù)據(jù)運(yùn)算,低精度類型會(huì)自動(dòng)轉(zhuǎn)換為
12、較高精度的類型。以3.5+8為例,顯然數(shù)字8的精度較低(int),而3.5的精度較高(double),所以,8會(huì)自動(dòng)轉(zhuǎn)換為double型,即轉(zhuǎn)換為3.5+8.0進(jìn)行運(yùn)算,結(jié)果為11.5。請(qǐng)看這個(gè)例子:double d=2; 2的精度顯然低于變量d的精度,所以2會(huì)自動(dòng)轉(zhuǎn)換為2.0然后賦值給d。再看這個(gè)例子:int i=3.0;變量i的精度低于3.0,但是由于i已經(jīng)聲明為int型的變量,變量的值可以變,但變量的類型可不能變來變?nèi)サ模赃@條命令會(huì)出錯(cuò)的。強(qiáng)制類型轉(zhuǎn)換:無法自動(dòng)轉(zhuǎn)換為我們需要的類型,可以用強(qiáng)制類型轉(zhuǎn)換,比如上例可以這樣完成:int i=(int)3.0;
13、數(shù)字前面的(int)表示轉(zhuǎn)換的目標(biāo)類型為int,3.0會(huì)被強(qiáng)制轉(zhuǎn)換為3。需要注意, double 型強(qiáng)制轉(zhuǎn)換為int型將失去小數(shù)部分,比如(int)2.8,我們得到的將是2。C#標(biāo)識(shí)符的命名規(guī)則程序中的變量名、常量名、類名、方法名,都叫做標(biāo)識(shí)符。C#有一套標(biāo)識(shí)符的命名規(guī)則,如果命名時(shí)不遵守規(guī)則,就會(huì)出錯(cuò)。這套規(guī)則簡單說有下面三條:標(biāo)識(shí)符只能由英文字母、數(shù)字和下劃線組成,不能包含空格和其他字符。錯(cuò)誤的標(biāo)識(shí)符聲明:string $user; /錯(cuò)在使用了其他字符變量名不能用數(shù)字開頭。錯(cuò)誤的標(biāo)識(shí)符聲明:double 6h;/錯(cuò)在用數(shù)字開頭不能用關(guān)鍵字當(dāng)變量名。
14、錯(cuò)誤的標(biāo)識(shí)符聲明:char static ;/錯(cuò)在用關(guān)鍵字static做變量名C#的算術(shù)運(yùn)算符(一)計(jì)算機(jī)程序,當(dāng)然少不了“計(jì)算”,要計(jì)算就必須了解運(yùn)算符。今天,我們先學(xué)習(xí)算術(shù)運(yùn)算符中的加、減、乘、除。加:+ 。加號(hào)有2個(gè)用途:當(dāng)用加號(hào)連接兩個(gè)數(shù)字時(shí),會(huì)計(jì)算出這兩個(gè)數(shù)字的和。比如:Console.WriteLine(9+2.2);/輸出11.2另一種情況,當(dāng)加號(hào)兩邊包含字符串的時(shí)候,會(huì)把兩邊的表達(dá)式連接成新的字符串。比如:Console.WriteLine(9+"2.2");/輸出92.2,因?yàn)?quot;2.2"是字符串,所以9也被轉(zhuǎn)換為&q
15、uot;9",+起的作用是連接字符串減:- 。減號(hào)的作用就是減法。比如:Console.WriteLine(15-23);/輸出-8乘:* 。乘號(hào)的作用是求2數(shù)的乘積。比如:Console.WriteLine(0.8*3);/輸出2.4除:/ 。除號(hào)的作用是求2數(shù)相除的商。比如:Console.WriteLine(2/0.5);/輸出4.0但是,2個(gè)整數(shù)相除,結(jié)果僅保留整數(shù)部分,小數(shù)部分會(huì)被舍去。Console.WriteLine(5/10);/輸出0 C#的算術(shù)運(yùn)算符(二)這一節(jié)我們學(xué)習(xí)取余運(yùn)算符。C#中的取余運(yùn)算符就是%。上一節(jié)學(xué)習(xí)的除號(hào),
16、作用是求2個(gè)數(shù)字相除的商,而取余運(yùn)算符%的作用是求兩個(gè)數(shù)字相除的余數(shù)。比如:Console.WriteLine(19/5);/求19除以5的商,輸出3Console.WriteLine(19%5);/求19除以5的余數(shù),輸出4(商3余4)編程中,%常常用來檢查一個(gè)數(shù)字是否能被另一個(gè)數(shù)字整除。比如下面的代碼片段:int number = 29;Console.WriteLine(number%2);/求number除以2的余數(shù)如果輸出0,表示沒有余數(shù),即number能夠被2整除(是偶數(shù));如果輸出1,表示有余數(shù),即number不能被2整除(是奇數(shù))。C#的算術(shù)運(yùn)算符(三)這一節(jié)學(xué)習(xí)兩個(gè)特別的運(yùn)算
17、符+和-。+,叫做自加運(yùn)算符。比如你今年18歲,明年長了一歲,用代碼寫出來是這樣:int age=18;/今年18歲age=age+1;/明年,在今年的年齡上加1歲也可以寫成這樣:int age=18;/今年18歲age+;/明年,在今年的年齡上加1歲age+;與age=age+1;作用相同,都是變量的值+1。-,叫做自減運(yùn)算符。同理,你今年18歲,用了XX護(hù)膚水以后,明年變成17歲了,可以這樣寫:int age=18;/今年18歲age-;/等同于 age=age-1;另外,age+;與age-;也可以寫作+age;或-age;但請(qǐng)注意:如果與其他運(yùn)算在同一語句中,+寫在變量前面或后面,算法
18、不一樣,請(qǐng)看下例:Console.WriteLine(age+);作用等同于下面兩句:Console.WriteLine(age);/先打印age=age+1;/后自加Console.WriteLine(+age);作用等同于下面兩句:age=age+1;/先自加Console.WriteLine(age);/后打印你看,運(yùn)算順序不一樣吧,所以輸出的結(jié)果也不會(huì)相同。C#的比較運(yùn)算符比較數(shù)字大小,或者比較數(shù)字相等的運(yùn)算符是比較運(yùn)算符。C#中的比較運(yùn)算符有:注意:表示兩個(gè)值相等的“等于”是由2個(gè)“=”組成的。比較運(yùn)算的結(jié)果,都是布爾類型( bool ),bool類型我們是第一次
19、提到,它表示邏輯上的真(成立)與假(不成立)。真與假用關(guān)鍵字 true 和 false 表示。上面程序中, x>=y 不成立會(huì)返回 false , x<=y 成立,會(huì)返回 true 。運(yùn)行結(jié)果:C#的邏輯運(yùn)算符(一)邏輯運(yùn)算符用來連接多個(gè) bool 類型表達(dá)式,實(shí)現(xiàn)多個(gè)條件的復(fù)合判斷。C#中的邏輯運(yùn)算符包括:邏輯非( ! )、邏輯與( && )、邏輯或( | )。邏輯非用來對(duì)某一個(gè) bool 類型表達(dá)式取反,即“真變假”或“假變真”。請(qǐng)看下面的代碼:Console.WriteLine(1
20、 > 0);/條件表達(dá)式為true,輸出TrueConsole.WriteLine(!(1 > 0);/用邏輯非對(duì)條件表達(dá)式取反,輸出False邏輯與用來判斷 2 個(gè) bool 類型表達(dá)式是否同時(shí)為 true 。請(qǐng)看下面的代碼:int x = 5, y = 2;/同時(shí)聲明2個(gè)int型變量并賦值Console.WriteLine(x>3 && y>3);/判斷x>3和y>3是否同時(shí)為true,由于y>3為false,所以整個(gè)表達(dá)式為false只有當(dāng)&&兩邊的表達(dá)式均為 tr
21、ue 時(shí),整個(gè)表達(dá)式才為 true ;若任意一個(gè)表達(dá)式為 false ,整個(gè)表達(dá)式即為 false 。邏輯或用來判斷2個(gè) bool 類型表達(dá)式中是否有一個(gè)為 true 。請(qǐng)看下面的代碼:int x = 5, y = 2;/同時(shí)聲明2個(gè)int型變量并賦值Console.WriteLine(x>3 | y>3);/判斷x>3和y>3是否有一個(gè)為true,由于x>3為true,所以整個(gè)表達(dá)式為true只要|兩邊的表達(dá)式有一個(gè)為 true ,整
22、個(gè)表達(dá)式即為 true ;若兩邊的表達(dá)式均為 false ,整個(gè)表達(dá)式為 false 。對(duì)比一下,就是說: && 運(yùn)算符,兩邊同真才算真,一邊為假就算假; | 運(yùn)算符,一邊為真即為真,兩邊同假才是假。任務(wù)邏輯運(yùn)算符不容易吧?做道題看看自己懂了沒有。請(qǐng)?jiān)诘?#160;11-13 行的括號(hào)里填上不同的邏輯運(yùn)算符,實(shí)現(xiàn)如下的輸出效果:C#的邏輯運(yùn)算符(二)作為對(duì)上一節(jié)學(xué)習(xí)的鞏固,這一節(jié)我們通過幾個(gè)示例熟悉邏輯運(yùn)算符的應(yīng)用。第一個(gè)示例是關(guān)于邏輯與,比如小張想結(jié)婚,未來丈母娘開出的條件是:存款必須過10萬,必須有房子,
23、這兩條少一條都不行。既然2個(gè)條件都是“必須”做到,那就需要同時(shí)滿足,適合用邏輯與連接:運(yùn)行結(jié)果為:False下一個(gè)示例是關(guān)于邏輯或,比如麗麗選擇男朋友的標(biāo)準(zhǔn),要么是“工程師”,要么是“運(yùn)動(dòng)員”,二者居其一即可:運(yùn)行結(jié)果為:True C#的賦值運(yùn)算符前面,我們已經(jīng)學(xué)過一個(gè)賦值運(yùn)算符“=”,這次我們學(xué)習(xí)一下其他的賦值運(yùn)算符:加賦值“+=”:先加后賦值。請(qǐng)看下面的例子:int x=5;x += 2;/這句等同于x=x+2;執(zhí)行后,x的值為7減賦值“-=”:先減后賦值。請(qǐng)看下面的例子:int x=5;x -= 2;/這句等同于x=x-2;執(zhí)行后,x的值為3乘賦值“*=”:先乘后賦值。請(qǐng)看下面
24、的例子:int x=5;x *= 2;/這句等同于x=x*2;執(zhí)行后,x的值為10除賦值“/=”:先除后賦值。請(qǐng)看下面的例子:int x=5;x /= 2;/這句等同于x=x/2;執(zhí)行后,x的值為2取余賦值“%=”:先取余后賦值。請(qǐng)看下面的例子:int x=5;x %= 2;/這句等同于x=x%2;執(zhí)行后,x的值為1與其他運(yùn)算符從左向右計(jì)算不同,賦值運(yùn)算符從右向左計(jì)算。C#的運(yùn)算符優(yōu)先級(jí)前面我們學(xué)習(xí)了那么多運(yùn)算符,如果編程中同時(shí)使用了多個(gè)運(yùn)算符,到底哪一個(gè)會(huì)先運(yùn)算呢?這就是優(yōu)先級(jí)的問題。C#運(yùn)算符的優(yōu)先級(jí)請(qǐng)參考下面的順序:括號(hào)。學(xué)數(shù)學(xué)的時(shí)候我們就知道,要先計(jì)算括號(hào)里面的內(nèi)容。C#語言也是一樣,
25、如果有多層括號(hào),要從里向外計(jì)算。括號(hào)優(yōu)先級(jí)最高。一元運(yùn)算符。有些運(yùn)算符兩邊有2個(gè)操作數(shù),比如2+3、6%5等等,這些叫做二元運(yùn)算符。只有一個(gè)操作數(shù)的叫做一元運(yùn)算符,它們的優(yōu)先級(jí)高于二元運(yùn)算符。一元運(yùn)算符包括:+(自加) 、 -(自減) 、 !(邏輯非)。*(乘)、/(除)、%(取余)。+(加)、-(減)。>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。=(等于)、!=(不等于)。&&(邏輯與)。|(邏輯或)。賦值運(yùn)算符。包括:=、+=、-=、*=、/=、%=。另外,還需要注意一點(diǎn):優(yōu)先級(jí)相同的運(yùn)算符從左向右計(jì)算(賦值運(yùn)算符相反)。請(qǐng)看下面這段
26、代碼:bool b = 20 - (15 - 8) * 2 > 10 && (2 % 2 * 2 + 2) > 2;Console.WriteLine(b);分析:首先計(jì)算優(yōu)先級(jí)最高的括號(hào),(15-8)得到7,(2%2*2+2)則需要先計(jì)算%和*,后算+,結(jié)果是2,表達(dá)式就變成了:bool b=20-7*2>10&&2>2;接下來優(yōu)先級(jí)最高的是7*2,然后是減法,變成:bool b=6>10&&2>2;繼續(xù)計(jì)算兩個(gè)大于號(hào),得到:bool b=false&&false;最后的結(jié)果當(dāng)然是false:
27、二、條件結(jié)構(gòu)用流程圖描述程序邏輯流程圖是程序步驟的圖形化表示方法。流程圖中包括如下符號(hào):以上圖形中,流程線用來連接相鄰的兩個(gè)步驟;每一個(gè)程序都有且僅有一個(gè)開始和結(jié)束。以下流程圖描述的是,求2個(gè)浮點(diǎn)數(shù)的和,后邊是用C#實(shí)現(xiàn):判斷和分支走到岔路口,需要選擇方向。編寫程序也會(huì)遇到判斷和分支。請(qǐng)看下面的流程圖,判斷手機(jī)賬戶余額是否不足10元,如果不足給出提示:這個(gè)程序在“balance<10”這個(gè)步驟出現(xiàn)了分支,“balance<10”被稱為判斷( bool 類型),當(dāng)判斷為 true 時(shí),執(zhí)行左邊的分支,輸出提示;當(dāng)判斷為 false
28、160;時(shí),執(zhí)行右邊的分支,不輸出任何內(nèi)容。在C#中,這個(gè)結(jié)構(gòu)成為條件結(jié)構(gòu),通常用 if 關(guān)鍵字來實(shí)現(xiàn):當(dāng) if 右邊的判斷為 true 的時(shí)候,會(huì)執(zhí)行分支一;如果判斷為 false ,則不會(huì)執(zhí)行分支一。if.else條件結(jié)構(gòu)前一節(jié)我們學(xué)習(xí)了 if 條件結(jié)構(gòu)。條件結(jié)構(gòu)可以有2個(gè)分支,比如下面的流程圖,判斷一個(gè)整數(shù)是奇數(shù)還是偶數(shù):這個(gè)流程圖從C#實(shí)現(xiàn)如下,其中,條件為 true 時(shí)執(zhí)行的分支寫在 if() 后面的中;條件為 false 時(shí)執(zhí)行的分支
29、寫在 else 后面的中。這個(gè)由 if 和 else 組成的結(jié)構(gòu)是條件結(jié)構(gòu)的一種,它的基本邏輯是:當(dāng)條件為 true 時(shí),執(zhí)行分支1,否則,執(zhí)行分支2。這段程序中,變量num能夠被2整除時(shí)會(huì)執(zhí)行分支1,不能被2整除時(shí)執(zhí)行分支2。程序的運(yùn)行結(jié)果是:每一個(gè) if.else 結(jié)構(gòu)都包含 1 個(gè)條件和 2 個(gè)分支,而程序會(huì)根據(jù)條件的真與假,選擇執(zhí)行其中的某一個(gè)分支。條件必須為 bool 類型的表達(dá)式。編程練習(xí)if.else 結(jié)構(gòu)包含一個(gè)條件和兩個(gè)分支:條件是 bool 類型表達(dá)式,寫在 if 后面的圓括
30、號(hào)里;分支寫在 2 個(gè) 里。當(dāng)條件為 true 時(shí),執(zhí)行 if 后面的分支,當(dāng)條件為 false 時(shí),執(zhí)行 else 后面的分支。任務(wù)這個(gè)程序用 2 個(gè) double 類型變量,分別記錄了蘋果六手機(jī)的售價(jià)和本月的是發(fā)工資,缺少一個(gè) if.else 結(jié)構(gòu)的判斷,請(qǐng)補(bǔ)充這個(gè)條件判斷,如果本月工資夠買手機(jī)的,輸出“這月工資夠買手機(jī)!”否則輸出“這月工資不夠買手機(jī)!”?不會(huì)了怎么辦 /判斷本月工資夠不夠買手機(jī) if (salary >
31、= price) Console.WriteLine("這月工資夠買手機(jī)!"); else
32、160; Console.WriteLine("這月工資不夠買手機(jī)!"); 例如下using System;using System.Collections.Generic;using System.Text;namespace Test class Program static void Main(string args) double price = 4388;/手機(jī)的售價(jià) double salary = 4978.67;/本月實(shí)發(fā)工
33、資 if (salary >= price) Console.WriteLine("這月工資夠買手機(jī)!"); else Console.WriteLine("這月工資不夠買手機(jī)!"); 嵌套的if結(jié)構(gòu)程序開發(fā)中,往往需要先判斷一個(gè)條件是否成立,再判斷另一個(gè)條件。比如下面的例子:驗(yàn)證賬號(hào)是否為“admin”,如果不是則提示錯(cuò)誤;如果是,則驗(yàn)證密碼是否為“bj2022”:用C#實(shí)現(xiàn)如下:外層的if (userName = "admin") 會(huì)被首先判斷,如果為 false ,就會(huì)輸出“用戶名錯(cuò)
34、誤!”;如果為 true ,再判斷內(nèi)層的if (password = "bj2022")。多重if結(jié)構(gòu)如果,有多個(gè)條件,其中只有一個(gè)成立,應(yīng)該怎樣判斷呢?比如小明考試,90分以上獎(jiǎng)勵(lì)一臺(tái)手機(jī),80-89分獎(jiǎng)勵(lì)一個(gè)滑板,60-79分獎(jiǎng)勵(lì)一個(gè)燒餅,60以下沒有獎(jiǎng)勵(lì),0-100的分?jǐn)?shù)被劃分為4檔,需要做3次條件判斷。如果用上一節(jié)學(xué)習(xí)的嵌套if結(jié)構(gòu)完成,3層if的嵌套會(huì)使程序變得很復(fù)雜。本節(jié)我們使用多重 if 結(jié)構(gòu)實(shí)現(xiàn),它的基本語法為:程序運(yùn)行時(shí),將從上到下依次判斷條件,若某個(gè)條件為 true ,則執(zhí)行對(duì)應(yīng)的分支,并且停止后面條件的
35、判斷。比如下面的代碼,將輸出“獎(jiǎng)勵(lì)一個(gè)燒餅”:else與if的匹配if.else 條件結(jié)構(gòu)中,如果某個(gè)分支只包含一條命令,那么是可以省略大括號(hào)的。比如上一節(jié)的練習(xí),可以簡化為:請(qǐng)注意,如果分支中包含2條以上的命令,是不能省略的。如果 if 和 else 比較多,又省略了,怎么判斷那一個(gè) if 和哪一個(gè) else 是一對(duì)呢?請(qǐng)看下面的代碼:當(dāng)出現(xiàn)多個(gè) if 和 else ,又沒有來界定范圍時(shí),請(qǐng)參考下面2條原則:每一個(gè) else 與前面離它最近的&
36、#160;if 配對(duì)。按照這個(gè)原則,上面示例代碼的兩個(gè) else 都與第二個(gè) if 配對(duì),這顯然是不可能的,于是又有了第二個(gè)原則。多個(gè) else 都與同一個(gè) if 相近時(shí),最內(nèi)層的 else 優(yōu)先配對(duì)。這樣,第一個(gè) else 處于內(nèi)層,就與第二個(gè) if 優(yōu)先配對(duì),第二個(gè) else 只能與第一個(gè) if 配對(duì)。上面的示例代碼會(huì)輸出“C”。根據(jù)這兩個(gè)原則,上面的代碼等同于如下的規(guī)范代碼:編寫條件結(jié)構(gòu)時(shí),盡可能加上
37、 可以省掉不必要的錯(cuò)誤和麻煩。編程練習(xí)多重 if 結(jié)構(gòu)包含多個(gè)條件,每個(gè)條件對(duì)應(yīng)一個(gè)分支。運(yùn)行時(shí),從上到下依次判斷每一個(gè)條件,當(dāng)某個(gè)條件為 true ,就執(zhí)行對(duì)應(yīng)的分支,并且不再驗(yàn)證其他的條件;若所有的條件均為 false ,則執(zhí)行最后的 else 分支。任務(wù)某銀行營業(yè)部開展“儲(chǔ)蓄贈(zèng)禮”活動(dòng),存款達(dá)到或超過 元的"送一臺(tái)微波爐";存款不到 元但是達(dá)到 50000 元的"送一套茶具";存款不到 50000 元但是達(dá)到 10000 元的"送一袋大米";如果不到 10000 元?jiǎng)t"沒有禮品"。請(qǐng)補(bǔ)充代碼,用多
38、重 if 結(jié)構(gòu)實(shí)現(xiàn)上述功能。?不會(huì)了怎么辦 if (money >= ) Console.WriteLine("送一臺(tái)微波爐");
39、else if(money>=50000) Console.WriteLine("送一套茶具"); else if(money>=10000)
40、; Console.WriteLine("送一袋大米"); else Console.Writ
41、eLine("沒有禮品"); using System;using System.Collections.Generic;using System.Text;namespace Test class Program static void Main(string args) double money = 60000.00;/存款金額 if (money >= ) Console.WriteLine("送一臺(tái)微波爐"); else if(money>=50000)
42、 Console.WriteLine("送一套茶具"); else if(money>=10000) Console.WriteLine("送一袋大米"); else Console.WriteLine("沒有禮品"); /請(qǐng)?jiān)谶@里補(bǔ)充多重條件判斷 C#的條件運(yùn)算符C#提供了一種條件運(yùn)算符,能夠代替簡單的 if.else 結(jié)構(gòu)。這種條件運(yùn)算符的語法如下:條件表達(dá)式 ? 分支1 : 分支2?: 就是條件運(yùn)算符,可以看到它有3個(gè)操作數(shù),所以又被稱為三元運(yùn)算符。它的運(yùn)算邏輯是:當(dāng)條件表達(dá)式為 true 時(shí)
43、,執(zhí)行分支1;當(dāng)條件表達(dá)式為 false 時(shí),執(zhí)行分支2。下面的例子中,根據(jù)年齡的大小,輸出“成年人”或“未成年人”:因?yàn)閍ge=17,所以條件表達(dá)式age>=18的值為 false ,返回“未成年人”。C#的switch結(jié)構(gòu)if.else 之外,C#中還有一種 switch 條件結(jié)構(gòu),可以用來對(duì)變量進(jìn)行多個(gè)分支的等值判斷。語法如下:(變量)與每一個(gè) case 后面的常量進(jìn)行等值比較,如果相等,就執(zhí)行對(duì)應(yīng)的分支。執(zhí)行分支以后, break 關(guān)鍵字會(huì)使 switch
44、60;結(jié)構(gòu)中止,不會(huì)再判斷后面的常量。如果變量與所有的常量都不相同,則執(zhí)行 default 后面的分支。下面的代碼,根據(jù)運(yùn)算符完成了四則運(yùn)算中的一項(xiàng):上面的代碼,因?yàn)樽兞縪per的值與 case '*' 匹配,所以會(huì)輸出乘積“18”。switch 中的(變量)只能是3種類型:整型(如 int )、字符型( char )、字符串類型( string )。三、循環(huán)結(jié)構(gòu)循環(huán)流程圖和while循環(huán) 程序連續(xù)的重復(fù)一個(gè)步驟稱為“循環(huán)”。循環(huán)可以簡化我們的代碼,減少冗余。
45、例如,打印 1-10 的整數(shù),我們可以寫 10 條打印語句,也可以這樣:這個(gè)循環(huán)結(jié)構(gòu),會(huì)首先判斷 x<=10 ,條件為真時(shí)執(zhí)行循環(huán)體(“輸出x”和“x+”),之后,再次判斷條件 x<=10 ,若條件為真則繼續(xù)執(zhí)行循環(huán)體.若條件為假,則結(jié)束循環(huán)。簡單的說,循環(huán)是由循環(huán)體(需要重復(fù)執(zhí)行的命令)和循環(huán)條件組成的。運(yùn)行時(shí),先判斷循環(huán)條件,若條件為 true ,就執(zhí)行循環(huán)體一次,然后再判斷條件.當(dāng)條件為 false 時(shí),結(jié)束循環(huán)。上面的流程圖,當(dāng)變量 x 累加到 11 時(shí),循環(huán)條件為 false ,循環(huán)就會(huì)結(jié)束。C#中,可以用
46、60;while 循環(huán)結(jié)構(gòu)來實(shí)現(xiàn):對(duì)比代碼和流程圖可知, while 循環(huán)結(jié)構(gòu)中,循環(huán)條件寫在 () 中,循環(huán)體寫在 中。運(yùn)行結(jié)果: 算法求和這一節(jié),我們學(xué)習(xí)用循環(huán)累加的方式求和。上一節(jié),我們?cè)?jīng)循環(huán)打印過 1-10 的整數(shù),如果聲明一個(gè)變量,在打印的過程中,把每一個(gè)數(shù)字都累加到變量里面,就可以得到 1-10 的和。求和算法的基本步驟:聲明變量 sum 用來存儲(chǔ)“和”。 sum 的初始值賦為 0 。循環(huán),用變量 x 訪問每一個(gè)數(shù)字,用 sum+=x 的方式累加。(即 sum=sum+x; )循環(huán)結(jié)束后, sum 中存儲(chǔ)的即是和。運(yùn)行結(jié)果如下:for循環(huán)前
47、面已經(jīng)學(xué)習(xí)了 while 循環(huán),C#中還有一種非常有用的 for 循環(huán),特別適合于“已知循環(huán)次數(shù)”的循環(huán)。比如,循環(huán)打印3次“我能行!”,用 while 循環(huán)可以這樣寫:而用 for 循環(huán)這樣寫:可以看出來, while 循環(huán)有的變量聲明、循環(huán)條件、變量自加, for 循環(huán)一個(gè)也不缺,但是 for 循環(huán)把這些跟循環(huán)次數(shù)有關(guān)的元素都放在 ( ; ; ) 中,使得中的循環(huán)體更加純粹,程序結(jié)構(gòu)更加清晰。* for 循環(huán) ( ; ; ) 中的
48、兩個(gè)分號(hào)是不能缺少的。for 循環(huán)運(yùn)行時(shí),首先進(jìn)行變量聲明和賦值;接下來判斷循環(huán)條件,若條件為 true ,則執(zhí)行循環(huán)體一次,若條件為 false ,則結(jié)束循環(huán);執(zhí)行循環(huán)體后,進(jìn)行變量自加。然后會(huì)進(jìn)入下一次循環(huán)。dowhile循環(huán)C#中, do.while 循環(huán)也是一種常用的循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)各部分運(yùn)行順序如下:從上面的示意可以看出, do.while 循環(huán)第一次執(zhí)行循環(huán)體是沒有經(jīng)過條件判斷的,也就是說會(huì)無條件的執(zhí)行一次循環(huán)體,此后的邏輯順序就與while循環(huán)相同了先判斷條件,條件為true再執(zhí)行循環(huán)體一
49、次。請(qǐng)看下面的例子:盡管循環(huán)條件始終為 false ,但由于 do.while 循環(huán)第一次執(zhí)行循環(huán)體不判斷條件,所以循環(huán)體還是執(zhí)行了一次。運(yùn)行結(jié)果為:我們已經(jīng)學(xué)習(xí)了C#中最常用的三種循環(huán)結(jié)構(gòu),下面我們小小總結(jié)一下:編程練習(xí)for 循環(huán)的特點(diǎn),是把與循環(huán)有關(guān)的內(nèi)容都放在(計(jì)數(shù)變量初始化;循環(huán)條件;變量自加)里面,使得程序結(jié)構(gòu)清楚,適合于已知循環(huán)次數(shù)的循環(huán)。任務(wù)請(qǐng)?jiān)诘?11 行完善 for 循環(huán)結(jié)構(gòu),使得程序能夠打印 6 行“ Yeah! ”?不會(huì)了怎么辦for (int a = 1; a <= 6; a+)using System
50、;using System.Collections.Generic;using System.Text;namespace Test class Program static void Main(string args) for ( )/請(qǐng)?zhí)顚慺or循環(huán)結(jié)構(gòu) Console.WriteLine("Yeah!"); continue循環(huán)中可以應(yīng)用 continue 關(guān)鍵字中止一次循環(huán),直接進(jìn)入下一次。請(qǐng)看下面的例子:當(dāng)程序執(zhí)行到到 continue; 的時(shí)候,會(huì)立即停止本次循環(huán)體,直接進(jìn)入下一次循環(huán)。所以,第三行輸出比其他行少一些:所以
51、,可以使用 continue 關(guān)鍵字,在循環(huán)中剔除一些特殊的數(shù)據(jù)。break前面學(xué)習(xí) switch 結(jié)構(gòu)時(shí),我們?cè)?jīng)遇到過 break 關(guān)鍵字, break 在 switch 結(jié)構(gòu)的作用是“跳出 switch 結(jié)構(gòu)”。break 關(guān)鍵字還可以用在循環(huán)中,作用是“結(jié)束循環(huán)”。下面的循環(huán)代碼中,當(dāng) x=3 的時(shí)候會(huì)執(zhí)行 break :運(yùn)行結(jié)果:對(duì)比代碼和運(yùn)行結(jié)果可知,當(dāng)執(zhí)行到 break ,循環(huán)結(jié)束(盡管此時(shí)循環(huán)條件仍然為
52、0;true )。利用 break 關(guān)鍵字和 true 關(guān)鍵字,我們可以用另一種方式編寫循環(huán),下面的代碼是輸出1-5的整數(shù):運(yùn)行結(jié)果:嵌套循環(huán)在一個(gè)循環(huán)體中包含另一個(gè)循環(huán),稱為“嵌套循環(huán)”。當(dāng)2個(gè)循環(huán)嵌套的時(shí)候,外層循環(huán)體執(zhí)行一次,內(nèi)層循環(huán)體執(zhí)行 n 次( n 是內(nèi)層循環(huán)的次數(shù))。請(qǐng)看下面的例子:運(yùn)行結(jié)果:比較代碼和運(yùn)行結(jié)果,我們發(fā)現(xiàn),內(nèi)層循環(huán)體執(zhí)行 3 次,外層循環(huán)體執(zhí)行 1 次。這就有點(diǎn)像鐘表上的時(shí)針和分針時(shí)針走一格,分針走一圈。下面一段代碼打印了一個(gè)矩形:運(yùn)行效果:請(qǐng)思考一下,哪一個(gè)變量決定了每一行的循環(huán)次數(shù), x 還是 y ?編程練習(xí)嵌
53、套循環(huán)至少包含 2 層循環(huán),外層的循環(huán)體執(zhí)行一次,內(nèi)層的循環(huán)體則執(zhí)行 n 次,內(nèi)層體被執(zhí)行的總次數(shù) = 內(nèi)層循環(huán)次數(shù) * 外層循環(huán)次數(shù)。任務(wù)要輸入如下圖所示圖形,請(qǐng)用嵌套的 for 循環(huán)實(shí)現(xiàn)。?不會(huì)了怎么辦首先,外層循環(huán)應(yīng)當(dāng)循環(huán) 7 次( 7 行);內(nèi)層循環(huán)也應(yīng)該循環(huán) 7 次(每行 7 列);內(nèi)層循環(huán)后面換行。每一個(gè)字符輸出時(shí),檢查是不是處于對(duì)角線的位置,如果在對(duì)角線上,就輸出英文字母“O”,否則輸出“.”。從左上到右下的對(duì)角線的特點(diǎn)是:行數(shù)=列數(shù)從右上到左下的對(duì)角線的特點(diǎn)是:行數(shù)+列數(shù)=8 for (int x
54、= 1; x <= 7; x+)/循環(huán)7行 for (int y = 1; y <= 7; y+)/循環(huán)7列 if (x = y | x + y
55、 = 8)/對(duì)角線打印O Console.Write("O");
56、 else Console.Write(".");/其他位置打印.
57、 Console.WriteLine();/換行 例如改下using System;using System.Collections.Generic;using System.Text;namespace Test class Program static void Main(string ar
58、gs) /請(qǐng)完善代碼 C#中的數(shù)組C#的聲明數(shù)組和賦值編程中有這樣一種情形:我們需要存儲(chǔ)多個(gè)同類型數(shù)據(jù)。比如,保存 1600 個(gè)學(xué)生的年齡。是否需要聲明 1600 個(gè) int 類型的變量?過了一年,學(xué)生們長了 1 歲,是否需要給每個(gè)變量重新賦值?這件事情,想想就怕怕。好在C#中有一種數(shù)組,專門存儲(chǔ)一組相同類型的數(shù)據(jù)。數(shù)組的聲明和初始化語法如下:數(shù)據(jù)類型 數(shù)組名 = new 數(shù)據(jù)類型長度; 注意:數(shù)組名像變量名一樣要遵循標(biāo)識(shí)符的命名規(guī)則;長度必須是整數(shù)下面我們來比較變量和數(shù)組的聲明與初始化,右邊是在內(nèi)存中為變量和數(shù)組分配空間的示意:對(duì)比變量 x
59、和數(shù)組 y 就會(huì)發(fā)現(xiàn),數(shù)組 y 中其實(shí)包含了 3 個(gè) double 類型的變量,為什么是 3 個(gè)?因?yàn)槌跏蓟瘮?shù)組時(shí)在 中聲明的長度為 3 。既然都在數(shù)組 y 中,所以 3 個(gè)變量(應(yīng)該叫數(shù)組元素)的名字都叫 y ,為了區(qū)分它們,按照順序給它們加上索引 0、1、2 。請(qǐng)注意:數(shù)組的索引從 0 開始遞增。那么,數(shù)組 y 中 3 個(gè)元素的名字就變成了 y0、y1、y2 。最后再注意一點(diǎn):數(shù)組經(jīng)過初始化以后,數(shù)組元素有默認(rèn)的初始值, double 類型為 0.0 , int 類型為 0 , char 類型為 'a&
60、#39; , bool 類型為 false , string 類型為 null 。數(shù)組元素的賦值與普通變量相同。下面的示例中,我們聲明了一個(gè)長度為 3 的 string 類型數(shù)組,逐個(gè)賦值,然后打?。荷侠?,需要注意的是元素的索引,數(shù)組元素索引從 0 開始遞增,所以長度為 3 的數(shù)組,其元素索引為 0、1、2 。如何知道一個(gè)數(shù)組的長度呢? 數(shù)組.Length 屬性會(huì)返回?cái)?shù)組的長度(即數(shù)組元素的個(gè)數(shù))。請(qǐng)看下面的例子:代碼中的 friends.Length
61、會(huì)返回 friends 數(shù)組的長度,請(qǐng)看運(yùn)行結(jié)果:C#訪問數(shù)組元素上一節(jié)我們學(xué)習(xí)了數(shù)組的聲明和初始化,以及數(shù)組元素的訪問方法。其實(shí),C#中數(shù)組元素有多種初始化方式,請(qǐng)看下例:上例中,數(shù)組 a 的初始化方式我們已經(jīng)學(xué)習(xí)過了;數(shù)組 b、c、d 是在初始化時(shí)為數(shù)組元素指定初始值,請(qǐng)注意數(shù)組 d 用 3 聲明了數(shù)組長度,后面 中的初始值個(gè)數(shù)要與 中聲明的長度相同。數(shù)組 b、c 初始化沒有聲明長度,長度由 中的初始值個(gè)數(shù)確定。上一節(jié)我們還學(xué)習(xí)了數(shù)組的一個(gè)屬性 Length , Length 能夠返回?cái)?shù)組的長度,利用它和數(shù)組元素的索引,我們可以循環(huán)訪問每一元素。上一節(jié)中打印名字的代碼,
62、可以這樣改進(jìn):Length 屬性返回?cái)?shù)組的長度,如上例中,數(shù)組長度為 3 , Length 就返回 3 ,即循環(huán)變量 i 從 0 循環(huán)到 2 。為什么不循環(huán)到 3 呢?因?yàn)閿?shù)組元素的索引是從 0 開始的呀!長度為 3 的數(shù)組,索引為 0 - 2 。通過上例,我們看到,使用數(shù)組就能循環(huán)訪問一組相同類型的變量了,是不是比使用單個(gè)變量要輕松呢?編程練習(xí)數(shù)組,可以用來存儲(chǔ)相同類型的多個(gè)數(shù)值。聲明并初始化數(shù)組的語法:數(shù)據(jù)類型 數(shù)組名 = new 數(shù)據(jù)類型初始值1,初始值2,.初始值3;數(shù)組元素用索引來區(qū)分,索引從 0 開始。數(shù)組的 Length 屬性返回?cái)?shù)組的長度,即數(shù)組元素的個(gè)數(shù)。任務(wù)三國演義中,蜀國
63、“五虎上將”是:關(guān)羽、張飛、趙云、馬超、黃忠。請(qǐng)用數(shù)組保存五虎上將的名字,然后循環(huán)打印。打印結(jié)果如下:?不會(huì)了怎么辦 /聲明字符串?dāng)?shù)組,保存“五虎上將”的名字 string name = new string "關(guān)羽", "張飛", "趙云", "馬超", "黃忠" /循環(huán)輸出“五虎上將”的名字 for (int i = 0; i < name.Length; i+)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年戊二酮苯項(xiàng)目發(fā)展計(jì)劃
- 2025年氣象、水文儀器及裝置項(xiàng)目建議書
- 教育技術(shù)推動(dòng)現(xiàn)代課程設(shè)計(jì)的核心力量
- 2025年河北省鹿泉一中物理高二下期末調(diào)研試題含解析
- 中職新媒體營銷課件
- 商業(yè)案例分析豐富多樣的學(xué)習(xí)資源助力企業(yè)發(fā)展
- 中職數(shù)學(xué)直線復(fù)習(xí)課件
- 探索教育數(shù)字化轉(zhuǎn)型中的技術(shù)力量
- 教育心理學(xué)在學(xué)生自我管理中的應(yīng)用案例
- 中職教育政策宣講課件
- 2025年重慶市輔警招聘測(cè)試題及答案
- 2025高等教育人工智能發(fā)展報(bào)告
- 2025年高考真題-物理(江蘇卷) 含解析
- GB/T 25383-2025風(fēng)能發(fā)電系統(tǒng)風(fēng)力發(fā)電機(jī)組風(fēng)輪葉片
- 2025年時(shí)事政治考試100題(含參考答案)
- 2024年安徽焦甜香生物科技有限公司招聘筆試沖刺題(帶答案解析)
- 《碳纖維片材加固混凝土結(jié)構(gòu)技術(shù)規(guī)程》(2022年版)
- 智能建筑項(xiàng)目設(shè)計(jì)方案(模板)
- 短視頻:策劃+拍攝+制作+運(yùn)營課件(完整版)
- 中山大學(xué)綜合評(píng)價(jià)招生綜合素質(zhì)測(cè)試題總結(jié)
- 預(yù)制場(chǎng)(梁場(chǎng))建設(shè)方案
評(píng)論
0/150
提交評(píng)論