版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025股份代持合同協(xié)議書范本標(biāo)準(zhǔn)版
- 2025建筑安裝工程拆遷房屋合同模板
- 2024年果樹種植基地建設(shè)與運(yùn)營(yíng)合同
- 2024事業(yè)單位員工終止聘用合同及離職手續(xù)及工作交接及安置協(xié)議3篇
- 2024年版加工承攬合同:服裝制造商與品牌商之間的服裝生產(chǎn)與質(zhì)量要求
- 2024年度中小企業(yè)知識(shí)產(chǎn)權(quán)融資合同3篇
- 虛擬現(xiàn)實(shí)中石化施工合同
- 廣場(chǎng)環(huán)?;顒?dòng)租賃合同
- 工業(yè)煙囪維修施工合同
- 影視行業(yè)招投標(biāo)風(fēng)險(xiǎn)與防控
- 2024年荊州市產(chǎn)業(yè)投資發(fā)展集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- Unit2Whattimedoyougotoschool?大單元整體教學(xué)設(shè)計(jì)人教版七年級(jí)英語(yǔ)下冊(cè)
- 建筑防雷與接地-等電位連接
- 2024行政法與行政訴訟法論述題
- 國(guó)際貨運(yùn)代理業(yè)現(xiàn)狀及發(fā)展對(duì)策分析-以KX公司為例
- 施工現(xiàn)場(chǎng)安全文明施工管理處罰細(xì)則
- 重慶洪崖洞旅游營(yíng)銷策劃
- 消費(fèi)者調(diào)查訪談提綱模板
- 山東建筑大學(xué)混凝土結(jié)構(gòu)原理期末考試復(fù)習(xí)題
- 消化道腫瘤的診斷和治療
- 護(hù)理病例報(bào)告范文5篇
評(píng)論
0/150
提交評(píng)論