C語言數組詳解_第1頁
C語言數組詳解_第2頁
C語言數組詳解_第3頁
C語言數組詳解_第4頁
C語言數組詳解_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、就是一組具有固定數目的、有序的、類型相同的數據的集合。根據數組下標,的多少,數組可以分為一維數組和多維數組,例如:一個班級有,30,個學生,可以用,g,1,g,2,g,30,代表學生的成績,其中,g,是數組名,下標代表學生,的序號。由于在,C,語言中無法表示下標,所以就引,入了,表示下標,g1,第,1,個學生的成績,gi,第,i,個學生的成績等等,類型說明符,數組名,常量表達式,int a10,任一種,基本數,據類型,或構造,數據類型,用戶自定義的數組名字,其定,名規(guī)則與變量名定名規(guī)則一樣,都需遵循,標識符定名規(guī)則,表示元素的個數,即數組長度,下標運算符,單目運算符,優(yōu)先級,1,左結合,不能用

2、,注意,1,數組名,不能,與其它變量名相同,void main(,int,a,float,a,10,2,不能在方括號中用,變量,來表示元素的個數,但可以是,符號,常數或常量表達式,int n,scanf(%d,表示維數的只能是常量,int an,define FD 5,void main(,int a3+2,b7+FD,3,方括號中常量表達式表示數組元素的,個數,如,int a5,數組,a,有,5,個元素,其,下標從,0,開始,分別為,a0,a1,a2,a3,a4,4,允許在同一個類型說明中說明多個數,組和多個變量,例如,int a,b,c,d,k110,k220,如果出現數,組越界,編譯系統(tǒng)

3、,沒有提示,的,數組必須,先定義,然后使用,數組元素的表示形式為,數組名,下標,C,語言規(guī)定,只能逐個引用數組元素,而不能一次引用整個數組,可以是整型常量或整型表,達式,全部初始化,部分初始化,使用輸入函數,scanf,初始化,使用表達式賦值,int a10,0,1,2,3,4,5,6,7,8,9,a0,0,a1,1,a2,2,a3,3,a4,4,a5,5,a6,6,a7,7,a8,8,a9,9,int a10,0,1,2,3,a0,0,a1,1,a2,2,a3,3,a4,0,a5,0,a6,0,a7,0,a8,0,a9,0,int a10,for(int i=0;i10;i,scanf(%d

4、,int a10,0,1,2,3,a4=a3+2,對全部數組元素賦初值時,數組,長度可以省略,int a5 = 1,2,3,4,5,5,4,3,2,1,a4,a3,a2,a1,a0,2020,2016,2012,2008,2004,a,include,void main(,int,a5=0,1,2,3,4,for(int,i=0;i5;i,printf(a%d=%d,其地址是,dn,i,ai,牰湩晴尨,數組的首地址為,dn,a,牰湩晴尨,數組,a,在內存中占字節(jié)數,dn,sizeof(a,數組名表示,數組的起始地,址,是一個地址常量,程序舉例,1,用選擇排序法進行排序,選擇排序法是編程中經常用

5、的一種排序算法。具體如下,先將,5,個數中最小的數與,a0,對換,再將,a1,到,a4,中最小的數與,a1,對換,這樣每比較一輪,找出一個未經排序的數中最小的一個。共比較,4,輪,int a5 = 3,6,1,9,4,1.4,一維數組程序舉例,a0 a1 a2 a3 a4,3 6 1 9 4,未排序的情況,1 6 3 9 4,將,5,個數中最小的數,1,與,a0,對換,1 3 6 9 4,將余下的,4,個數中最小的數,3,與,a1,對換,1 3 4 9 6,將余下的,3,個數中最小的數,4,與,a2,對換,1 3 4 6 9,將余下的,2,個數中最小的數,6,與,a3,對換,main(,int

6、 i,j,k,t,int a5 = 3,6,1,9,4,for( i = 0; i sizeof(a)/sizeof(int,1; i,k = i,for( j = i + 1; j sizeof(a); j+,if(aj ak ) k = j,if( k != i ),t = ai; ai = ak; ak = t;,數組的起始下標、最后一個元素的下標,定義數組時不指定長度,動態(tài)數組,對數值型數組進行整體操作,用,scanf,語句時,數組元素前應加,語句錯誤,不了解數組定義時與數組元素使用時的區(qū),別,scanf,“%d”,a,10,一維數組的定義、初始化、引用、輸入、輸出概念、操作必須掌握,

7、數組中的所有元素,數據類型都一致,數組名字代表數組的首地址,是一個常量,數組元素具有和相同單個變量一樣的屬性,凡允許使用單個變量的地方,均可以使用數組元素,這兒只討論二維數組,多維數組可由二維數組推導得出,二維數組定義的一般形式為,類型說明符,數組名,常量表達式,常量表達式,第一常量表達式為行數,第二個為列數,int a34,float a3,4,b5,10;,錯誤,3,2,2,2,1,2,0,2,3,1,2,1,1,1,0,1,3,0,2,0,1,0,0,0,a,a,a,a,a,a,a,a,a,a,a,a,二維數組中的元素在內存中的排列,順序是:按行存放,即先順序存放第一,行的元素,再存放第

8、二行的元素,二維數組在內存中的存放,下圖表示對,a,3,4,數組存放的順序,int a23=1,2,3,4,5,6,a0,6,5,4,3,2,1,a12,a11,a10,a02,a01,2022,2018,2014,2010,2006,a00,2002,a1,include,void main(,int,a23=1,2,3,4,5,6,i,j,for(i=0;i2;i,for(j=0;j3;j,牰湩晴尨,第,a%d%d,元素,d,其地址,為,dn,i,j,aij,printf(a=%dta0=%dta1=%dn,a,a0,a1,二維數組的表示形式:數組名,下標,下標,注意,下標可以是整型表達式

9、,如,a2-12*2-1,數組元素可以出現在表達式中,也可以被賦值,b12=a23/2,在使用數組元素時,應該注意下標值應在已定義的數組大小范圍內,int a34; a34=5,嚴格區(qū)分在定義數組時用的,a34,和引用元素時的,a34,全部初始化,部分初始化,使用輸入函數,scanf,初始化,int a23,0,1,2,3,4,5,int a23,4,5,a00,0,a01,1,a02,2,a10,3,a11,4,a12,5,int,a23,0,1,2,int,a00,0,a01,1,a02,2,a10,0,a11,0,a12,0,int,a23,for(int i=0;i2;i,for(in

10、t j=0;j3;j,scanf(%d,對全部數組元素賦初值時,第一,維的長度可以省略,例,3,一個學習小組有,5,個人,每個人有三門課的考試成績。求全組分科的平均成績,和各科總平均成績,English,Math,C,張,80,75,92,王,61,65,71,李,59,63,70,趙,85,87,90,周,76,77,85,例,3,一個學習小組有,5,個人,每個人有三門課的考試成績。求全,組分科的平均成績和各科總平均成績,for i=0 to 2,for j=0 to 4,sumi+=scoreij,avgi=sumi/5,for i=0 to 2,output avgi,avg+=avgi

11、,output avg/3,include #define N 3 #define M 5,void main(,float scoreNM,avg1=0,avgN,sumN=0,int i,j,for(i=0;iN;i,for(j=0;jM;j,牰湩晴尨,第,d,門課,第,d,個學生的成績,i,j,scanf(%f,for(i=0;iN;i,for(j=0;jM;j,sumi+=scoreij,avgi=sumi/M,for(i=0;iN;i,牰湩晴尨,第,d,門課的平均成績?yōu)?.2fn,i,avgi,avg1+=avgi,牰湩晴尨,各科總平均成績?yōu)?.2fn,avg1/N,二維數組在內存中

12、是按行存放,數組元素的下標每一維都是從,0,開始的,數值型數組不能夠整體引用,可以把二維數組看成是一個特殊的一維數組,即其元素是一個一維數,組,二維數組初始化有兩種方法:按行賦值或者一行賦值,字符數組,用來存放字符數據的數組,就是字符數組,定義方式,char,數組名,長度,一維數組,char a10,二維數組,char a45,對字符數組初始化,最容易理解的方式是逐個字符賦給數組中各元素,如,Char c10= I, ,a,m,h,a,p,p,y,如果在定義字符數組時不進行初始化,則數組中各元素的,值是不可預料的,如果花括弧中提供的初值個數,即字符個數,大于數組,長度,則按語法錯誤處理,注意,

13、如果初值個數小于數組長度,則只將這些字符賦給數,組中前面那些元素,其余的元素自動定為空字符,即0)。例如,char c,10,c, ,p,r,o,g,r,a,m,在定義字符數組時可以省略數組長度,系統(tǒng)會,自動根據初值個數確定數組長度。例如,char c,I, ,a,m, ,h,a,p,p,y;數組,c,的長度自動定為,10,include,void main(,char c10=I, ,a,m, ,a, ,b,o,y,int i,for (i=0;i10;i,printf (“%c”,ci,printf,n”,可以引用字符數組中的一個元素,得到一個字符,在實際編程中,最常用的是字符串。在中,是

14、用字符數組存放字符串。字符串以,0,作為串結束符,因此當把字符串存入數組時,也把,0,存入數組,并以此作為該字符串,是否結束的標志,程序中通過循環(huán)掃描字符數組元素,讀到,0,時候便認為字符串結束,用字符串方式賦值比用字符逐個賦值要多占,一個字節(jié),用于存放字符串結束標志,0,例如:數組,char c = “c program,在內存中,的實際存放情況為,C,p,r,o,g,r,a,m,0,0,是由,C,編譯系統(tǒng)自動加上的。由于采用了,0,標志,所以在,用字符串賦初值時一般無須指定數組的長度,而由系統(tǒng)自行處理,char c,China,printf(%s,c,例如,在內存中數組,c,的狀態(tài),字符數

15、組的輸入輸出可以有兩種方式,逐個字符輸入輸出。用,c,輸入或輸出一個字符,將整個字符串一次輸出。用,s,格式符,char c=“China,printf(“%s”,c,C,h,i,n,a,0,China,注意,輸出字符不包括結束符,0,用,s,格式符輸出字符串時,printf,函數中的輸出項時字符數組名,而,不是數組元素名,printf(“%s”,c,如果數組長度大于字符串實際長度,也只輸出遇,0,結束,如果一個字符數組中包含一個以上,0,則遇到第一個,0,時結束,include,void main(,char st15,printf(input string:n,scanf(%s,st,pr

16、intf(%sn,st,本例中由于定義數組長度為,15,因此輸入的字符串長度,必須小于,15,以留出一個字,節(jié)用于存放字符串結束標志,0,對于字符數組,如果不作初始,化賦值,則須說明數組長度,應該特別注意的是,當用,scanf,函數輸入字符串時,字,符串中不能含有空格,否則,將,以空格作為串的結束符,例如運行,上例,當輸入的字符串中含有,空格時,運行情況為,include,void main(,char st16,st26,st36,st46,printf(input string:n,scanf(%s%s%s%s,st1,st2,st3,st4,printf(%s %s %s %sn,st1,st2,st3,st4,從輸出結果可以看出空格以后的字符都未能輸出,為,了避免這種情況,可,多

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論