版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
任務一
使用一維數組一、定義一維數組1.數組的定義數組是一組有序數據的集合,數組中每一個元素的類型相同用數組名和下標來唯一確定數組中的元素。一維數組的定義格式為:類型說明符數組名[常量表達式],…;下一頁返回任務一
使用一維數組2.說明(1)C語言中,數組下標從0開始。(2)常量表達式中可以包含數值常量和符號常量,不允許包含變量。既C語言不允許對數組的大小做動態定義,如:下面程序段中的數組常量n的使用方法是不允許的。
intn;
scanf(“%d”,&n);
inta[n];(3)C編譯系統為數組在內存中按照元素的排列順序開辟一片連續的存儲單元,如引例中定義的數組a[10],其存儲形式如圖7-1所示。上一頁下一頁返回任務一
使用一維數組二、遍歷一維數組
C語言規定只能逐個引用數組元素而不能一次引用整個數組。數組元素的引用形式為:數組名[下標表達式]三、初始化一維數組1.在編譯階段賦初值(1)對全部數組元素賦初值如:inta[6]={1,2,3,4,5,6};
數組元素的個數和花括號中初值的個數是相同的。并且從左到右花括號中初值依次賦給每個數組元素。即a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5,a[5]=6。上一頁下一頁返回任務一
使用一維數組(2)可以只給一部分元素賦初值如:inta[10]={0,1,2,3,4};2.在運行階段賦初值inta[10],i;for(i=0;i<10;i++)scanf(“%d”,&a[i]);3.注意事項當程序不給數組指定初始值時,編譯器作如下處理:(1)編譯器自動把靜態數組的各元素初始化為0。(2)編譯器不為動態數組自動指定初始值。(3)如果全部元素均指定初值,定義中可以省略元素的個數上一頁下一頁返回任務一
使用一維數組四、使用一維數組例7.4用數組來處理Fibonicci數列的前20項。F[1]=F[2]=1F[n]=F[n-1]+F[n-2](n≥3)程序如下:上一頁返回下一頁任務一
使用一維數組例7.5輸入10個數,用“起泡法”對10個數由小到大排序“起泡法”算法分析:以六個數9、8、5、4、2、0為例。第1趟比較上一頁下一頁返回任務一
使用一維數組第2趟比較上一頁下一頁返回任務一
使用一維數組第1趟比較后,剩5個數未排好序;兩兩比較5次第2趟比較后,剩4個數未排好序;兩兩比較4次第3趟比較后,剩3個數未排好序;兩兩比較3次第4趟比較后,剩2個數未排好序;兩兩比較2次第5趟比較后,全部排好序;對于n個數的排序需進行n-1趟比較,第j趟比較需進行n-j次兩兩比較。“起泡法”排序N-S圖如圖7-2所示(用兩層嵌套循環實現)。上一頁下一頁返回任務一
使用一維數組
設需排序的數有10個,定義數組大小為a[11],使用a[1]~a[10]存放10個數,a[0]不用。程序如下:上一頁返回任務二
二維數組一、定義二維數組它的一般格式是:類型說明符數組名[常量表達式1][常量表達式2]
其實我們可以這樣對二維數組理解,二維數組a[3][4]理解為:有三個元素a[0]、a[1]、a[2],每一個元素是一個包含4個元素的一維數組。如圖7-3所示。二維數組的元素在內存中的存放順序:按行存放,即:先順序存放第一行的元素,再存放第二行的元素。如圖7-4所示。(最右邊的下標變化最快,第一維的下標變化最慢)。下一頁返回任務二
二維數組二、遍歷二維數組數組名[下標1][下標2]再如floata[2][3];有6個元素,按如下方式引用各元素:a[0][0]、a[0][1]、a[0][2]、a[1][0]、a[1][1]、a[1][2]上一頁下一頁返回任務二
二維數組三、初始化二維數組
staticinta[2][3]={{1,2,3},{4,5,6}};是對數組的初始化,同樣二維數組的初始化也可以分下面幾種。1.分行賦值,例如:inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};2.全部數據寫在一個大括號內,例如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};3.部分元素賦值,例如:inta[3][4]={{1},{5},{9}};4.如果對全部元素賦初值,則第一維的長度可以不指定,但必須指定第二維的長度。上一頁下一頁返回任務二
二維數組四、使用二維數組例7.7有一個3×4的矩陣,要求編程序以求出其中值最大的那個元素的值及其所在的行號和列號。其N-S圖如圖7-5所示。上一頁下一頁返回任務二
二維數組main(){inti,j,row=0,colum=0,max;staticinta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};max=a[0][0];for(i=0;i<=2;i++)/*用兩重循環遍歷全部元素*/for(j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}printf("max=%d,row=%d,colum=%d\n",max,row,colum);}上一頁返回任務三
使用字符數組與字符串一、定義字符數組1.字符數組的定義我們知道數組分為整型,實型,字符型數組,整型,實型我們用過。所謂字符數組是指存放字符數據的數組,每一個元素存放一個字符。它的定義形式為:
char數組名[<常量表達式>]下一頁返回任務三
使用字符數組與字符串2.字符數組的初始化字符數組的初始化同樣分為以下幾種。(1)逐個元素初始化(2)初始化數據少于數組長度,多余元素自動為“空”(‘\0’,二進制0)。(3)指定初值時,若未指定數組長度,則長度等于初值個數。3.字符數組的引用引用方法同整型數組,但引用一個元素,得到一個字符。上一頁下一頁返回任務三
使用字符數組與字符串二、使用字符串1.字符串的操作(1)C語言中,字符串作為字符數組處理。字符數組可以用字符串來初始化,例如:
staticcharc[]={"Iamhappy"};也可以這樣初始化:(不要大括號)
staticcharc[]="Iamhappy";(2)字符串在存儲時,系統自動在其后加上結束標志‘\0’(占一個字節,其值為0)。但字符數組并不要求其最后一個元素是‘\0’。上一頁下一頁返回任務三
使用字符數組與字符串2.字符串的輸入輸出(1)用“%c”格式符逐個輸入輸出。(2)用“%s”格式符按字符串輸入輸出。3.應用舉例4.字符串函數在C的函數庫中,提供了一些字符串處理函數。(1)puts()函數:輸出字符串(以'\0'結尾)。(2)gets()函數:輸入字符串到數組。例如:staticcharstr[12];gets(str);puts(str);上一頁下一頁返回任務三
使用字符數組與字符串(3)strcat():連接字符串。strcat(字符串1,字符串2);把“字符串2”連接到“字符串1”的后面。(4)strcpy():字符串拷貝。strcpy(字符串1,字符串2);把“字符串2”的值拷貝到“字符串1”中。(5)strcmp():字符串比較。intstrcmp(字符串1,字符串2);(7)strlwr():將字符串中的大寫字母轉換為小寫字母(lwr:lowercase小寫)。(8)strupr():將字符串中的小寫字母轉換為大寫字母(upr:uppercase大寫)。上一頁返回任務四
數組作函數參數一、數組元素作為函數參數由于實參可以是表達式形式,數組元素可以是表達式的組成部分,因此,數組元素當然可以作為函數的實參,與用變量作實參一樣,是單向值傳遞方式。二、數組名作函數參數可以用數組名作函數參數,此時實參與形參都應用數組名。下一頁返回任務四
數組作函數參數1.引例【例7.12】有一個一維數組score,內放10個學生成績,求平均成績。floataverage(floatarray[10]){inti;floataver,sum=0;for(i=0;i<10;i++)sum=sum+array[i];aver=sum/10;return(aver);}main(){floatscore[10],aver;上一頁下一頁返回任務四
數組作函數參數inti;printf("Input10score:\n");for(i=0;i<10;i++)scanf("%f",&score[i]);printf("\n");aver=average(score);printf("Averagescoreis%5.2f\n",aver);}上一頁下一頁返回任務四
數組作函數參數2.說明(1)用數組名作函數參數,應該在主調函數和被調用函數中分別定義數組,如,本例中array是形參數組名,score是實參數組名,分別在其所在函數中定義,不能只在一方定義。(2)實參數組與形參數組類型應一致,本例中都為float類型,如不一致,結果將出錯。(3)實參數組和形參數組大小可以一致,也可以不一致,C編譯系統對形參數組大小不做語法檢查,只是將實參數組的首地址傳遞給形參數組。(4)形參數組也可以不指定大小,在定義數組時在數組名后面跟一對空的方括號,為了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論