程序設(shè)計(jì)基礎(chǔ)語(yǔ)言教學(xué)課件數(shù)組_第1頁(yè)
程序設(shè)計(jì)基礎(chǔ)語(yǔ)言教學(xué)課件數(shù)組_第2頁(yè)
程序設(shè)計(jì)基礎(chǔ)語(yǔ)言教學(xué)課件數(shù)組_第3頁(yè)
程序設(shè)計(jì)基礎(chǔ)語(yǔ)言教學(xué)課件數(shù)組_第4頁(yè)
程序設(shè)計(jì)基礎(chǔ)語(yǔ)言教學(xué)課件數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

最新文檔

評(píng)論

0/150

提交評(píng)論