版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C#語言基礎(chǔ)--程序流程控制1.5
程序流程控制
語句是程序完成一次完整操作的基本單位。默認(rèn)情況下,程序語句按順序執(zhí)行。為提高程序的靈活性,在C#中還定義了選擇、循環(huán)和跳轉(zhuǎn)語句來控制程序的執(zhí)行順序,從而實(shí)現(xiàn)比較復(fù)雜的程序。1.5.1
選擇語句
選擇語句可根據(jù)某個(gè)表達(dá)式的值,從若干條給定的語句中選擇一條來執(zhí)行。選擇語句包括if語句和switch語句兩種。
1if…else語句if(布爾表達(dá)式)
【語句塊1】或者if(布爾表達(dá)式)
【語句塊1】else【語句塊2】【語句塊】可以只有一條語句或?yàn)榭照Z句(只有一個(gè)分號(hào)),若有多條語句,則必須將這些語句放入放在大括號(hào){}內(nèi)。Else子句是可選的。if語句的執(zhí)行流程為,先計(jì)算布爾表達(dá)式的值,若布爾表達(dá)式的值是true,則執(zhí)行語句塊1;若布爾表達(dá)式的值為false,且有else子句C#語言基礎(chǔ)--程序流程控制存在時(shí),則執(zhí)行語句塊2,否則跳出if語句,執(zhí)行其它程序代碼。
if語句可以嵌套,即一個(gè)if語句可以是另一個(gè)if或else語句的嵌入語句。在實(shí)際軟件編寫時(shí)經(jīng)常用到嵌套if語句。使用嵌套if語句時(shí),需要記住的要點(diǎn)為:一個(gè)if語句只能對(duì)應(yīng)一個(gè)else語句;一個(gè)else語句總是對(duì)應(yīng)著和它在同一塊中最近的if語句。C#語言基礎(chǔ)--程序流程控制inta=1,b=2,c=3;if(a<b){if(b<c){a=0;}else{a=-1;}}C#語言基礎(chǔ)--程序流程控制嵌套的if語句可以組成if…elseif…else語句群。基本原則是:如果else語句的嵌入語句(塊)只是一個(gè)if…else語句,那么else就能與嵌入的if組合成一個(gè)elseif語句,形式如下:if(布爾表達(dá)式)
【語句塊】else{If(布爾表達(dá)式)【語句塊】else{if(布爾表達(dá)式)【語句塊】else【語句塊】}}C#語言基礎(chǔ)--程序流程控制if(布爾表達(dá)式)
【語句塊】elseif(布爾表達(dá)式)
【語句塊】elseif(布爾表達(dá)式)
【語句塊】else【語句塊】
在if…elseif…else語句群中,布爾表達(dá)式從上到下求值,一旦找到真的條件,就執(zhí)行與它關(guān)聯(lián)的語句,該階梯的其它部分就被忽略。若所有條件都不為真,就執(zhí)行最后的else語句。若沒有最后的else語句,而其它所有的條件都為假,程序?qū)⒉蛔鋈魏尾僮?。If…elseif…else語句群,只可能有一個(gè)嵌入語句塊被執(zhí)行。C#語言基礎(chǔ)--程序流程控制2switch語句
switch語句為多路(分支)選擇語句,它根據(jù)表達(dá)式的值來使程序從多個(gè)分支中選擇一個(gè)分支來執(zhí)行,switch語句的基本格式如下:switch(【表達(dá)式】){case【常量表達(dá)式】:【語句塊】case【常量表達(dá)式】:【語句塊】…case【常量表達(dá)式:
【語句塊】default:【語句塊】}C#語言基礎(chǔ)--程序流程控制在case標(biāo)簽的【語句塊】的末尾必須使用break語句,當(dāng)遇到一個(gè)break語句時(shí),程序?qū)⑻^switch語句中的其它標(biāo)簽,而直接跳到整個(gè)switch語句后的第一個(gè)語句。switch語句的執(zhí)行規(guī)則如下:計(jì)算switch語句中【表達(dá)式】的值,并將其轉(zhuǎn)換為switch語句規(guī)定的類型。若在switch語句的case標(biāo)簽中,有一個(gè)指定的常量恰好等于switch表達(dá)式的值,則程序?qū)⑥D(zhuǎn)到匹配case標(biāo)簽后的【語句塊】。若switch語句的所有case標(biāo)簽指定的常量都不等于switch中【表達(dá)式】的值,且switch語句中存在一個(gè)default標(biāo)簽,則程序?qū)⑥D(zhuǎn)到default標(biāo)簽后的【語句塊】。若switch語句的所有case標(biāo)簽指定的常量都不等于C#語言基礎(chǔ)--程序流程控制
switch中【表達(dá)式】的值,且switch語句中不存在default標(biāo)簽,則程序?qū)⑥D(zhuǎn)到整個(gè)switch語句后的第一語句。在很多情況下,switch語句可以簡化if…else語句,提高程序執(zhí)行效率。下面使用switch語句簡化前面判斷月份所屬季節(jié)的程序。
舉例:C#語言基礎(chǔ)--程序流程控制1.5.2循環(huán)語句循環(huán)語句使一個(gè)語句(塊)重復(fù)執(zhí)行,直到滿足結(jié)束條件為止。循環(huán)語句又叫做迭代語句,在C#中定義的循環(huán)語句包括:while、do…while、for和foreach語句。1while語句
while語句用于根據(jù)條件值執(zhí)行一個(gè)嵌入語句(塊)零次或多次。基本格式為:while(【布爾表達(dá)式】)【嵌入語句塊】while語句按如下規(guī)則執(zhí)行:計(jì)算【布爾表達(dá)式】的值。若表達(dá)式的值為true,程序?qū)⑥D(zhuǎn)到嵌入語句。當(dāng)程序執(zhí)行到嵌入語句的結(jié)束點(diǎn)(嵌入語句塊的結(jié)束或遇到C#語言基礎(chǔ)--程序流程控制continue語句)時(shí),控制將轉(zhuǎn)到while語句的開頭。若【布爾表達(dá)式】的值為true,這繼續(xù)執(zhí)行【嵌入語句塊】;否則,轉(zhuǎn)到while語句的結(jié)束點(diǎn),結(jié)束循環(huán)。當(dāng)嵌入語句塊包含多條語句時(shí),必須用{}將它們括起來。在while語句的嵌入語句(塊)內(nèi),break語句可用于將控制轉(zhuǎn)到while語句的結(jié)束點(diǎn),跳出循環(huán)。ontinue語句可將控制直接轉(zhuǎn)到下一次循環(huán)。C#語言基礎(chǔ)--程序流程控制StringBuilder
strV=newStringBuilder("");//定義一個(gè)可變字符串對(duì)象inti=0,count=100;while(i<count){i++;if(i>20)break;//若i大于20終止循環(huán)
if(i%2==0)continue;//若i為偶數(shù)則轉(zhuǎn)入下次循環(huán)
strV.Append(i.ToString()+"");//將奇數(shù)添加到可變字符串對(duì)象的末尾}textBox1.Text=strV.ToString();//在文本框中顯示奇數(shù)列表C#語言基礎(chǔ)--程序流程控制
2do…while語句
do…while語句與while語句相似,但它的判斷條件在循環(huán)后,這樣可以確保至少執(zhí)行循環(huán)體一次。do…while語句的基本格式為:do{【語句塊】}while(【布爾表達(dá)式】)
do…while語句的執(zhí)行規(guī)則如下為:控制轉(zhuǎn)到【語句塊】;當(dāng)控制到達(dá)【語句塊】的結(jié)束點(diǎn)(也有可能是通過執(zhí)行一個(gè)continue語句)時(shí),計(jì)算【布爾表達(dá)式】的值,若其值為true,則轉(zhuǎn)到do語句的開頭;否則,控制轉(zhuǎn)到do語句的結(jié)束點(diǎn),結(jié)束循環(huán)。請(qǐng)同學(xué)們聯(lián)系P35頁上的菜單程序。C#語言基礎(chǔ)--程序流程控制3for語句
for語句計(jì)算一個(gè)初始化表達(dá)式序列,然后判斷一個(gè)條件表達(dá)式的值是否為true,若為true,則重復(fù)執(zhí)行嵌套語句塊,并計(jì)算一個(gè)迭代表達(dá)式序列;若為false,則終止循環(huán),退出for語句。for語句的基本形式為:for(【初始化表達(dá)式】;【條件表達(dá)式】;【迭代表達(dá)式】){【嵌入語句塊】}【初始化表達(dá)式】由一個(gè)局部變量申明或由一個(gè)逗號(hào)分隔的表達(dá)式列表組成。【初始化表達(dá)式】申明的局部變量的作用域從變量的聲明開始,一直到嵌入語句塊的結(jié)束?!緱l件表達(dá)式】若存在,必須是布爾表達(dá)式,【迭代表達(dá)式】若存在,必須包含一個(gè)用逗號(hào)分隔的表達(dá)式列表。
C#語言基礎(chǔ)--程序流程控制for語句的執(zhí)行規(guī)則如下:若有【初始化表達(dá)式】存在,則按變量初始化設(shè)定項(xiàng)或語句表達(dá)式的編寫順序執(zhí)行它們,此步驟只執(zhí)行一次。若存在【條件表達(dá)式】,則計(jì)算它的值。若計(jì)算結(jié)果為true或不存在【條件表達(dá)式】,控制轉(zhuǎn)到嵌入語句塊,若控制到達(dá)嵌入語句塊的結(jié)束點(diǎn)(可能通過執(zhí)行一個(gè)continue語句)時(shí),則按順序執(zhí)行【迭代表達(dá)式】,然后從上述步驟中的計(jì)算【條件表達(dá)式】開始,執(zhí)行另一次循環(huán)。若存在【條件表達(dá)式】,且計(jì)算結(jié)果為false,控制將轉(zhuǎn)到for語句的結(jié)束點(diǎn)。C#語言基礎(chǔ)--程序流程控制下面三個(gè)for語句的功能完全相同:stringstrV1=string.Empty;//第一個(gè)for語句
for(inti=0;i<10;i++){strV1=strV1+i.ToString()+"";}textBox1.Text=strV1;stringstrV1=string.Empty;//第二個(gè)for語句
inti=0;for(;i<10;){strV1=strV1+i.ToString()+"";i++;}textBox1.Text=strV1;
C#語言基礎(chǔ)--程序流程控制
stringstrV1=string.Empty;//第三個(gè)for語句
inti=0;for(;;){if(i>=10)break;strV1=strV1+i.ToString()+"";i++;}textBox1.Text=strV1;
在for語句的嵌套語句塊內(nèi),break語句用于直接終止循環(huán),而continue語句則用于開始下一次循環(huán)。C#語言基礎(chǔ)--程序流程控制下面的代碼用于顯示小于10的奇數(shù):
stringstrV1=string.Empty;for(inti=0;;i++){if(i>=10)break;//直接終止循環(huán)
if(i%2==0)continue;//開始下一次循環(huán)
strV1=strV1+i.ToString()+"";}textBox1.Text=strV1;C#語言基礎(chǔ)--程序流程控制下面的代碼使用了兩重for循環(huán),實(shí)現(xiàn)冒泡(升冪)排序。int[]items={1,10,8,5,-10,18,231,35,66,9};//定義需要排序的數(shù)組
for(inti=1;i<items.Length;i++){for(intj=items.Length-1;j>=i;j--){//若不符合排序要求,則交換相鄰的兩個(gè)數(shù)
if(items[j-1]>items[j]){
inttemp=items[j-1];
items[j-1]=items[j];
items[j]=temp;}}}C#語言基礎(chǔ)--程序流程控制stringstrV=string.Empty;for(inti=0;i<items.Length;i++)
strV=strV+items[i].ToString()+"";textBox1.Text=strV;下面的方法也實(shí)現(xiàn)相同的功能,請(qǐng)加以比較:int[]items={1,10,8,5,-10,18,231,35,66,9};for(inti=0;i<items.Length-1;i++){for(intj=i+1;j<items.Length;j++){//若不符合排序要求,則交換相鄰的兩個(gè)數(shù)
if(items[i]>items[j]){
inttemp=items[i];
items[i]=items[j];
items[j]=temp;}
C#語言基礎(chǔ)--程序流程控制}}stringstrV=string.Empty;for(inti=0;i<items.Length;i++)
strV=strV+items[i].ToString()+"";textBox1.Text=strV;4foreach語句
foreach用于列舉一個(gè)集合的元素,并對(duì)該集合中的每個(gè)元素執(zhí)行一次嵌入語句(塊)。foreach的形式為:foreach(【類型】【迭代變量名】in【集合類型表達(dá)式】){【嵌入語句】}
【類型】和【迭代變量名】用于聲明迭代變量,迭代變量是作用域范圍覆蓋整個(gè)嵌入語句塊的局部變量。C#語言基礎(chǔ)--程序流程控制在foreach語句的執(zhí)行期間,迭代變量表示當(dāng)前正在為其執(zhí)行迭代的集合元素,若嵌入語句試圖修改迭代變量,將會(huì)發(fā)生編譯錯(cuò)誤。foreach語句的【集合類型表達(dá)式】必須有一個(gè)從該集合的元素類型到迭代變量類型的顯示轉(zhuǎn)換。若【集合類型表達(dá)式】的值為null,則會(huì)出現(xiàn)異常。
System.Array類型是集合類型,因所有的數(shù)組類型都是從System.Array派生,所以foreach語句中允許使用數(shù)組類型表達(dá)式。foreach語句按如下順序遍歷數(shù)組元素:對(duì)一維數(shù)組按遞增的索引順序遍歷元素,即從0開始索引,到索引Length-1結(jié)束。對(duì)多維數(shù)組的遍歷方式為,首先遞增最右邊維度的索引,然后是它的左邊緊鄰的維度,依次類推,直到最左邊的那個(gè)維度。C#語言基礎(chǔ)--程序流程控制1.5.3跳轉(zhuǎn)語句
跳轉(zhuǎn)語句用于無條件地轉(zhuǎn)移控制,跳轉(zhuǎn)語句會(huì)將控制轉(zhuǎn)到某個(gè)位置,該位置稱為跳轉(zhuǎn)語句的目標(biāo)。當(dāng)一個(gè)跳轉(zhuǎn)語句出現(xiàn)在某個(gè)語句塊內(nèi),而跳轉(zhuǎn)語句的目標(biāo)卻在語句塊之外,就稱該跳轉(zhuǎn)語句退出該語句塊。在C#中定義的跳轉(zhuǎn)語句主要包括break語句、continue語句、goto語句和return語句。1break語句
break語句只能用在switch、while、do…while、for或foreach語句內(nèi),用來退出它所在的switch、while、do…while、for和foreach語句。當(dāng)有多個(gè)switch、while、do…while、for或foreach語句彼此嵌套時(shí),break語句只能退出直接包含它的語句,若要穿越多個(gè)嵌套層,直接轉(zhuǎn)移控制,則必須使用goto語句。C#語言基礎(chǔ)--程序流程控制stringstrAdd=string.Empty;stringstrV=string.Empty;for(inti=0;i<3;i++){for(intj=0;j<100;j++){if(j==10)break;
strAdd=strAdd+j.ToString()+"";}
strV=strV+"第"+i.ToString()+"遍:"+strAdd+"\r\n";
strAdd=string.Empty;}textBox1.Text=strV;
分析上述程序可以看出,內(nèi)層循環(huán)的break語句僅僅終止了內(nèi)層循環(huán),并未影響外部循環(huán)。C#語言基礎(chǔ)--程序流程控制2continue語句
continue語句只能用于while、do、for或foreach語句的嵌入語句塊內(nèi),用來忽略循環(huán)語句塊內(nèi)位于它后面的代碼,直接開始一次新的循環(huán)。當(dāng)有多個(gè)while、do、for或foreach語句彼此嵌套時(shí),continue語句只能使直接包含它的循環(huán)語句直接開始一次新的循環(huán)。C#語言基礎(chǔ)--程序流程控制
stringstrAdd=string.Empty;stringstrV=string.Empty;for(inti=0;i<3;i++){for(intj=0;j<20;j++){if(j%2==0)continue;
strAdd=strAdd+j.ToString()+"";}
strV=strV+"第"+i.ToString()+"遍:"+strAdd+"\r\n";
strAdd=string.Empty;}textBox1.Text=strV;C#語言基礎(chǔ)--程序流程控制
3return語句
return語句將控制返回到使用return語句的方法(函數(shù)成員)的調(diào)用方。若方法有返回類型,return語句必須返回這個(gè)類型的值;若沒有返回類型,則應(yīng)使用沒有表達(dá)式的return語句。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Collections;namespaceAppDes1{publicpartialclassForm1:Form//類C#語言基礎(chǔ)--程序流程控制
{publicForm1(){
InitializeComponent();}//創(chuàng)建一個(gè)string類型的靜態(tài)方法
staticstringMyStr(string
str){stringstrOut;
strOut="您輸入的數(shù)據(jù)是:"+str;returnstrOut;}privatevoidbutton1_Click(objectsender,EventArgse){//在按鈕單擊事件中調(diào)用此方法
stringstrV=textBox1.Text;//獲取用戶輸入文本框中的內(nèi)容
stringstrOut=MyStr(strV);
MessageBox.Show(strOut,"信息提示");//顯示調(diào)用結(jié)果
}}}
4goto語句
goto語句用于將控制轉(zhuǎn)到由標(biāo)簽標(biāo)記的語句。標(biāo)簽包括switch語句中的case標(biāo)簽和default標(biāo)簽,以及標(biāo)記語句所聲明的標(biāo)簽。標(biāo)簽語句的形式為:【標(biāo)簽】:【語句】它聲明了一個(gè)名為【標(biāo)簽】的標(biāo)簽。標(biāo)簽的作用域?yàn)槁暶魉恼麄€(gè)語句塊,包括其中的嵌套塊,兩個(gè)同名標(biāo)簽的作用域如果重疊,將產(chǎn)生編譯錯(cuò)誤。goto語句的三種形式如下:goto【標(biāo)簽】,其目標(biāo)是具有給定標(biāo)簽的標(biāo)記語句。gotocase【參數(shù)表達(dá)式】,其目標(biāo)是它所在的switch語句的某個(gè)語句列表,此列表包含一個(gè)具有給定常數(shù)值的case標(biāo)簽。C#語言基礎(chǔ)--程序流程控制
gotodefault,其目標(biāo)是它所在switch語句中的default標(biāo)簽。在進(jìn)行實(shí)際編程時(shí),應(yīng)盡量避免使用goto語句,它會(huì)破壞程序結(jié)構(gòu),使程序調(diào)試變得困難。C#語言基礎(chǔ)--程序流程控制1.6
數(shù)組和集合
數(shù)組(array)是一種包含相同若干變量的數(shù)據(jù)結(jié)構(gòu),可通過計(jì)算索引來訪問這些變量。數(shù)組中包含的變量叫做數(shù)組的元素(element),數(shù)組的元素具有相同的類型,該類型稱為數(shù)組的元素類型。數(shù)組類型為其元素類型后加上一對(duì)中括號(hào)[]組成。如int型數(shù)組表示為int[],string型數(shù)組表示為string[]。
數(shù)組的秩用于確定和每個(gè)數(shù)組元素關(guān)聯(lián)的索引個(gè)數(shù)。數(shù)組的秩又稱為數(shù)組的維度,秩為1的數(shù)組稱為一維數(shù)組(singledemensionarray)。秩大于1的數(shù)組稱為多維數(shù)組(multi-dimensionarray),如二維數(shù)組和三維數(shù)組等。C#語言基礎(chǔ)--數(shù)組和集合
數(shù)組的每個(gè)維度都有一個(gè)關(guān)聯(lián)的長度。維度的長度只與數(shù)組類型的實(shí)例相關(guān)聯(lián),它是在創(chuàng)建實(shí)例時(shí)確定的。維度的長度確定了維度索引的有效范圍,如長度為n的維度,其索引范圍為0到n-1。數(shù)組中元素的總數(shù)是數(shù)組中各維度長度的乘積。數(shù)組類型為引用類型,數(shù)組變量的聲明只是為數(shù)組實(shí)例的引用留出空間。實(shí)際的數(shù)組實(shí)例在運(yùn)行時(shí)用new運(yùn)算符動(dòng)態(tài)創(chuàng)建。new運(yùn)算符指定新數(shù)組實(shí)例的長度(length),它在該實(shí)例的生存周期內(nèi)是固定不變的。數(shù)組元素的索引范圍從0到length-1,new運(yùn)算符自動(dòng)將數(shù)組的元素默認(rèn)為它們的初始值,如將所有的值類型初始化為0,將所有的引用類型初始化為null??梢允褂迷卦L問運(yùn)算符[]來訪問數(shù)組元素,如設(shè)A為整型數(shù)組,A[1]就是該數(shù)組的第2個(gè)元素。C#語言基礎(chǔ)--數(shù)組和集合
數(shù)組是通過指定數(shù)組的元素類型、數(shù)組的秩和數(shù)組中每個(gè)維度的上下限來定義的。1.6.1
一維數(shù)組的聲明和使用1一維數(shù)組的聲明一維數(shù)組的聲明語法如下:
type[]arrayName;
type為數(shù)組中存儲(chǔ)元素的類型,arrayName為數(shù)組名。int[]arr;//聲明了一個(gè)名為arr的整型一維數(shù)組。在聲明數(shù)組時(shí),數(shù)組的長度不是聲明的一部分,數(shù)組必須在訪問前初始化,數(shù)組的類型可以是基本數(shù)據(jù)類型,也可以是枚舉或其它類型。
int[]arr=newint[5];//聲明了一個(gè)名為arr且長度為5的整型數(shù)組,數(shù)組中的每個(gè)元素被初始化為0.C#語言基礎(chǔ)--數(shù)組和集合數(shù)組對(duì)象一旦被創(chuàng)建(聲明),就可以利用其提供的諸多屬性和方法??梢岳肔ength屬性獲得數(shù)組對(duì)象允許存儲(chǔ)的容量值,Rank屬性用于返回?cái)?shù)組的秩(維數(shù)),用GetLowerBound方法返回?cái)?shù)組對(duì)象的第一個(gè)索引值,該值一律被置為0,GetUpperBound方法則用于返回?cái)?shù)組對(duì)象的最后一個(gè)索引值。GetLowerBound和GetUpperBound方法均接受一個(gè)參數(shù),這個(gè)參數(shù)指定返回的結(jié)果是屬于哪個(gè)維度的數(shù)組,對(duì)一維數(shù)組輸入?yún)?shù)為0。2一維數(shù)組的使用
在需要存儲(chǔ)多個(gè)值時(shí),可以使用一維數(shù)組,可以使用foreach語句或數(shù)組的下標(biāo)訪問數(shù)組中各元素的值。下面的示例代碼是定義一個(gè)一維數(shù)組,并用foreach語句顯示數(shù)組的內(nèi)容。C#語言基礎(chǔ)--數(shù)組和集合string[]arrStr={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};stringstrV=string.Empty;
foreach(stringstrinarrStr){
strV=strV+str+"";}textBox1.Text=strV;1.6.2
二維數(shù)組的聲明和使用1二維數(shù)組的聲明
二維數(shù)組的聲明語法如下:
Type[,]arrayName;
type為數(shù)組中存儲(chǔ)元素的類型,arrayName為數(shù)組名。下面舉例說明二維數(shù)組的聲明方法。
int[,]arr=newint[2,2];//聲明一個(gè)兩行兩列的整形數(shù)組C#語言基礎(chǔ)--數(shù)組和集合
int[,]arrV1=newint[2,2]{{1,2},{3,4}};//利用new關(guān)鍵字二維數(shù)組的默認(rèn)值
double[,]arrV2=newdouble[,]{{124.234,12.012,56.231},{0.123,18.345,22.334}};//在初始化時(shí),不指定行數(shù)和列數(shù),由編譯器根據(jù)初始值的數(shù)量來自動(dòng)計(jì)算數(shù)組的行數(shù)和列數(shù)
2二維數(shù)組的使用以下是一個(gè)4行和4列的二維數(shù)組,二維數(shù)組按行排列數(shù)組元素。[0,0][0,1][0,2][0,3][1,0][1,1][1,2][1,3][2,0][2,1][2,2][2,3][3,0][3,1][3,2][3,3]C#語言基礎(chǔ)--數(shù)組和集合下面的示例代碼定義了一個(gè)二維數(shù)組,并使用Rank屬性和GetUpperBound方法,獲取數(shù)組行和列的元素個(gè)數(shù),通過遍歷數(shù)組,以輸出其元素。//定義雙精度二維數(shù)組double[,]arrV2=newdouble[,]{{124.234,12.012,56.231,123.011},{129.123,18.345,22.334,589.342}};int
numRank=arrV2.Rank;//獲取數(shù)組的維數(shù)int
numRow=arrV2.GetUpperBound(numRank-2)+1;//獲取總行數(shù)int
numCol=arrV2.GetUpperBound(numRank-1)+1;//獲取總列數(shù)stringstrV1=string.Empty;C#語言基礎(chǔ)--數(shù)組和集合//定義雙精度二維數(shù)組double[,]arrV2=newdouble[,]{{124.234,12.012,56.231,123.011},{129.123,18.345,22.334,589.342}};int
numRank=arrV2.Rank;//獲取數(shù)組的維數(shù)int
numRow=arrV2.GetUpperBound(numRank-2)+1;//獲取總行數(shù)int
numCol=arrV2.GetUpperBound(numRank-1)+1;//獲取總列數(shù)stringstrV1=string.Empty;C#語言基礎(chǔ)--數(shù)組和集合1.6.3三維數(shù)組的聲明和使用
三維數(shù)組的聲明語法格式如下:
type[,,]arrayName;type為數(shù)組中存儲(chǔ)元素的類型,arrayName為數(shù)組名。下面的語句用于初始化一個(gè)三維數(shù)組。
double[,,]arrV2=newdouble[,,]{{{124.234,12.012,56.231,123.011},{129.123,18.345,22.334,589.342}},{{124.234,12.012,56.231,123.011},{129.123,18.345,22.334,589.342}}};
對(duì)三維數(shù)組,可通過Rank屬性和GetUpperBound方法獲取其頁面數(shù)、行數(shù)和列數(shù)。設(shè)有一個(gè)名為arrV2的三維數(shù)組,其頁面數(shù)、行數(shù)和列數(shù)分別為:numPage=arrV2.GetUpperBound(numRank-3)+1;//獲取總頁面數(shù)C#語言基礎(chǔ)--數(shù)組和集合numRow=arrV2.GetUpperBound(numRank-2)+1;//獲取總行數(shù)numCol=arrV2.GetUpperBound(numRank-1)+1;//獲取總列數(shù)下面的示例代碼將三維數(shù)組arrV2中的元素分按頁面進(jìn)行顯示。
//定義雙精度三維數(shù)組
double[,,]arrV2=newdouble[,,]{{{124.234,12.012,56.231,123.011},{129.123,18.345,22.334,589.342}},{{124.234,12.012,56.231,123.011},{129.123,18.345,22.334,589.342}}};
int
numRank=arrV2.Rank;//獲取數(shù)組的維數(shù)
int
numPage=arrV2.GetUpperBound(numRank-3)+1;//獲取總頁面數(shù)C#語言基礎(chǔ)--數(shù)組和集合int
numRow=arrV2.GetUpperBound(numRank-2)+1;//獲取總行數(shù)
int
numCol=arrV2.GetUpperBound(numRank-1)+1;//獲取總列數(shù)
stringstrV1=string.Empty;for(intk=0;k<numPage;k++){for(inti=0;i<numRow;i++){for(intj=0;j<numCol;j++){strV1=strV1+arrV2[k,i,j].ToString()+"";}strV1=strV1+"\r\n";//對(duì)二維數(shù)組的每行進(jìn)行換行顯示
}}textBox1.Text=strV1;C#語言基礎(chǔ)--數(shù)組和集合
在聲明數(shù)組時(shí),數(shù)組的元素可以是任意類型,包括數(shù)組類型。元素類型為數(shù)組類型的數(shù)組叫做交錯(cuò)數(shù)組(jaggedarray,也稱為鋸齒形數(shù)組)。交錯(cuò)數(shù)組的元素?cái)?shù)組的長度不必完全相同。下面的示例說明由一個(gè)int數(shù)組組成的交錯(cuò)數(shù)組。
int[][]arrA=newint[3][];//創(chuàng)建包含三個(gè)元素的數(shù)組,每個(gè)元素的類型為int[],并設(shè)定其初始值為nullarrA[0]=newint[10];//初始化第1個(gè)元素
arrA[1]=newint[5];//初始化第2個(gè)元素arrA[2]=newint[15];//初始化第3個(gè)元素
聲明交錯(cuò)數(shù)組,必須使用兩個(gè)[]運(yùn)算符,并且只需指定其行數(shù)。因每行的長度不同,在對(duì)象被創(chuàng)建后,應(yīng)根據(jù)具體需要一一指定每一行的長度。在初始化數(shù)組時(shí),數(shù)組的維度容量可以用變量和表達(dá)式描述,但變量和表達(dá)式必須要有確定的數(shù)值。C#語言基礎(chǔ)--數(shù)組和集合真正的動(dòng)態(tài)數(shù)組,是指可以在已經(jīng)定義數(shù)組維數(shù)的基礎(chǔ)上動(dòng)態(tài)改變數(shù)組維數(shù)的大小。而數(shù)組中已經(jīng)存儲(chǔ)的數(shù)組元素的值可以保持不變。如:
double[]dblArr=null;
dblArr=newdouble[10];
array.resize(refdblArr,dblArr.length+100);//動(dòng)態(tài)改變數(shù)組大小。1.6.4
數(shù)組的方法和屬性
在C#中數(shù)組是由System.Array類派生而來的引用對(duì)象,可以使用Array類中的各種屬性和方法對(duì)數(shù)組進(jìn)行操作,數(shù)組繼承的方法和屬性如表1.6.1所示。對(duì)數(shù)組的操作可以分為靜態(tài)操作和動(dòng)態(tài)操作,靜態(tài)操作包括查詢、遍歷、復(fù)制和排序等,動(dòng)態(tài)操作包括插入、刪除、合并和拆分等。C#語言基礎(chǔ)--數(shù)組和集合
下面通過舉例說明操作數(shù)組的常用方法。靜態(tài)方法IndexOf和LastIndexOf可以用來搜索數(shù)組中的元素,如下面的示例代碼:
string[]strArr=newstring[]{"方形樣地","菱形樣地","方形樣地","圓形樣地","角規(guī)樣地","無樣地觀測(cè)"};//查找方形樣地第一出現(xiàn)的索引號(hào)
intnumV1=Array.IndexOf(strArr,"方形樣地");
intnumV2=Array.LastIndexOf(strArr,"方形樣地");//結(jié)果顯示
stringstrV="方形樣地首次出現(xiàn)的索引號(hào)為:"+numV1.ToString();
strV+="\r\n";
strV=strV+"方形樣地最后出現(xiàn)的索引號(hào)為:"+numV2.ToString();textBox1.Text=strV;C#語言基礎(chǔ)--數(shù)組和集合
數(shù)組遍歷一般使用foreach語句進(jìn)行,數(shù)組元素的排序,除前面介紹過的冒泡排序法外,還可以表1.6.1中的Sort方法和Reverse方法進(jìn)行,如下面的示例代碼:
int[]arrA=newint[]{3,9,12,-23,0,1,12,33};stringstrV=string.Empty;
Array.Sort(arrA);//進(jìn)行升冪排序foreach(int
intVinarrA)strV=strV+intV.ToString()+"";strV=strV+"\r\n";Array.Reverse(arrA);//反轉(zhuǎn)排序結(jié)果foreach(int
intVinarrA)strV=strV+intV.ToString()+"";textBox1.Text=strV;C#語言基礎(chǔ)--數(shù)組和集合
Copy方法可以進(jìn)行數(shù)組的全部或部分復(fù)制,對(duì)一維數(shù)組還可以使用實(shí)例方法CopyTo進(jìn)行賦值,如下面的示例代碼所示:
//數(shù)組元素復(fù)制
int[,]arr=newint[3,2];//給數(shù)組元素賦初值
for(inti=0;i<arr.GetLength(0);i++){for(intj=0;j<arr.GetLength(1);j++)
arr[i,j]=i*j;}
int[,]newArr1=newint[3,2];
int[,]newArr2=newint[2,2];
Array.Copy(arr,newArr1,arr.Length);//完全復(fù)制
Array.Copy(arr,0,newArr2,0,newArr2.Length);//部分復(fù)制C#語言基礎(chǔ)--數(shù)組和集合
//對(duì)一維數(shù)組使用CopyTo進(jìn)行復(fù)制
int[]arrA1=newint[8];for(inti=0;i<arrA1.Length;i++)arrA1[i]=i*i+2;
int[]newarrA=newint[10];arrA1.CopyTo(newarrA,2);//使用實(shí)例方法復(fù)制
數(shù)組的合并和拆分在很多情況下都會(huì)用到,在對(duì)數(shù)組進(jìn)行這兩項(xiàng)操作時(shí),拆分和合并后的數(shù)組類型應(yīng)一致??梢詫⒍鄠€(gè)一維數(shù)組合并為一個(gè)一維數(shù)組、二維數(shù)組或多維數(shù)組;也可以將一個(gè)一維數(shù)組拆分成多個(gè)一維數(shù)組,或是將多維數(shù)組拆分為多個(gè)一維數(shù)組或多維數(shù)組。請(qǐng)同學(xué)們?cè)囼?yàn)下面的代碼。C#語言基礎(chǔ)--數(shù)組和集合
//將兩個(gè)一維數(shù)組合并的舉例
int[]arr1=newint[]{12,34,15,28};
int[]arr2=newint[]{6,9,10,18};
int
numN=arr1.Length+arr2.Length;
int[]arr3=newint[numN];//定義新數(shù)組,以便合并兩個(gè)一維數(shù)組
for(inti=0;i<numN;i++){if(i<arr1.Length)arr3[i]=arr1[i];elsearr3[i]=arr2[i-arr1.Length];}//定義一個(gè)需要合并的二維數(shù)組
int[,]arr4=newint[2,arr1.Length];for(inti=0;i<arr4.Rank;i++)C#語言基礎(chǔ)--數(shù)組和集合
{switch(i){case0:{for(intj=0;j<arr1.Length;j++)arr4[i,j]=arr1[j];break;}case1:{for(intj=0;j<arr2.Length;j++)arr4[i,j]=arr2[j];break;}}}C#語言基礎(chǔ)--數(shù)組和集合//顯示合并后的數(shù)組元素
stringstrV="合并后的一維數(shù)組為:\r\n";foreach(int
intVinarr3)
strV=strV+intV.ToString()+"";
strV=strV+"\r\n"+"合并后的二維數(shù)組為:\r\n";stringstrV1=string.Empty;
int
numRow=arr4.GetUpperBound(arr4.Rank-2)+1;
int
numCol=arr4.GetUpperBound(arr4.Rank-1)+1;for(inti=0;i<numRow;i++){for(intj=0;j<numCol;j++)strV1=strV1+arr4[i,j].ToString()+"";strV1=strV1+"\r\n";//分行顯示
}
strV+=strV1;textBox1.Text=strV;C#語言基礎(chǔ)--數(shù)組和集合
//將二維數(shù)組拆分為兩個(gè)一維數(shù)組的舉例
int[,]arr1=newint[,]{{12,34,15,28},{6,9,10,18}};
int
numRow=arr1.GetUpperBound(arr1.Rank-2)+1;
int
numCol=arr1.GetUpperBound(arr1.Rank-1)+1;
int[]arr2=newint[numCol];//定義拆分后的一維數(shù)組
int[]arr3=newint[numCol];
for(inti=0;i<numRow;i++){for(intj=0;j<numCol;j++){switch(i){case0:arr2[j]=arr1[i,j];break;C#語言基礎(chǔ)--數(shù)組和集合
case1:arr3[j]=arr1[i,j];break;default:break;}}}//拆分后的數(shù)組元素顯示
stringstrV="拆分后的第一個(gè)數(shù)組元素:\r\n";
foreach(int
intVinarr2)
strV=strV+intV.ToString()+"";
strV=strV+"\r\n"+"拆分后的第二數(shù)組元素:\r\n";
foreach(int
intVinarr3)
strV=strV+intV.ToString()+"";textBox1.Text=strV;C#語言基礎(chǔ)--數(shù)組和集合1.6.5
CreateInstance方法
C#數(shù)組默認(rèn)的下限都是0,但System.Array提供了一個(gè)靜態(tài)方法CreatInstance,可以用來動(dòng)態(tài)創(chuàng)建數(shù)組,也可以創(chuàng)建下限不為0的數(shù)組和重新聲明數(shù)組的大小。下面的示例代碼說明如何創(chuàng)建下限不為0的數(shù)組。
int[]arrLens=newint[2]{3,5};
int[]arrBound=newint[2]{2,3};//創(chuàng)建二維string類型數(shù)組,第一維長度為3,第二維長度為5//第一維元素索引從2開始計(jì)數(shù);第二維索引從3開始計(jì)數(shù)
string[,]array=(string[,])Array.CreateInstance(typeof(String),arrLens,arrBound);//給二維數(shù)組array賦初值
for(inti=array.GetLowerBound(0);i<=array.GetUpperBound(0);i++)C#語言基礎(chǔ)--數(shù)組和集合{for(intj=array.GetLowerBound(1);j<=array.GetUpperBound(1);j++){
int[]myIndiceArray=newint[2]{i,j};
array.SetValue(Convert.ToString(i)+j,myIndiceArray);}}//顯示數(shù)組中的元素
stringstrV="數(shù)組元素為:\r\n";for(inti=array.GetLowerBound(0);i<=array.GetUpperBound(0);i++){for(intj=array.GetLowerBound(1);j<=array.GetUpperBound(1);j++)C#語言基礎(chǔ)--數(shù)組和集合
strV=strV+array[i,j]+"";
strV+="\r\n";}textBox1.Text=strV;
下面的示例代碼說明用CreateInstance動(dòng)態(tài)地創(chuàng)建在編譯時(shí)不知道元素類型和數(shù)組維數(shù)的數(shù)組,包括利用該方法重新定義數(shù)組的大小。
C#語言基礎(chǔ)--數(shù)組和集合//創(chuàng)建一個(gè)string類型的靜態(tài)方法
staticArrayReDim(Array
arr,int
newSize){//動(dòng)態(tài)創(chuàng)建指定大小的數(shù)組,用GetElementType來獲取數(shù)組元素類型
Arrayna=Array.CreateInstance(arr.GetType().GetElementType(),newSize);
int
len=newSize;if(newSize>arr.Length)
len=arr.Length;
Array.Copy(arr,0,na,0,len);//將原數(shù)組中的元素拷貝到新數(shù)組中
returnna;}C#語言基礎(chǔ)--數(shù)組和集合
privatevoidbutton1_Click(objectsender,EventArgse){stringstrV=string.Empty;
int[]arrA=newint[]{10,6,9,12,18,22};//動(dòng)態(tài)改變數(shù)組的長度
arrA=(int[])ReDim(arrA,arrA.Length+5);
strV="改變后的數(shù)組元素為:\r\n";
foreach(int
intVinarrA)
strV=strV+intV.ToString()+"";//在動(dòng)態(tài)改變數(shù)組
arrA=(int[])ReDim(arrA,arrA.Length-8);
strV+="\r\n";
strV=strV+"再此改變后的數(shù)組元素為:\r\n";
foreach(int
intVinarrA)
strV=strV+intV.ToString()+"";textBox1.Text=strV;//顯示數(shù)組動(dòng)態(tài)改變后的結(jié)果
}}}1.6.6
集合
System.Collections命名空間中定義了一系列集合類,其中最常用的包括ArrayList、Hashtable、Queue、SortedList和Stack。System.Collections命名空間中定義的大部分集合都是弱類型的,用于存放System.Object的實(shí)例。因.NET框架類型都是直接或間接從System.Object派生出來,任何類型都可顯示轉(zhuǎn)換為System.Object對(duì)象,這些集合類都能存儲(chǔ)任何數(shù)據(jù)類型。C#語言基礎(chǔ)--數(shù)組和集合
數(shù)組的長度是固定的,在聲明數(shù)組時(shí)必須指定。在實(shí)際軟件開發(fā)中使用長度可變的數(shù)組可以提高內(nèi)存的利用率,ArrayList能動(dòng)態(tài)改變數(shù)組的長度。即其大小可按需要進(jìn)行動(dòng)態(tài)增減,ArrayList有如下三種構(gòu)造函數(shù):
ArrayList();//初始化ArrayList類的新實(shí)例,該實(shí)例為空且具有默認(rèn)的初始容量。
ArrayList(ICollection);//初始化ArrayList類的新實(shí)例該實(shí)例包含從指定集合復(fù)制的元素,并且具有與所復(fù)制的元素相同的初始容量。
ArrayList(int32);//初始化ArrayList類的新實(shí)例,該實(shí)例為空,且具有指定的初始容量。
ArrayList類的主要屬性和方法請(qǐng)參閱表1.6.2。C#語言基礎(chǔ)--數(shù)組和集合在操作ArrayList的方法中,Remove、RemoveAt、RemoveRange和Clear都可以用來刪除ArrayList中的元素,當(dāng)元素被刪除后,ArrayList并不會(huì)自動(dòng)釋放內(nèi)存,要釋放內(nèi)存,必須使用TrimToSize方法或通過顯示設(shè)置Capacity屬性減少容量。
在利用Add方法增加元素時(shí),Capacity的值會(huì)隨著增加,因此需要不斷地?cái)U(kuò)展ArrayList的容量并拷貝元素,這樣會(huì)影響程序的效率。為避免這種不利影響,可以使用第三種形式的構(gòu)造函數(shù)來創(chuàng)建ArrayList,并在其中設(shè)定一個(gè)合理的最大容量值,以便提高程序效率,尤其是在元素?cái)?shù)量特別龐大的情況下,這種技巧非常重要。如下面的示例代碼:C#語言基礎(chǔ)--數(shù)組和集合stringstrV=string.Empty;int
bigNum=30000000;DateTimetime1=DateTime.Now;ArrayListall1=newArrayList();//默認(rèn)構(gòu)造函數(shù)for(inti=0;i<bigNum;i++)all1.Add(i);//添加元素,需要?jiǎng)討B(tài)擴(kuò)展ArrayList容量DateTimetime2=DateTime.Now;TimeSpants1=time2.Subtract(time1);doublems1=ts1.TotalMilliseconds;Console.WriteLine(ms1);strV="第一種方法所用時(shí)間為:"+ms1+"毫秒";strV+="\r\n";DateTimetime3=DateTime.Now;ArrayListall2=newArrayList(bigNum);C#語言基礎(chǔ)--數(shù)組和集合for(inti=0;i<bigNum;i++)all2.Add(i);//添加元素,但不需要擴(kuò)展ArrayList容量DateTimetime4=DateTime.Now;TimeSpants2=time4.Subtract(time3);doublems2=ts2.TotalMilliseconds;strV=strV+"第二種方法所用時(shí)間為:"+ms2+"毫秒";textBox1.Text=strV;2Hashtable
Hashtable(離散表)表示鍵/值對(duì)的集合,這些鍵/值根據(jù)鍵的離散列代碼進(jìn)行組織。Hashtable是現(xiàn)在檢索速度最快的數(shù)據(jù)組織方式。Hashtable的主要屬性和方法如表1.6.3所示。C#語言基礎(chǔ)--數(shù)組和集合
Add方法用來將鍵/值對(duì)添加到Hashtable中,及鍵值散列,散列值作為插入表中的索引,用來標(biāo)識(shí)存儲(chǔ)位置。Hashtable鍵不能為空引用,值可以為空引用。Hashtable將添加的元素存放在System.Collections.DictionaryEntry對(duì)象中。使用foreach或者IEnumerator的Current屬性時(shí),都應(yīng)將Hashtable的元素轉(zhuǎn)換為DictionaryEntry對(duì)象??梢允褂面I值作為索引來訪問Hashtable中的元素,當(dāng)檢索值時(shí),鍵再次被散列,并將得到的散列值作為索引來檢索值在表中的位置。
Remove用來刪除一個(gè)元素,Clear用來刪除所有的元素。ContainsKey和ContainsValue分別用來檢查元素的鍵和值是否存在。Hashtable的默認(rèn)初始容量為0,伴隨元素的添加,容量會(huì)通過重新分配自動(dòng)增加。為此會(huì)重新C#語言基礎(chǔ)--數(shù)組和集合計(jì)算表的索引,并將表中的元素復(fù)制到新的位置。與ArrayList的構(gòu)造類似,實(shí)際編程時(shí),最好提供一個(gè)合理的最大容量來構(gòu)造Hashtable對(duì)象。
Hashtable常用的構(gòu)造函數(shù)如下:
Hashtabletable=newHashtable();//默認(rèn)初始容量為0
Hashtabletable=newHashtable(intcapacity);//capacity為Hashtable適合的最大容量下面的示例代碼演示Hashtable的使用方法:
Hashtable
tabHash=newHashtable();tabHash.Add("200601","張艷");tabHash.Add("200602","徐鵬");tabHash.Add("200603","李光太");tabHash.Add("200604","魯班");tabHash.Add("200605","呂偉彰");C#語言基礎(chǔ)--數(shù)組和集合
stringstrV="表中的元素?cái)?shù)量為:\r\n"+tabHash.Count;
strV+="\r\n"+"200604對(duì)應(yīng)的值為:\r\n"+tabHash["200604"];//檢索表中包含的所有元素
strV=strV+"表中包含的所有元素為:";
IEnumerator
eE=tabHash.GetEnumerator();while(eE.MoveNext()){
DictionaryEntryde=(DictionaryEntry)eE.Current;
strV=strV+"\r\n"+de.Key+""+de.Value;}textBox1.Text=strV;
對(duì)Hashtable表,可以使用鍵值作為索引來添加元素,也可以使用Add方法來添加元素,當(dāng)二者有一定區(qū)別。使用Add添加元素,當(dāng)要添加的元素的鍵值在表中存在時(shí),C#語言基礎(chǔ)--數(shù)組和集合
Add方法會(huì)引發(fā)異常,而使用鍵值添加則不會(huì),只是使用新的值代替舊值。
Hashtable
tabHash=newHashtable();tabHash.Add("200601","張艷");tabHash.Add("200602","徐鵬");tabHash.Add("200603","李光太");tabHash.Add("200602","李大為");//會(huì)引發(fā)異常
tabHash[“200602”]=“李大為”;//用鍵值作為索引添加,不會(huì)引發(fā)異常。3Q
溫馨提示
- 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年山東省職教高考《職測(cè)》核心考點(diǎn)必刷必練試題庫(含答案)
- 《鄉(xiāng)村振興促進(jìn)法》參考試題庫80題(含答案)
- 《公務(wù)員法》考試題庫500題(含答案)
- 2025年江蘇農(nóng)林職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫含答案解析
- 預(yù)防與解決勞動(dòng)糾紛
- 人工智能應(yīng)用開發(fā)合同
- 幼兒園紙張活動(dòng)策劃方案模板五篇
- 建筑施工合同管理培訓(xùn).x
- 租賃房屋租賃合同
- 企業(yè)業(yè)務(wù)咨詢服務(wù)簡單合同
- 2023年四川省公務(wù)員錄用考試《行測(cè)》真題卷及答案解析
- 機(jī)電一體化系統(tǒng)設(shè)計(jì)-第5章-特性分析
- 2024尼爾森IQ中國本土快消企業(yè)調(diào)研報(bào)告
- 2024年印度辣椒行業(yè)狀況及未來發(fā)展趨勢(shì)報(bào)告
- 鑄鋁焊接工藝
- 《社區(qū)康復(fù)》課件-第六章 骨關(guān)節(jié)疾病、損傷患者的社區(qū)康復(fù)實(shí)踐
- 2024年湖南省公務(wù)員考試行政職業(yè)能力測(cè)驗(yàn)真題
- 攀巖運(yùn)動(dòng)之繩結(jié)技巧課程
- 防打架毆斗安全教育課件
- 采購行業(yè)的swot分析
- 石家莊長安區(qū)幼兒園信息統(tǒng)計(jì)表
評(píng)論
0/150
提交評(píng)論