下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
4/4二維數(shù)組的定義和引用二維數(shù)組的定義和引用
1.1二維數(shù)組的定義
前面介紹的數(shù)組只有一個下標(biāo),稱為一維數(shù)組,其數(shù)組元素也稱為單下標(biāo)變量。在實(shí)際問題中有很多量是二維的或多維的,因此C語言允許構(gòu)造多維數(shù)組。多維數(shù)組元素有多個下標(biāo),以標(biāo)識它在數(shù)組中的位置,所以也稱為多下標(biāo)變量。本節(jié)只介紹二維數(shù)組,多維數(shù)組可由二維數(shù)組類推而得到。
二維數(shù)組定義的一般形式是:
類型說明符數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]其中常量表達(dá)式1表示第一維下標(biāo)的長度,常量表達(dá)式2表示第二維下標(biāo)的長度。
例如:
inta[3][4];
說明了一個三行四列的數(shù)組,數(shù)組名為a,其下標(biāo)變量的類型為整型。該數(shù)組的下標(biāo)變量共有3×4個,即:
a[0][0],a[0][1],a[0][2],a[0][3]
a[1][0],a[1][1],a[1][2],a[1][3]
a[2][0],a[2][1],a[2][2],a[2][3]
二維數(shù)組在概念上是二維的,即是說其下標(biāo)在兩個方向上變化,下標(biāo)變量在數(shù)組中的位置也處于一個平面之中,而不是象一維數(shù)組只是一個向量。但是,實(shí)際的硬件存儲器卻是連續(xù)編址的,也就是說存儲器單元是按一維線性排列的。如何在一維存儲器中存放二維數(shù)組,可有兩種方式:一種是按行排列,即放完一行之后順次放入第二行。另一種是按列排列,即放完一列之后再順次放入第二列。在C語言中,二維數(shù)組是按行排列的。
即:
先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四個元素也是依次存放。由于數(shù)組a說明為int類型,該類型占四個字節(jié)的內(nèi)存空間,所以每個元素均占有四個字節(jié))。
1.2二維數(shù)組元素的引用
二維數(shù)組的元素也稱為雙下標(biāo)變量,其表示的形式為:數(shù)組名[下標(biāo)][下標(biāo)]
其中下標(biāo)應(yīng)為整型常量或整型表達(dá)式。
例如:
a[3][4]
表示a數(shù)組三行四列的元素。
下標(biāo)變量和數(shù)組說明在形式中有些相似,但這兩者具有完全不同的含義。數(shù)組說明的方括號中給出的是某一維的長度,即可取下標(biāo)的最大值;而數(shù)組元素中的下標(biāo)是該元素在數(shù)組中的位置標(biāo)識。前者只能是常量,后者可以是常量,變量或表達(dá)式?!纠?】一個學(xué)習(xí)小組有5個人,每個人有三門課的考試成績。
再設(shè)一個一維數(shù)組v[3]存放所求得各分科平均成績,設(shè)變量average為全組各科總平均成績。編程如下:
voidmain()
{
inti,j,s=0,average,v[3],a[5][3];
printf("inputscore\n");
for(i=0;i0)printf("st1>st2\n");
if(kst2”。
6.6.測字符串長度函數(shù)strlen
格式:strlen(字符數(shù)組名)
功能:測字符串的實(shí)際長度(不含字符串結(jié)束標(biāo)志…\0?)并作為函數(shù)返回值。
【例12】
#include"string.h"
voidmain()
{intk;
staticcharst[]="Clanguage";
k=strlen(st);
printf("Thelenthofthestringis%d\n",k);
}
小結(jié):
1.數(shù)組是程序設(shè)計(jì)中最常用的數(shù)據(jù)結(jié)構(gòu)。數(shù)組可分為數(shù)值數(shù)組(整數(shù)組,實(shí)數(shù)組),字符數(shù)組以及后面將要介紹的指針數(shù)組,結(jié)構(gòu)數(shù)組等。
2.數(shù)組可以是一維的,二維的或多維的。
3.數(shù)組類型說明由類型說明符、數(shù)組名、數(shù)組長度(數(shù)組元素個數(shù))三部分組成。數(shù)組元素又稱為下標(biāo)變量。數(shù)組的類型是指下標(biāo)變量取值的類型。
4.對數(shù)組的賦值可以用數(shù)組初始化賦值,輸入函數(shù)動態(tài)賦值和賦值語句賦值三種方法實(shí)現(xiàn)。對數(shù)值數(shù)組不能用賦值語句整體賦值、輸入或輸出,而必須用循環(huán)語句逐個對數(shù)組元素進(jìn)行操作。
2.7程序舉例
【例13】把一個整數(shù)按大小順序插入已排好序的數(shù)組中。
為了把一個數(shù)按大小插入已排好序的數(shù)組中,應(yīng)首先確定排
序是從大到小還是從小到大進(jìn)行的。設(shè)排序是從大到小進(jìn)序的,則可把欲插入的數(shù)與數(shù)組中各數(shù)逐個比較,當(dāng)找到第一個比插入數(shù)小的元素i時,該元素之前即為插入位置。然后從數(shù)組最后一個元素開始到該元素為止,逐個后移一個單元。最后把插入數(shù)賦予元素i即可。如果被插入數(shù)比所有的元素值都小則插入最后位置。
voidmain()
{
int
i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;ia[i])
{for(s=9;s>=i;s--)a[s+1]=a[s];
break;}
a[i]=n;
for(i=0;ia[i]時,則由一個內(nèi)循環(huán)把i以下各元素值順次后移一個單元。后移應(yīng)從后向前進(jìn)行(從a[9]開始到a[i]為止)。后移結(jié)束跳出外循環(huán)。插入點(diǎn)為i,把n賦予a[i]即可。如所有的元素均大于被插入數(shù),則并未進(jìn)行過后移工作。此時i=10,結(jié)果是把n賦于a[10]。最后一個循環(huán)輸出插入數(shù)后的數(shù)組各元素值。
程序運(yùn)行時,輸入數(shù)47。從結(jié)果中可以看出47已插入到54和28之間。
【例14】在二維數(shù)組a中選出各行最大的元素組成一個一維數(shù)組b。
a=(3168765
43211108
10251237)
b=(8710837)
本題的編程思路是,在數(shù)組A的每一行中尋找最大的元素,找到之后把該值賦予數(shù)組B相應(yīng)的元素即可。程序如下:
voidmain()
{
inta[][4]={3,16,87,65,4,32,11,108,10,25,12,27};
intb[3],i,j,l;
for(i=0;il)l=a[i][j];
b[i]=l;}
printf("\narraya:\n");
for(i=0;i<=2;i++)
{for(j=0;j<=3;j++)
printf("%5d",a[i][j]);
printf("\n");}
printf("\narrayb:\n");
for(i=0;i<=2;i++)
printf("%5d",b[i]);
printf("\n");
}
程序中第一個for語句中又嵌套了一個for語句組成了雙重循環(huán)。外循環(huán)控制逐行處理,并把每行的第0列元素賦予l。進(jìn)入內(nèi)循環(huán)后,把l與后面各列元素比較,并把比l大者賦予l。內(nèi)循環(huán)結(jié)束時l即為該行最大的元素,然后把l值賦予b[i]。等外循環(huán)全部完成時,數(shù)組b中已裝入了a各行中的最大值。后面的兩個for語句分別輸出數(shù)組a和數(shù)組b。
【例15】輸入五個國家的名稱按字母順序排列輸出。
本題編程思路如下:五個國家名應(yīng)由一個二維字符數(shù)組來處理。然而C語言規(guī)定可以把一個二維數(shù)組當(dāng)成多個一維數(shù)組處理。因此本題又可以按五個一維數(shù)組處理,而每一個一維數(shù)組就是一個國家名字符串。用字符串比較函數(shù)比較各一維數(shù)組的大小,并排序,輸出結(jié)果即可。
編程如下:
voidmain()
{
charst[20],cs[5][20];
inti,j,p;
printf("inputcountry'sname:\n");
for(i=0;i<5;i++)
gets(cs[i]);
printf("\n");
for(i=0;i<5;i++)
{p=i;strcpy(st,cs[i]);
for(j=i+1;j<5;j++)
if(strcmp(cs[j],st)<0){p=j;strcpy(st,cs[j]);}
if(p!=i)
{
strcpy(st,cs[i]);
strcpy(cs[i],cs[p]);
strcpy(cs[p],st);
}
puts(cs[i]);}printf("\n");
}
本程序的第一個for語句中,用gets函數(shù)輸入五個國家名
字符串。上面說過C語言允許把一個二維數(shù)組按多個一維數(shù)組處理,本程序說明cs[5][20]為二維字符數(shù)組,可分為五個一維數(shù)組cs[0],cs[1],cs[2],cs[3],cs[4]。因此在gets函數(shù)中使用cs[i]是合法的。在第二個for語句中又嵌套了一個for語句組成雙重循環(huán)。這個雙重循環(huán)完成按字母順序
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 洋參沖劑市場環(huán)境與對策分析
- 研膠機(jī)相關(guān)項(xiàng)目建議書
- 潛水用水下通氣管相關(guān)項(xiàng)目建議書
- 熔爐爐柵市場環(huán)境與對策分析
- 石油開采石油精煉工業(yè)用機(jī)器設(shè)備相關(guān)項(xiàng)目實(shí)施方案
- 牲畜助產(chǎn)器項(xiàng)目可行性實(shí)施報(bào)告
- 掃路機(jī)項(xiàng)目可行性實(shí)施報(bào)告
- 成都師范學(xué)院《教師職業(yè)道德》2021-2022學(xué)年第一學(xué)期期末試卷
- 成都師范學(xué)院《國際貿(mào)易實(shí)務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 心率監(jiān)測設(shè)備市場環(huán)境與對策分析
- (高清版)TDT 1068-2022 國土空間生態(tài)保護(hù)修復(fù)工程實(shí)施方案編制規(guī)程
- 《外科護(hù)理》第二十章第一節(jié)骨折病人護(hù)理
- 第一章單元試卷 浙教版科學(xué)八年級上冊
- 高三期中考試
- 《反間防諜教育》課件
- 部編版九年級世界歷史上冊教學(xué)案設(shè)計(jì)全套
- ST語言編程手冊
- 寺頭中學(xué)中考成績分析報(bào)告
- 房地產(chǎn)市場報(bào)告 -2023年第四季度佛山寫字樓市場報(bào)告
- 科技倫理課件
- 小學(xué)趣味版畫校本課程的開發(fā)與應(yīng)用研究課題匯報(bào)
評論
0/150
提交評論