C++課件 一維數(shù)組,二維數(shù)組_第1頁
C++課件 一維數(shù)組,二維數(shù)組_第2頁
C++課件 一維數(shù)組,二維數(shù)組_第3頁
C++課件 一維數(shù)組,二維數(shù)組_第4頁
C++課件 一維數(shù)組,二維數(shù)組_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第9講一維數(shù)組,二維數(shù)組數(shù)組數(shù)組:一組有序數(shù)據(jù)的集合。數(shù)組中的每一個(gè)元素都屬于同一個(gè)數(shù)據(jù)類型。用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)來唯一地確定數(shù)組中的元素。一維數(shù)組的定義和引用1.一維數(shù)組的定義類型說明符數(shù)組名[常量表達(dá)式];說明:1)數(shù)組名命名規(guī)則與變量名相同;

2)常量表達(dá)式不能含變量,不能用圓括弧;

3)下標(biāo)從0開始計(jì)算。2.一維數(shù)組元素的引用

數(shù)組必須先定義后引用,并且只能引用數(shù)組元素而不能一次引用整個(gè)數(shù)組。數(shù)組元素的表示形式為:

數(shù)組名[下標(biāo)]下標(biāo)可以是整型常量或整型表達(dá)式。如:

a[0]=a[5]+a[2*3]main(){inti,a[10];for(i=0;i<=9;i++)a[i]=i;/*數(shù)組元素賦值*/for(i=9;i>=0;i--)

printf(“%d”,a[i]);/*逆序輸出各數(shù)組元素*/

printf("\n");}例題:輸出數(shù)組元素運(yùn)行結(jié)果:98765432103.一維數(shù)組的初始化1).定義數(shù)組時(shí)初始化數(shù)組元素。如:

staticinta[10]={0,1,2,…,9};2).可以只給部分元素賦初值。如:

staticinta[10]={0,1,2,3,4};對(duì)static數(shù)組,未賦初值則系統(tǒng)默認(rèn)為0。3).對(duì)全部數(shù)組元素賦初值時(shí),可以不指定數(shù)組長度。如:

staticinta[]={1,2,3,4,5};自動(dòng)定義長度為5。注意:數(shù)組長度與提供的初值個(gè)數(shù)不相等時(shí),不能省略數(shù)組長度。4.一維數(shù)組程序舉例main(){inti;static

intf[20]={1,1};for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];

例題1:數(shù)組處理Fibonacci數(shù)列

for(i=0;i<20;i++){if(i%5==0)printf(“\n”);printf("%12d",f[i]);}

printf("\n");}起泡法思路:

將相鄰兩個(gè)數(shù)比較,將小的調(diào)到前頭。經(jīng)過1輪比較后,最大的數(shù)已調(diào)到最后一個(gè)位置。所以n個(gè)數(shù)要比較n-1趟,在第j趟中要進(jìn)行n-j次比較。例題2:起泡法對(duì)10個(gè)整數(shù)按由小到大排序

第1次第2次第3次第4次第5次結(jié)果main(){inta[11];

inti,j,t;

printf("input10numbers:\n");for(i=1;i<11;i++)

scanf("%d",&a[i]);

printf("\n");

for(j=1;j<=9;j++)/*10個(gè)數(shù)比較9趟*/for(i=1;i<=10-j;i++)/*每趟比較10-j次*/ if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t; }

printf("thesortednumbers:\n");for(i=1;i<11;i++)

printf("%d",a[i]);

printf("\n");}輸入:10481265–76100–45123輸出:-76–4501481265100123main(){inta[11]={21,14,63,19,3,16,7,28,34,100};

inttemp1,i,j;

printf("初始數(shù)組如下:\n");for(i=0;i<10;i++) printf("%5d",a[i]);

printf("\n");

例題3:將一組十個(gè)數(shù)按由小到大順序排列.(交換法)

for(i=0;i<10;i++)for(j=i+1;j<11;j++)

if(a[j]>a[i]){temp1=a[j];a[j]=a[i];

a[i]=temp1;}for(i=0;i<11;i++) printf("%6d",a[i]);}二維數(shù)組的定義和引用1二維數(shù)組的定義類型說明符數(shù)組名[常量表達(dá)式][常量表達(dá)式]

floata[3][4],b[5][10];注意:不能寫成floata[3,4],b[5,10];

C語言這種定義二維數(shù)組的方式,使得可以把二維數(shù)組看成一種特殊的一維數(shù)組。如:

a[0]---------a00a01a02a03a a[1]---------a10a11a12a13 a[2]---------a20a21a22a23

即把a(bǔ)看成包含3個(gè)元素的一維數(shù)組,而每個(gè)元素又是一個(gè)包含4個(gè)元素的一維數(shù)組。

a[0]---------a00a01a02a03a a[1]---------a10a11a12a13 a[2]---------a20a21a22a23

即把a(bǔ)看成包含3個(gè)元素的一維數(shù)組,而每個(gè)元素又是一個(gè)包含4個(gè)元素的一維數(shù)組。二維數(shù)組中元素的排列順序?yàn)椋喊葱写娣?。存放順序?,2,3行。

a[3][4]C語言允許使用多維數(shù)組,其基礎(chǔ)為二維數(shù)組。如:語句inta[2][3][2];定義一個(gè)12個(gè)元素的3維數(shù)組。下標(biāo)變化順序:3,2,1。

1)對(duì)二維數(shù)組a[m][n],元素a[i][j]在數(shù)組中的排列位置計(jì)算公式為:

i*n+j+1對(duì)數(shù)組a[3][4],a[2][1]的位置為:

2*4+1+1=10表示它是第10個(gè)元素。

2)對(duì)二維數(shù)組a[m][n],元素a[i][j]在數(shù)組中的順序號(hào)計(jì)算公式為:

i*n+j對(duì)數(shù)組a[3][4],a[2][1]的順序號(hào)為:

2*4+1=9表示它前面有9個(gè)元素。2二維數(shù)組的引用

數(shù)組必須“先定義,后引用”。二維數(shù)組元素的表示形式:數(shù)組名[下標(biāo)][下標(biāo)]下標(biāo)可以是整型表達(dá)式。

數(shù)組元素可以出現(xiàn)在表達(dá)式中,也可以被賦值。如:

b[1][2]=a[2][3]/2;注意:下標(biāo)值的范圍。常見錯(cuò)誤:

inta[3][4];

| a[3][4]=3;a[3][4]指數(shù)組以外的某一存儲(chǔ)單元。main(){inti,j,k,a[2][3][2];for(i=0;i<2;i++) for(j=0;j<3;j++) for(k=0;k<2;k++)

scanf("%d",&a[i][j][k]);for(i=0;i<2;i++)for(j=0;j<3;j++) for(k=0;k<2;k++)printf("a[%d][%d][%d]=%d",i,j,k,a[i][j][k]);}向3維數(shù)組賦值并輸出其全部元素。3二維數(shù)組的初始化1).分行初始化。如:staticinta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};2).也可將數(shù)據(jù)寫在一個(gè)花括號(hào)內(nèi),系統(tǒng)按排列順序?qū)υ刭x初值。如:staticinta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

3).也可對(duì)部分元素賦初值。如staticinta[3][4]={{1},{5},{9}};其結(jié)果為:

100050009000staticinta[3][4]={{1},{0,6},{0,0,11}};

其結(jié)果為:

1000060000110

staticinta[3][4]={{1},{5,6}};其結(jié)果為:

100056000000也可以對(duì)第二行不賦初值:如staticinta[3][4]={{1},{},{9}};

4).若對(duì)全部元素都賦初值,則定義數(shù)組時(shí)對(duì)第一維的長度可以不指定,但第二維的長度不能省略。staticinta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};等價(jià)于staticinta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

若定義時(shí)省略第一維的長度并部分賦初值,則應(yīng)采用分行賦初值的方法。如:staticinta[][4]={{0,0,3},{},{0,10}};結(jié)果為

0030000001000例題3:把由鍵盤輸入的數(shù)列按相反的順序輸出。#include“stdio.h”main(){

intj,i=0,a[100];

printf("inputsomeintergers(<=100):\n");

printf("endmark--Ctrl+z\n");while(scanf("%d",&a[i])!=EOF)i++;for(j=0,i=i-1;i>=0;j++,i--){if(j%3==0)printf("\n");

printf("%d\t",a[i]);}}輸入:357輸出:753例題4:將下列數(shù)列(楊輝三角形)延長到55個(gè)。1,1,1,1,2,1,1,3,3,1,1,4,6,4,1……main(){inta[

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論