《C#程序設(shè)計(jì)及基于工作過程的項(xiàng)目開發(fā)》課件第3章_第1頁(yè)
《C#程序設(shè)計(jì)及基于工作過程的項(xiàng)目開發(fā)》課件第3章_第2頁(yè)
《C#程序設(shè)計(jì)及基于工作過程的項(xiàng)目開發(fā)》課件第3章_第3頁(yè)
《C#程序設(shè)計(jì)及基于工作過程的項(xiàng)目開發(fā)》課件第3章_第4頁(yè)
《C#程序設(shè)計(jì)及基于工作過程的項(xiàng)目開發(fā)》課件第3章_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

學(xué)習(xí)情境三控制流程3.1任務(wù)一:選擇控制流程3.2任務(wù)二:while循環(huán)語(yǔ)句的應(yīng)用3.3任務(wù)三:for循環(huán)的基本應(yīng)用及嵌套3.4任務(wù)四:for循環(huán)在數(shù)組上的應(yīng)用3.5舉一反三 3.1任務(wù)一:選擇控制流程

3.1.1功能描述

判斷某年某月的天數(shù):本程序從控制臺(tái)接受用戶輸入的年份和月份,判斷該年該月的天數(shù)并輸出。該判斷包括大小月的判斷和閏年的判斷。

通過該任務(wù),我們應(yīng)學(xué)會(huì):

選擇語(yǔ)句的實(shí)現(xiàn)。選擇語(yǔ)句包括if語(yǔ)句和switch語(yǔ)句兩種,它們能夠根據(jù)實(shí)際情況選擇要執(zhí)行的代碼。

使用嵌套的if語(yǔ)句和switch語(yǔ)句。3.1.2代碼展示

1usingSystem;

2namespaceConsoleApplication5

3{

4classProgram

5{

6staticvoidMain(string[]args)

7{

8intyear,month,day=0;

9Console.WriteLine("***請(qǐng)輸入年份,回車確認(rèn)***");

10year=Int32.Parse(Console.ReadLine());11Console.WriteLine("***請(qǐng)輸入月份,回車確認(rèn)***");

12month=Int32.Parse(Console.ReadLine());

13if(year<0||year>10000)

14Console.WriteLine("***您輸入的年份不合理!!***");

15elseif(month<=0||month>12)

16Console.WriteLine("***您輸入的月份不合理!!***");

17else

18{

19switch(month)

20{

21case1:

22case3:

23case5:24case7:

25case8:

26case10:

27case12:day=31;break;

28case4:

29case6:

30case9:

31case11:day=30;break;

32case2:

33if((year%400==0)||((year%4==0)&&(year%100!=0)))

34day=28;

35else

36day=29;37break;

38

}

39Console.WriteLine("***該月份的天數(shù)為{0}天***",day);

40}

41Console.ReadKey();

42}

43}

44}代碼分析:

9~12從控制臺(tái)請(qǐng)求用戶輸入年份和月份,并保存在整型變量year和month中。

14~16判斷用戶輸入的年月值是否合理,若不合理,給出提示信息。

17 這個(gè)else語(yǔ)句是嵌套的if語(yǔ)句的最后一個(gè)情況,也就是當(dāng)年月的值都合理時(shí),才能執(zhí)行到這個(gè)else所帶的語(yǔ)句塊。

20~38 這是一個(gè)多分支的switch語(yǔ)句,通過判斷month的值來確定該月是大月還是小月,大月是31天,小月是30天。2月是個(gè)特殊情況,需要判斷是否閏年來決定是28還是29天。將判斷得到的天數(shù)存放到變量day中。

39輸出變量day的值。

41該行用于讓程序停住,等待用戶輸入任意鍵繼續(xù)。也就是我們前面講到過的,便于查看程序運(yùn)行結(jié)果。3.1.3知識(shí)點(diǎn)1——if語(yǔ)句

條件選擇語(yǔ)句用來判斷所給定的條件是否滿足,根據(jù)判斷結(jié)果真(true)或假(false),決定執(zhí)行一種選擇。一般說來,判斷條件以關(guān)系表達(dá)式或邏輯表達(dá)式的形式出現(xiàn)。

條件選擇根據(jù)選擇結(jié)構(gòu)主要分成單分支選擇、雙分支選擇和嵌套選擇。

單分支結(jié)構(gòu)的語(yǔ)法如下:

if(表達(dá)式)

語(yǔ)句塊一;

語(yǔ)句塊二;

該結(jié)構(gòu)先判斷表達(dá)式的值,若表達(dá)式值為真,則執(zhí)行語(yǔ)句塊一;否則跳過語(yǔ)句塊一,執(zhí)行語(yǔ)句塊二。程序流程圖如下:在該結(jié)構(gòu)中,語(yǔ)句塊二是if單分支結(jié)構(gòu)的后續(xù)語(yǔ)句,實(shí)際上無論表達(dá)式判斷結(jié)構(gòu)如何,語(yǔ)句塊二都會(huì)被執(zhí)行。

雙分支結(jié)構(gòu)的語(yǔ)法如下:

if(表達(dá)式)

語(yǔ)句塊一;

else

語(yǔ)句塊二;該結(jié)構(gòu)先判斷表達(dá)式的值,若表達(dá)式值為真true,則執(zhí)行語(yǔ)句塊一;否則(表達(dá)式的值為假false)執(zhí)行語(yǔ)句塊二。程序流程圖如下:在這種結(jié)構(gòu)中,語(yǔ)句一和語(yǔ)句二只有一段會(huì)被執(zhí)行到,不可能都被執(zhí)行。3.1.4知識(shí)點(diǎn)2——嵌套的if語(yǔ)句

作為if語(yǔ)句執(zhí)行結(jié)果的語(yǔ)句可以是另外一個(gè)if語(yǔ)句。也就是說,上文中的“語(yǔ)句塊一”、“語(yǔ)句塊二”本身又可以是另一個(gè)if語(yǔ)句。這種情況稱為嵌套的if語(yǔ)句。嵌套的if語(yǔ)句用來處理復(fù)雜的判斷條件。

例如,以下代碼段用來根據(jù)貨品數(shù)量和規(guī)格修改庫(kù)存。1if(number>0)

2if(size==7)

3size7Num+=number; //size7Num表示規(guī)格為7的貨品的庫(kù)存值

4else //otherNum表示其它規(guī)格的貨品的庫(kù)存值

5otherNum+=number;

6else

7Console.WriteLine("已無庫(kù)存!");第1行和第6行是一對(duì)if語(yǔ)句。

第2行到第5行又是一對(duì)if語(yǔ)句,它們是第1行的if語(yǔ)句所嵌套的。當(dāng)庫(kù)存數(shù)量number大于0時(shí),需要再判斷規(guī)格size是否等于7,再作不同處理。

當(dāng)程序邏輯中出現(xiàn)類似于此的復(fù)雜判斷時(shí),就需要根據(jù)實(shí)際情況進(jìn)行嵌套。3.1.5知識(shí)點(diǎn)3——switch語(yǔ)句

switch語(yǔ)句是一種多分支語(yǔ)句。在嵌套使用if語(yǔ)句時(shí),所有if語(yǔ)句看起來都非常相似,因?yàn)樗鼈兌荚趯?duì)一個(gè)完全相同的表達(dá)式進(jìn)行求值。當(dāng)每個(gè)if語(yǔ)句都將表達(dá)式的結(jié)果與一個(gè)不同的值進(jìn)行比較時(shí),通常可將嵌套的if語(yǔ)句改寫為一個(gè)switch語(yǔ)句,這樣會(huì)使程序更有效,更易懂。例如:

if(day==0)

dayName="Sunday";

elseif(day==1)

dayName="Monday";

elseif(day==2)

dayName="Tuesday";

elseif(day==3)

...

else

dayName="Unknown";以上代碼塊中,判斷條件都很類似:day==0、day==1、day==2、day==3等,可以將其改寫成以下代碼:switch(day){case0:dayName="Sunday";break;case1:dayName="Monday";break;case2:dayName="Tuesday";break;case3:dayName="Tuesday";break;…default:dayName="Unknown";break;}顯然,switch語(yǔ)句在處理這類問題時(shí)更為方便。

switch語(yǔ)句的語(yǔ)法形式如下:

switch(表達(dá)式)

{

case常量表達(dá)式1:語(yǔ)句;break;

case常量表達(dá)式2:語(yǔ)句;break;

case常量表達(dá)式3:語(yǔ)句;break;

case常量表達(dá)式n:語(yǔ)句;break;

default:語(yǔ)句;break;

}其語(yǔ)義為:計(jì)算表達(dá)式的值,從表達(dá)式值等于某常量表達(dá)式值的case開始,它下方的所有語(yǔ)句都會(huì)一直運(yùn)行,直到遇到一個(gè)break為止。隨后,switch語(yǔ)句將結(jié)束,忽略其它c(diǎn)ase,程序從switch結(jié)束大括號(hào)之后的第一個(gè)語(yǔ)句繼續(xù)執(zhí)行。使用switch語(yǔ)句的注意事項(xiàng):

(1)?case標(biāo)簽和后續(xù)語(yǔ)句之間用冒號(hào)“:”隔開。

(2)?在C#中,各個(gè)case語(yǔ)句和default語(yǔ)句的次序可以打亂,并不影響執(zhí)行結(jié)果。

(3)?只能針對(duì)基本數(shù)據(jù)類型使用switch,這些類型包括int和string等。對(duì)于其它類型,則必須使用if語(yǔ)句。

(4)?case標(biāo)簽必須是常量表達(dá)式,如42或者"42"。如果需要在運(yùn)行時(shí)計(jì)算case標(biāo)簽的值,則必須使用if語(yǔ)句。

(5)?case標(biāo)簽必須是唯一性的表達(dá)式。也就是說,不允許兩個(gè)case具有相同的值。

(6)?可以連續(xù)寫下一系列case標(biāo)簽(中間不能間插額外的語(yǔ)句),從而指定自己希望在多種情況下都運(yùn)行相同的語(yǔ)句。如果像這樣寫,那么最后一個(gè)case標(biāo)簽之后的代碼將適用于該系列的所有case。

(7)?對(duì)于有關(guān)聯(lián)語(yǔ)句的case標(biāo)簽,語(yǔ)句結(jié)束后必須有break語(yǔ)句,否則編譯器會(huì)報(bào)錯(cuò)。錯(cuò)誤說明通常為“控制不能從一個(gè)case標(biāo)簽(“case…:”)貫穿到另一個(gè)case標(biāo)簽”,如圖3.1所示。圖3.1

3.2任務(wù)二:while循環(huán)語(yǔ)句的應(yīng)用

3.2.1功能描述

名片夾:本例實(shí)現(xiàn)一個(gè)控制臺(tái)名片夾,該程序運(yùn)行時(shí)在用戶屏幕上顯示一列可供選擇的選項(xiàng),用戶通過鍵盤輸入選擇不同的字符以選擇進(jìn)入對(duì)應(yīng)的子功能。除此之外,該程序還用循環(huán)語(yǔ)句實(shí)現(xiàn)用戶的重復(fù)選擇。

通過本任務(wù),我們應(yīng)當(dāng)掌握:

循環(huán)語(yǔ)句while、do-while的使用。循環(huán)語(yǔ)句允許多次重復(fù)執(zhí)行一行或一段代碼。

跳轉(zhuǎn)語(yǔ)句break、continue、goto、return的使用。跳轉(zhuǎn)語(yǔ)句允許在程序中進(jìn)行跳轉(zhuǎn),增加程序的靈活性。3.2.2代碼展示

1usingSystem;

2namespaceConsoleApplication6

3{

4classProgram

5{

6staticvoidMain(string[]args)

7{

8stringmyChoice;

9do{

10Console.WriteLine("MyAddressBook\n");

11Console.WriteLine("A--AddNewAddress");

12Console.WriteLine("D--DeleteAddress");

13

Console.WriteLine("M--ModifyAddress");

14

Console.WriteLine("V--ViewAddresses");

15Console.WriteLine("Q--Quit\n");

16Console.WriteLine("Choice(A,D,M,V,orQ):");

17myChoice=Console.ReadLine();

18switch(myChoice)

19{

20case"A":

21case"a":

22Console.WriteLine("Youwishtoaddanaddress.");

23//此處可以加入“添加地址”的代碼方法函數(shù)

24break;

25case"D":

26case"d":

27Console.WriteLine("Youwishtodeleteanaddress.")

28//此處可以加入“刪除地址”的代碼方法函數(shù)

29break;

30case"M":

31case"m":

32Console.WriteLine("Youwishtomodifyanaddress.");

33//此處可以加入“修改地址”的代碼方法函數(shù)

34break;

35case"V":

36case"v":

37Console.WriteLine("Youwishtoviewtheaddresslist.");

38//此處可以加入“查看地址列表”的代碼方法函數(shù)

39break;

40case"Q":

41case"q":

42Console.WriteLine("Bye.");break;

43default:

44Console.WriteLine("{0}isnotavalidchoice",myChoice);

45break;

46}

47Console.Write("Pressanykeytocontinue...");

48Console.ReadLine();

49}while(myChoice!="Q"&&myChoice!="q");

50}

51}

52}代碼分析:

8 定義一個(gè)字符串類型的變量myChoice,用于保存用戶輸入的選項(xiàng)。

9 do-while語(yǔ)句的開始,到45行是循環(huán)體。表示只要45行的while語(yǔ)句所帶的表達(dá)式為真,就始終執(zhí)行循環(huán)體。

10~16打印可選項(xiàng)

17 保存用戶的選項(xiàng)。將用戶選擇的選項(xiàng)保存在變量myChoice中。

20~42根據(jù)用戶輸入的選項(xiàng),選擇不同的case語(yǔ)句來執(zhí)行不同選項(xiàng)對(duì)應(yīng)的代碼塊。

可以將代碼塊寫成方法放在另一個(gè)類中。

43~46對(duì)用戶的非法輸入進(jìn)行處理。

48 退出前停留在用戶屏幕,以便用戶查看運(yùn)行結(jié)果。

49 若用戶沒有退出,則繼續(xù)請(qǐng)求輸入。程序?qū)⒒氐降?0行再次執(zhí)行。3.2.3知識(shí)點(diǎn)1——while語(yǔ)句

while語(yǔ)句可以在一個(gè)布爾表達(dá)式為true的前提下重復(fù)運(yùn)行一個(gè)語(yǔ)句塊。其語(yǔ)法如下:

while(布爾表達(dá)式)

語(yǔ)句塊;

while語(yǔ)句先判斷布爾表達(dá)式的值,若表達(dá)式的值為真,則執(zhí)行循環(huán)體語(yǔ)句。執(zhí)行完循環(huán)體語(yǔ)句后回到表達(dá)式繼續(xù)判斷,直到表達(dá)式的值為假(false),跳過循環(huán)體,結(jié)束while循環(huán)。流程圖如下:例如,以下代碼計(jì)算x的階乘,將結(jié)果保存在變量y中:

y=1;

while(x!=0)

{

y*=x;

x--;

}3.2.4知識(shí)點(diǎn)2——do-while語(yǔ)句

do-while語(yǔ)句與while語(yǔ)句不同的是,它將內(nèi)嵌語(yǔ)句執(zhí)行至少一次。其語(yǔ)法如下:

do

{

語(yǔ)句塊;

}

while(布爾表達(dá)式);

do-while語(yǔ)句先執(zhí)行內(nèi)嵌語(yǔ)句塊一遍,然后計(jì)算布爾表達(dá)式的值,若為真(true)則回到do繼續(xù)執(zhí)行,為false則終止do循環(huán)。語(yǔ)句流程圖如下:例如,計(jì)算x的階乘,寫成do-while循環(huán)如下:

longy=1;

do

{

y*=x;

x--;

}

while(x>0)3.2.5知識(shí)點(diǎn)3——跳轉(zhuǎn)語(yǔ)句:break、continue、goto

及時(shí)有效的跳轉(zhuǎn)有助于提升程序的執(zhí)行效率。

1.?break

break語(yǔ)句用于終止最近的封閉循環(huán)或它所在的switch語(yǔ)句,控制傳遞給終止語(yǔ)句后面的語(yǔ)句(如果有的話)。

(1)?break語(yǔ)句只能用在switch語(yǔ)句或循環(huán)語(yǔ)句中,其作用是跳出switch語(yǔ)句或跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。由于break語(yǔ)句的轉(zhuǎn)移方向是明確的,所以不需要語(yǔ)句標(biāo)號(hào)與之配合。

(2)?break語(yǔ)句的一般形式如下:

?break;

(3)使用break語(yǔ)句可以使循環(huán)語(yǔ)句有多個(gè)出口,在一些場(chǎng)合下使編程更加靈活、方便。例如:

for(i=1;i<=5;i++)

{

if(i==3)

break;

Console.Write(i);

}

當(dāng)i等于3時(shí),控制跳出for循環(huán)中break后面的語(yǔ)句,所以,該語(yǔ)句段的執(zhí)行結(jié)果為:

12

2.?continue

continue語(yǔ)句將控制權(quán)傳遞給它所在的封閉迭代語(yǔ)句的下一次迭代。

(1)?continue語(yǔ)句只能用在循環(huán)體中,其一般格式如下:

continue;

其語(yǔ)義是:結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue語(yǔ)句之后的語(yǔ)句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。

(2)語(yǔ)句只結(jié)束本層本次的循環(huán),并不跳出循環(huán)。例如:

for(i=1;i<=5;i++)

{

if(i==3)

continue;

Console.Write(i);

}

當(dāng)i等于3時(shí),控制跳過for循環(huán)中continue后面的語(yǔ)句,所以,該語(yǔ)句段的執(zhí)行結(jié)果為:

1245

3.?goto

goto語(yǔ)句將程序控制直接傳遞給標(biāo)記語(yǔ)句。

(1)?goto的一個(gè)通常用法是將控制傳遞給特定的switch-case標(biāo)簽或switch語(yǔ)句中的默認(rèn)標(biāo)簽。其一般格式如下:

goto語(yǔ)句標(biāo)號(hào);

其中語(yǔ)句標(biāo)號(hào)是按標(biāo)識(shí)符規(guī)定書寫的符號(hào),放在某一語(yǔ)句行的前面,標(biāo)號(hào)后加冒號(hào)(:)。語(yǔ)句標(biāo)號(hào)起標(biāo)識(shí)語(yǔ)句的作用,與goto語(yǔ)句配合使用,如:

label:i++;

loop:while(x<7);

(2)??goto語(yǔ)句還用于跳出深嵌套循環(huán)。

C#語(yǔ)言不限制程序中使用標(biāo)號(hào)的次數(shù),但規(guī)定各標(biāo)號(hào)不得重名。goto語(yǔ)句的語(yǔ)義是改變程序流向,轉(zhuǎn)去執(zhí)行語(yǔ)句標(biāo)號(hào)所標(biāo)識(shí)的語(yǔ)句。

goto語(yǔ)句通常與條件語(yǔ)句配合使用。可用來實(shí)現(xiàn)條件轉(zhuǎn)移,構(gòu)成循環(huán)、跳出循環(huán)體等功能。但是,在結(jié)構(gòu)化程序設(shè)計(jì)中一般不主張使用goto語(yǔ)句,以免造成程序流程的混亂,給理解和調(diào)試程序帶來困難。

3.3任務(wù)三:for循環(huán)的基本應(yīng)用及嵌套

3.3.1功能描述

在1.5節(jié)中,我們?cè)笞x者通過控制臺(tái),用最基本的輸出語(yǔ)句輸出一個(gè)由“*”組成的菱形。那么,如果要求讀者輸出一個(gè)有50行的大菱形,是否也要一行一行地輸出呢?本任務(wù)就解決了這個(gè)問題。

用“*”輸出各種大小的菱形:本任務(wù)通過兩個(gè)嵌套的for循環(huán),在用戶屏幕上輸出一個(gè)由“*”號(hào)和空格組成的菱形,菱形大小由定義的符號(hào)常量控制。

通過本任務(wù),我們應(yīng)學(xué)會(huì):

for循環(huán)的簡(jiǎn)單應(yīng)用;

使用嵌套的for循環(huán)處理復(fù)雜的情況。

3.3.2代碼展示

1usingSystem;

2namespaceDiamond

3{

4classProgram

5{

6staticvoidMain(string[]args)

7{

8constintMAX_ROWS=8;

9introw,star;

10for(row=1;row<=MAX_ROWS;row++)

11{

12for(inti=0;i<=(MAX_ROWS-row);i++)

13Console.Write("");

14for(star=1;star<=row;star++)

15Console.Write("*");

16Console.WriteLine();

17}

18for(row=MAX_ROWS-1;row>=1;row--)

19{

20for(inti=0;i<=(MAX_ROWS-row);i++)

21Console.Write("");

22for(star=1;star<=row;star++)

23Console.Write("*");

24Console.WriteLine();

25}

26Console.Read();

27}

28}

29}代碼分析:

8 定義符號(hào)常量MAX_ROWS,用來控制菱形的大小。這里MAX_ROWS的值為8,表示菱形的上三角有8行。如果需要改變菱形的大小,只需修改MAX-ROWS的值即可

10~17 設(shè)計(jì)菱形的上三角。外層for循環(huán)每循環(huán)一次,完成菱形的一行的繪制。

12~13 該循環(huán)控制每行的空格數(shù)。越靠上的行空格越多。

14~15 該循環(huán)控制每行“*”的數(shù)量。本例中輸出的菱形上三角中,第n行的星號(hào)數(shù)量為n個(gè)。故為了對(duì)齊,輸出星號(hào)時(shí)實(shí)際上輸出的是星號(hào)和空格(“*”)。

注意:不輸出空格也可以輸出完整的菱形,請(qǐng)讀者自行完成。

16 換行輸出。

18~25 輸出下三角。算法和上三角一樣,只是個(gè)數(shù)控制上有所區(qū)別。3.3.3知識(shí)點(diǎn)1——for語(yǔ)句

for語(yǔ)句的一般形式為:

for(式1;式2;式3)

for語(yǔ)句的語(yǔ)義為:

(1)計(jì)算表達(dá)式1的值。

(2)計(jì)算表達(dá)式2的值,若值為真(非0)則執(zhí)行循環(huán)體一次,否則跳出循環(huán)。

(3)計(jì)算表達(dá)式3的值,轉(zhuǎn)回第(2)步重復(fù)執(zhí)行。

注意:在整個(gè)for循環(huán)過程中,表達(dá)式1只計(jì)算一次,表達(dá)式2和表達(dá)式3則可能計(jì)算多次。循環(huán)體可能多次執(zhí)行,也可能一次都不執(zhí)行。3.3.4知識(shí)點(diǎn)2——嵌套的循環(huán)

循環(huán)體里面也可以有循環(huán),這就是所謂的循環(huán)嵌套。內(nèi)部循環(huán)在外部循環(huán)體中。在外部循環(huán)的每次執(zhí)行過程中都會(huì)觸發(fā)內(nèi)部循環(huán),直到內(nèi)部循環(huán)執(zhí)行結(jié)束。外部循環(huán)執(zhí)行了多少次,內(nèi)部循環(huán)就完成多少次。當(dāng)然,無論是內(nèi)部循環(huán)還是外部循環(huán)的break語(yǔ)句,都會(huì)打斷處理過程。循環(huán)嵌套可以解決很多問題,經(jīng)常被用于按行列方式輸出數(shù)據(jù)。例如,以下程序段用于輸出九九乘法表:

inti,j;

for(i=1;i<=9;++i)

//外循環(huán)控制輸出多少行

{

for(j=1;j<=i;++j)

//內(nèi)循環(huán)控制輸出多少列

{

Console.Write("{0}",i*j);

//輸出乘積

}

Console.WriteLine();

//換行

}3.4任務(wù)四:for循環(huán)在數(shù)組上的應(yīng)用

3.4.1功能描述

冒泡排序算法:該任務(wù)為冒泡排序算法,通過嵌套的for循環(huán)實(shí)現(xiàn)。該算法通過兩兩比較,每次循環(huán)都將最小的數(shù)“冒”到頂端。若共有n個(gè)數(shù),則通過n-1次循環(huán)即可完成遞增排序。3.4.2代碼展示

1usingSystem;

2namespaceConsoleApplication1

3{

4classProgram

5{

6staticvoidMain(string[]args)

7{

8int[]Array={3,27,1,99,36,52,1,77,9,7};

9for(inti=0;i<Array.Length;i++)

10{

11for(intj=i+1;j<Array.Length;j++)

12{

13if(Array[i]>Array[j])

14{

15inttemp=Array[i];

16Array[i]=Array[j];

17Array[j]=temp;

18}

19}

20}

21foreach(intkinArray)

22{

23Console.WriteLine(k);

24}

25Console.Read();

26}

27}

28}代碼分析:

8 定義并初始化一個(gè)10個(gè)元素的一維整型數(shù)組。

9~20 外重for循環(huán),從數(shù)組的第一個(gè)元素循環(huán)到最后一個(gè)。

11~19內(nèi)嵌的for循環(huán),從外重for循環(huán)當(dāng)前所在的數(shù)組元素循環(huán)到數(shù)組的最后一個(gè)元素。

外重循環(huán)第一次時(shí),將數(shù)組的第一個(gè)元素與其它元素比較大小,若第一個(gè)元素比后面的元素大,則交換它們的位置。這樣一次循環(huán)下來,最小的元素就“浮”到第一個(gè)上面了。以此類推,第n次外重循環(huán)就將剩下元素的最小值“浮”到第n個(gè)位置上。

21~24用一個(gè)foreach循環(huán)輸出排序后的數(shù)組元素。3.4.3知識(shí)點(diǎn)1——C#的數(shù)組

1.一維數(shù)組

一維數(shù)組以線性方式存儲(chǔ)固定數(shù)目的項(xiàng),只需一個(gè)索引值即可標(biāo)識(shí)任意一個(gè)項(xiàng)。在C#中,數(shù)組聲明中的方括號(hào)必須跟在數(shù)據(jù)類型后面,且不能放在變量名稱之后,而這在許多其它語(yǔ)言中是允許的。例如,整型數(shù)組應(yīng)使用以下語(yǔ)法聲明:int[]arr1;

下面的聲明在C#中無效:

intarr2[];

聲明數(shù)組后,可以使用new關(guān)鍵字設(shè)置其大小。下面的代碼聲明數(shù)組引用:

int[]arr;

arr=newint[5];//聲明一個(gè)5元素整型數(shù)組

然后,可以使用“數(shù)組名[索引值]”訪問一維數(shù)組中的元素。C#?數(shù)組索引是從0開始的。也就是說,第一個(gè)元素是“數(shù)組名[0]”。下面的代碼訪問上面數(shù)組中的最后一個(gè)元素:

Console.WriteLine(arr[4]); //輸出第5個(gè)元素

2.一維數(shù)組的初始化

C#?數(shù)組元素可以在創(chuàng)建時(shí)進(jìn)行初始化:

int[]arr2;

arr2=newint[5]{1,2,3,4,5};

初始值設(shè)定項(xiàng)的數(shù)目必須與數(shù)組大小完全匹配??梢允褂么斯δ茉谕恍兄新暶鞑⒊跏蓟疌#數(shù)組:

int[]arr1Line={1,2,3,4,5};

此語(yǔ)法創(chuàng)建一個(gè)數(shù)組,其大小等于初始值設(shè)定項(xiàng)的數(shù)目。

在C#?中初始化數(shù)組的另一個(gè)方法是使用for循環(huán)。下面的循環(huán)將數(shù)組的每個(gè)元素都設(shè)置為0:

for(inti=0;i<TaxRates.Length;i++)

{

arr2[i]=0;

}

3.多維數(shù)組

可以使用C#創(chuàng)建規(guī)則的多維數(shù)組(數(shù)組的數(shù)組),多維數(shù)組類似于同類型值的矩陣。

使用以下語(yǔ)法聲明多維矩形數(shù)組:

int[,]arr2D; //二維數(shù)組

float[,,,]arr4D; //四維數(shù)組

聲明之后,可以按如下方式為數(shù)組分配內(nèi)存:

arr2D=newint[8,6];//聲明一個(gè)8行6列的二維數(shù)組

然后,可以使用以下語(yǔ)法訪問數(shù)組的元素:

arr2D[4,2]=906;

由于數(shù)組是從零開始的,因此此行將第5行第3列中的元素設(shè)置為906。

4.二維數(shù)組初始化

可以使用以下幾種方法之一在同一個(gè)語(yǔ)句中創(chuàng)建、設(shè)置并初始化多維數(shù)組:

int[,]arr4=newint

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論