




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第2章章 數(shù)組數(shù)組1、數(shù)組元素的個(gè)數(shù)必須在定義時(shí)確定、數(shù)組元素的個(gè)數(shù)必須在定義時(shí)確定2、同一數(shù)組中的數(shù)組元素的類型是相同的、同一數(shù)組中的數(shù)組元素的類型是相同的3、數(shù)組元素的作用相當(dāng)于簡(jiǎn)單變量、數(shù)組元素的作用相當(dāng)于簡(jiǎn)單變量4、同一數(shù)組中的數(shù)組元素占連續(xù)的地址空間、同一數(shù)組中的數(shù)組元素占連續(xù)的地址空間2.12.1 一維數(shù)組一維數(shù)組2.1.1 一維數(shù)組的定義一維數(shù)組的定義形式: static ;例: int a 20; float x 100;其中 a 和 x 都是數(shù)組名。代表數(shù)組元素的個(gè)數(shù)1. 數(shù)組名的確定方法同變量名。2.數(shù)組名后方括號(hào) 括起來的常量表達(dá)式,常量表達(dá)式表示元素的個(gè)數(shù)。對(duì)于 in
2、t a5;表示有5個(gè)元素, 元素的下標(biāo)從0開始.數(shù)組a的元素分別為:a0,a1, a2, a3, a 4數(shù)組數(shù)組 a 在內(nèi)存中的存放順序:在內(nèi)存中的存放順序:a0的值a1的值a2的值a3的值a4的值注意:注意:在沒有給數(shù)組元素賦值以前,沒有確定的值。3. 常量表達(dá)式為常量和符號(hào)常量。不允許有變量,其表達(dá)式的值代表了元素的個(gè)數(shù)。例: int a20; 表示有20個(gè)元素 且元素從0開始編排:a0,a1,a 192.1.2 一維數(shù)組的初始化一維數(shù)組的初始化1. 對(duì)全部元素賦初值。對(duì)全部元素賦初值。如:如:int a10=10, 11, 12, 13, 14, 15, 16, 17, 18, 19表示
3、數(shù)組元素的值為:a0=10;a1=11; a9=19; 2. 對(duì)部分元素賦初值對(duì)部分元素賦初值(前面的連續(xù)元素前面的連續(xù)元素)。如: 在此, 只有前5個(gè)元素初值確定。int b10=0,1,2,3,4;表示數(shù)組元素的值為:b0=0;b1=1;b2=2;b3=3;b4=4;注意:注意:不能只對(duì)不連續(xù)部分元素或后面的連續(xù)元素賦初值。語(yǔ)句語(yǔ)句: int a10=, , , , ,1,2,3,4,5; int a10=1, ,3, ,5 , ,7, ,9, ,; 是錯(cuò)誤的。3. 如對(duì)數(shù)組元素賦同一初值如對(duì)數(shù)組元素賦同一初值,必須一一寫出必須一一寫出: static int a10=2,2,2,2,2,
4、2,2,2,2,2;不可寫成任何其他形式。如:不可寫成: static int a10*2;4. 若賦全部元素的初值若賦全部元素的初值,可省略常量表達(dá)式可省略常量表達(dá)式 int a =0,1,2,3; 表示a4,即只有4個(gè)元素。 2. 引用方式: 數(shù)組名下標(biāo) 代表了一個(gè)元素,等價(jià)一個(gè)同類型的變量。 3. 一般地,一維數(shù)組各元素分配在連續(xù)的內(nèi)存單元之中。1. 須象使用變量那樣,先定義,后使用例: a 05+a1 6 為正確的算術(shù)表達(dá)式2.2 一維數(shù)組使用一維數(shù)組使用2.2.1 一維數(shù)組引用方式例 : ( Page 44,2-2.2-3)/*exam2_2.c 一維數(shù)組在程序中的使用*/#incl
5、ude void main()int i,a5=1,2,3,4,5; /*初始化數(shù)組*/printf(輸出數(shù)組元素的正確值: n);for(i=0;i5;i+)printf(%dt,ai);printf(n輸出超出下標(biāo)的元素的值:n);for(i=5;i10;i+) /*使用超出下標(biāo)的元素*/printf(%dt,ai);printf(n改變數(shù)組元素的值:n);a0=(a1+a2)*(a3+a4);printf(a0=%dn,a0);getchar();/*exam2_3.c Fibonaci數(shù)列的前20項(xiàng)*/#include #include main()int i,FBNC20;FBNC0
6、=0;FBNC1=1;for(i=2; i20;i+)FBNCi=FBNCi-2+FBNCi-1;printf(FBNC Number is:n);for(i=0;i20;i+)if (i=6 | i=11 | i=16)printf(n);printf(%7d,FBNCi);getch();2.3 2.3 多維數(shù)組多維數(shù)組形式:形式:例例: : int a4 10; float x8 20; 數(shù)組名數(shù)組名常量表達(dá)式常量表達(dá)式1 常量表達(dá)式常量表達(dá)式2; 行元素個(gè)數(shù)行元素個(gè)數(shù) 列元素個(gè)數(shù)列元素個(gè)數(shù)2. 可將二維數(shù)組的元素看成為若干個(gè)特殊可將二維數(shù)組的元素看成為若干個(gè)特殊的一維數(shù)組。的一維數(shù)組。
7、 可看成:可看成:有三個(gè)特殊的一維數(shù)組b0,b1, b2,每一個(gè)又有四個(gè)元素:1. 不可將定義寫為不可將定義寫為int a4,10。注意:注意:b00, b01, b02, b03,b10, b11, b12, b13,b20, b21, b22, b23,如如: int b3 4;3. 二維數(shù)組的存放方式為二維數(shù)組的存放方式為: 按行優(yōu)先。由此可按行優(yōu)先。由此可推廣至三維、推廣至三維、n維數(shù)組的定義和存放。維數(shù)組的定義和存放。4. 初始化初始化:即即: 最右邊的下標(biāo)變化最快。(1) 按行給二維數(shù)組賦初值按行給二維數(shù)組賦初值:static int a34=1,2,3,4, 5,6,7,8, 9
8、,10,11,12;或:或:static int a34=1,2,3,4,5,6,7,8,9,10,11,12; (2) 可以對(duì)部分元素賦初值可以對(duì)部分元素賦初值,但需表達(dá)清楚。但需表達(dá)清楚。則相當(dāng)于若:若: static int a34=1,2,3,8則相當(dāng)于000000008321000800030021如如: static int a34=1,2,3,8。(3) 可通過賦初值決定數(shù)組大小。如為二維可通過賦初值決定數(shù)組大小。如為二維,則只可省略第一維的大小。則只可省略第一維的大小。static int a 4=1,2,3,4,5,6,7,8,9,10,11,12;形式形式: :其中的下標(biāo)為
9、整型表達(dá)式其中的下標(biāo)為整型表達(dá)式, ,但不得越界。但不得越界。與一維數(shù)組元素一樣與一維數(shù)組元素一樣, ,二維數(shù)組元素相當(dāng)二維數(shù)組元素相當(dāng)于同類型的簡(jiǎn)單變量。于同類型的簡(jiǎn)單變量。數(shù)組名數(shù)組名下標(biāo)下標(biāo)1下標(biāo)下標(biāo)2形式:形式:例例: : int room3 23; float vic7 1269; 數(shù)組名數(shù)組名表達(dá)式表達(dá)式1 表達(dá)式表達(dá)式2. 表達(dá)式表達(dá)式n; 元素元素1的個(gè)數(shù)的個(gè)數(shù) 元素元素2 的個(gè)數(shù)的個(gè)數(shù) a=1 2 34 5 6b=1 42 5 3 6例例1:1: 將一個(gè)二維數(shù)組行和列元素互換,存到另一個(gè)二維數(shù)組中。例如:#include main()static int a23=1,2,3,
10、4,5,6;static int b32, i, j;printf(array a: n); for (i=0; i=1; i+)for (j=0; j=2; j+)printf(%5d, aij); bji=aij; printf(n);printf(array b:n);for (i=0; i=2; i+)for (j=0; jmaxmax= aijrow=icolum=j輸出:max和row,colum真假程序如下:程序如下: #include main ( ) int i,j, row=0, colum=0, max; static int a34=1,2,3,4,9,8,7,6, 1
11、0,10, 5, 2; max=a00; for (i=0;i=2; i+) for (j=0; jmax) max=aij; row=i; colum=j; printf( max=%d,row=%d, colum=%dn , max, row, colum);輸出結(jié)果為: max=10, row=2, colum=12.4 2.4 字符數(shù)組字符數(shù)組類型名 數(shù)組名大小 char c 10;1. 初始化: (1) 直接給出字符串中的各字符 static char a4= G , o , o , d ;若字符多于元素個(gè)數(shù),則語(yǔ)法錯(cuò),反之,后面補(bǔ)0。存放字符數(shù)據(jù)。字符串用字符數(shù)組存放。(2)可以去
12、掉定義時(shí)的大小設(shè)置,而通過自動(dòng)賦值決定長(zhǎng)度(大小) static char x = I , , a , m , , a, , s , t , u , d , e , n , t ;(3) 前面說過,字符串常量用“ ” 表示,且由 0結(jié)尾. static char x =I am a student. ; 則長(zhǎng)度為15+1=16, 其中x15存放 0,其中 亦可省略。 這種初始化未將結(jié)束標(biāo)記0存入數(shù)組中。用于存放字符或字符串。用于存放字符或字符串。如:如:char w7=s, t, u, d, e, n, t;w是一個(gè)可以存放7個(gè)字符的數(shù)組而:char u8=student;(或?qū)懗桑篶har
13、u =student;)u是一個(gè)可存放8個(gè)字符的數(shù)組對(duì)上面兩種數(shù)組定義,有:對(duì)上面兩種數(shù)組定義,有:w0=u0=sw1=u1=tw2=u2=uw3=u3=dw4=u4=ew5=u5=nw6=u6=tu7=0(1) 字符串用雙引號(hào)字符串用雙引號(hào) 括起來。括起來。(2) 字符串的結(jié)束標(biāo)志為字符串的結(jié)束標(biāo)志為0, 由系統(tǒng)提供。由系統(tǒng)提供。例:例:char bn =computer;則:數(shù)組則:數(shù)組bn的長(zhǎng)度為的長(zhǎng)度為9bn0=cbn3=pbn6=ebn1=obn4=ubn7=rbn2=mbn5=tbn8=0格式符格式符: : %c 逐個(gè)輸入逐個(gè)輸入/ /輸出字符輸出字符。 %s 整個(gè)串一次輸入整個(gè)串
14、一次輸入/ /輸出輸出。1. 輸出輸出 (用用%s) (2) 在在printf中須直接寫數(shù)組名中須直接寫數(shù)組名. static char c =I am a student; printf(%s, c);(1) 用用%s輸出時(shí)輸出時(shí),不輸出不輸出 0.(3) 若數(shù)組長(zhǎng)度大于字符串長(zhǎng)度若數(shù)組長(zhǎng)度大于字符串長(zhǎng)度,則遇到則遇到0即停即停止輸出止輸出 static char c10= china; printf( %s, c);(4) 輸出時(shí)遇到第一個(gè)輸出時(shí)遇到第一個(gè)0即結(jié)束。即結(jié)束。也可用輸出函數(shù)也可用輸出函數(shù) puts()() 。2. 輸入輸入(用用%s)(2) 輸入多個(gè)字符串輸入多個(gè)字符串,可用
15、空格隔開??捎每崭窀糸_。 static char str15, str25, str35; scanf(%s%s%s, str1, str2,str3);(1) 輸入字符串時(shí)輸入字符串時(shí),系統(tǒng)自動(dòng)加上系統(tǒng)自動(dòng)加上0則則: 輸入 How are you str1: H o w str2: a r e str3: y o u 輸入輸入: : How are you 則只會(huì)將How輸入,且存為str: H o w 0 但若但若: : static char str13 scanf(%s, str);注:注: scanf中須用地址量,數(shù)組名表示地址量。中須用地址量,數(shù)組名表示地址量。scanf()()
16、函數(shù)的缺陷:函數(shù)的缺陷: 不能完整地讀入含有空格、制表符等字符的字符串。解決方案:用解決方案:用gets()()函數(shù)。函數(shù)。 gets()函數(shù)可讀入包括有空格、制表符 等全部字符。以換行符作為結(jié)束。例如有:例如有:char name9; gets(name);若輸入:若輸入:Very hot結(jié)果:結(jié)果: 數(shù)組name的元素如圖所示。name0 V name1 e name2 r name3 y name4 name5 h name6 o name7 t name8 0 #include main( ) char name13; int i; for (i =0; i =12; i +)scan
17、f(“ %c”,&namei); for (i =0; i =12; i +)printf(“ %c”,namei); scanf(“ %s”,name); printf(“ %s”,name);例例:采用不同的方式輸入輸出字符串運(yùn)行結(jié)果運(yùn)行結(jié)果:Pear & Apple Pear & ApplePear & Apple Pear#include #include main( )int i; char name74=sun,mon,tue,wed, thu,wen,sat; printf(Result is:n); name03=& name23=&am
18、p; name53=& for (i=0;i7;i+) printf(%sn,namei); getch();例例: 字符串?dāng)?shù)組值的改變。程序運(yùn)行結(jié)果程序運(yùn)行結(jié)果:sun&monmontue&wedwedthuwen&satsatNAME0SUN0NAME1MON0NAME2TUE0NAME3WED0NAME4THU0NAME5FRI0NAME6SAT0NAME0SUN&NAME1MON0NAME2TUE&NAME3WED0NAME4THU0NAME5FRI&NAME6SAT0賦初值:改變后:字符串處理函數(shù)字符串處理函數(shù)用于處理字符串運(yùn)算
19、的函數(shù),放在頭文件string.h中如: strcpy( )-字符串拷貝 strcat( )-字符串連接 strcmp( )-字符串比較 等等。例例1:字符串復(fù)制。#include #include #include main() int i; char name16=pear; char name213=Apple&Banana; printf(Result is:n); printf(1-%sn,name1); printf(2-%sn,name2); strcpy(name2,name1); printf(“copy:1-%sn,name1); printf(“copy:2-%s
20、n,name2); for (i=0;i11;i+) printf(%c,name2i); getch( );拷貝后: 拷貝前:Name1= pe ar 0Name2= A p pl& B anana0eName1= pe ar 0Name2= pe ar& B anana00程序運(yùn)行結(jié)果:程序運(yùn)行結(jié)果: Result is: 1-pear 2-Apple&Banana copy :1-pear copy :2-pear pear &Banana例:輸入一行字符,統(tǒng)計(jì)其中有多少個(gè)單詞,單詞之間用空格分隔開。# include stdio.hmain ( ) ch
21、ar c ,string81;int i, num=0, word=0; gets (string); for (i=0; (c=stringi!= 0 ; i+) if ( c= = )word=0; else if (word = =0) word=1; num+; printf(There are %d words in the line n , num);運(yùn)行情況如下:I am a boy There are 4 words in the line2.5 數(shù)組作為函數(shù)參數(shù)數(shù)組作為函數(shù)參數(shù)分為兩種情況:1. 數(shù)組元素作為實(shí)參2. 數(shù)組名同時(shí)為形、實(shí)參使用方法使用方法:把數(shù)組元素作為函數(shù)的
22、實(shí)參。把數(shù)組元素作為函數(shù)的實(shí)參。由于數(shù)組元素的性質(zhì)與相同類型的簡(jiǎn)單變由于數(shù)組元素的性質(zhì)與相同類型的簡(jiǎn)單變量的性質(zhì)完全相同,因此,把數(shù)組元素作為函量的性質(zhì)完全相同,因此,把數(shù)組元素作為函數(shù)的參數(shù)也和簡(jiǎn)單變量一樣。數(shù)的參數(shù)也和簡(jiǎn)單變量一樣。作用作用:傳值。傳值。int x, a10;如: xa5即a5為一元素,與x完全一樣。例:設(shè)有兩個(gè)同樣大小的一維數(shù)組a10、b10,將相應(yīng)元素比較,統(tǒng)計(jì)a中大于b中對(duì)應(yīng)元素的個(gè)數(shù),小于的個(gè)數(shù),相等時(shí)的個(gè)數(shù)。#include main()int a10, b10, i, n=0, m=0, k=0;printf(enter array a(10 number):n
23、);for(i=0; i10; i+)scanf(%d, &ai);printf (n);printf(enter array b(10 number):n);for (i=0; i10; i+)scanf(%d, &bi);printf(n);for (i=0; ibi %d timesnai=bi %d timesnaik)printf(array a is larger than array bn);else if (ny)flag=1;else if (xbi 4 times ai=bi 1 times aibi 5 timesarray a is smaller th
24、an array b1. 數(shù)組名的作用數(shù)組名的作用數(shù)組名代表的是數(shù)組的起始地址;數(shù)組名代表的是數(shù)組的起始地址;也就是第也就是第1個(gè)元素的地址。個(gè)元素的地址。使用數(shù)組名作為函數(shù)的參數(shù)時(shí),形參和使用數(shù)組名作為函數(shù)的參數(shù)時(shí),形參和實(shí)參必須是同一類型的數(shù)組,系統(tǒng)采用地址實(shí)參必須是同一類型的數(shù)組,系統(tǒng)采用地址傳送方式進(jìn)行數(shù)據(jù)傳遞,即實(shí)參的首地址傳傳送方式進(jìn)行數(shù)據(jù)傳遞,即實(shí)參的首地址傳遞給形參的首地址,實(shí)參與形參共享相同的遞給形參的首地址,實(shí)參與形參共享相同的數(shù)據(jù)單元。數(shù)據(jù)單元。使用方法:使用方法:函數(shù)的實(shí)參和形參都必須是數(shù)組名。函數(shù)的實(shí)參和形參都必須是數(shù)組名。作用:作用:傳址。傳址。2. 把數(shù)組名作為函
25、數(shù)參數(shù)的規(guī)則把數(shù)組名作為函數(shù)參數(shù)的規(guī)則(可以在函數(shù)中修改數(shù)組元素的值)#include main()void swap(int x);int a2=2,7;printf(a0:%d, a1:%dn,a0,a1);swap(a);printf(a0:%d, a1:%dn,a0,a1);void swap(int x2)int t;t=x0;x0=x1;x1=t;運(yùn)行情況如下:a0:2, a1:7a0:7, a1:2注意注意: 二維數(shù)組的元素在內(nèi)存中是按先行后列的順序存放的,因此可以將二維數(shù)組當(dāng)作是一維數(shù)組。例例: 有一個(gè)34的矩陣如下:21043783113946要求要求: (1) 打印出所有元
26、素的和;(2) 打印出所有大于平均值的元素。#include#includeint add_ave(int m, int n, int arr );void prt_up(int m, int n, float average, int arr );main( )int A3 4=6, 4, 9, 13, 1, 3, 8, 7, 3, 4, 10, 2; int i=3, j=4, sum;float ave;sum=add_ave(i, j, A0);printf (The number or sum=%dn, sum);ave=(float)(sum)/(i j);printf (The
27、number or average=%5.2fn, ave);prt_up (i, j, ave, A0);int add_ave(int m, int n, int arr )int i;int total=0;for (i=0; im n; i+) total=total+arri;return (total);void prt_up(int m, int n, float average, int arr )int i, j;printf(The number of Bigger then average are:);for (i=0; im; i+) for (j=0; javerage) printf(arr%d%d=%dt, i, j, arri n+j);運(yùn)行結(jié)果:運(yùn)行結(jié)果:The number of sum=42The number of average= 3.00The number of Bigger then average are:arr0 0=6arr0 1=4arr0 2=9arr1 2=8arr1 3=7arr2 1=4arr2 2=10二維數(shù)組與一維數(shù)組的對(duì)應(yīng)關(guān)系:6A00A01A02A03A10A11A12A13A20A21
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 船舶保養(yǎng)考試題及答案
- 2025年軍隊(duì)文職人員招聘之軍隊(duì)文職法學(xué)考前沖刺試卷A卷含答案
- 小升初科學(xué)測(cè)試題及答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識(shí)能力檢測(cè)試卷B卷附答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識(shí)模考模擬試題(全優(yōu))
- 2019-2025年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識(shí)基礎(chǔ)試題庫(kù)和答案要點(diǎn)
- 社保知識(shí)培訓(xùn)課件北京
- 語(yǔ)文小說文本解讀技巧訓(xùn)練教案:以小說圍城為例
- 辦公室人員基本信息表
- 寫作技巧大揭秘:高中語(yǔ)文作文指導(dǎo)課程教案
- 2025年共青科技職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完整版
- 2025年上半年潛江市城市建設(shè)發(fā)展集團(tuán)招聘工作人員【52人】易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 統(tǒng)編版語(yǔ)文二年級(jí)下冊(cè)15古詩(shī)二首 《曉出凈慈寺送林子方》公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 旅游電子商務(wù)(第2版) 課件全套 周春林 項(xiàng)目1-8 電子商務(wù)概述-旅游電子商務(wù)數(shù)據(jù)挖掘
- 2025年安徽警官職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)帶答案
- 廣東廣東省錢幣學(xué)會(huì)招聘筆試歷年參考題庫(kù)附帶答案詳解
- 2025年福建省中職《英語(yǔ)》學(xué)業(yè)水平考試核心考點(diǎn)試題庫(kù)500題(重點(diǎn))
- 【課件】自然環(huán)境課件-2024-2025學(xué)年七年級(jí)地理下冊(cè)人教版
- 2025年河北省職業(yè)院校技能大賽智能節(jié)水系統(tǒng)設(shè)計(jì)與安裝(高職組)考試題庫(kù)(含答案)
- 2025-2030年中國(guó)蒸發(fā)器冷凝器行業(yè)發(fā)展?fàn)顩r及前景趨勢(shì)分析報(bào)告
- 2024年江西環(huán)境工程職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
評(píng)論
0/150
提交評(píng)論