C語言-一維數(shù)組的定義和引用-數(shù)組.ppt_第1頁
C語言-一維數(shù)組的定義和引用-數(shù)組.ppt_第2頁
C語言-一維數(shù)組的定義和引用-數(shù)組.ppt_第3頁
C語言-一維數(shù)組的定義和引用-數(shù)組.ppt_第4頁
C語言-一維數(shù)組的定義和引用-數(shù)組.ppt_第5頁
免費預覽已結束,剩余42頁可下載查看

下載本文檔

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

文檔簡介

1、第七章分組數(shù)組:它是一種構造類型,元素由基本類型(整體、實部和字符)組成。它是同類數(shù)據(jù)的有序集合。7.1一維數(shù)組的定義和引用7.1.1一維數(shù)組的定義形式:類型描述符數(shù)組名稱常量表達式,如:int a5浮動b10描述:1 .命名規(guī)則:數(shù)組名由合法的標識符組成。2.數(shù)組名稱由常量表達式包圍,包括整數(shù)、字符和符號常量表達式。例如,int a23,b5,ca,_ D8,XYZ # (#=35) #定義n5main()int an;printf(“% dn”,a1=100);并且:int a(10),bx,%5,83,x-y50,5x100正確嗎?另一個例子:int I=5;int a5 i正確嗎?3.

2、數(shù)組的長度為INTA5A0、A1、A2、A3、A4,下標從0.4開始。注意:在Turbo C中,可以引用超過定義的數(shù)組下標的元素,系統(tǒng)不檢查它們。例如T7-0-1.c main() int i,a5;對于(I=0;I=4;I)printf(“a % d=% d n”,I,ai=I 1);printf(“a5=% dt”,a5);printf(“a6=% d n”,a6);運行結果:A0=1 a1=2 a2=3 a3=4 a4=5 a5=-30 a6=285。4.數(shù)組大小的定義只能是常量,不能是變量或動態(tài)的。例7-0-2。C main() int n=5,an;a1=100printf(“a1=

3、% dn”,a1);編譯指出:函數(shù)main中需要常量表達式;7.1.2一維數(shù)組元素的引用規(guī)則:1。先定義,然后使用。2.引用形式:數(shù)組名稱的下標可以是常量、變量或整數(shù)或字符類型的表達式。3.引用方法:用于元素而不是整個數(shù)組。例如,a0=ab-a a b -96 a3-a2*2例T7-1。c按順序給數(shù)組a賦值,并以相反的順序輸出main() int a5,I;對于(I=0;I=0;I-)printf( a % d=% dn ,I,ai);運行結果:a4=4 a3=3 a2=2 a1=1 a0=0,7.1.3一維數(shù)組的初始化方法如下:1。定義時,初始化數(shù)組元素,如: int a5=1,2,3,4,

4、5;2.只給某些元素賦值,例如:int a5=1,3,5;3.在初始化期間為所有元素分配0值,例如:int a5=0,0,0,0,0;或者int a5=0;4.為所有元素賦值時,不能指定長度,例如:int a5=2,4,6,8,10;或int a=2,4,6,8,10;同樣的效果。在示例T7-1-1.c中,為數(shù)組元素初始化main()int I;int a5=2,4,6,8,10;對于(I=0;I=4;I)printf(“% dn”,ai);注:靜態(tài)存儲類別,這與新的ANSI標準一致。如果采用靜態(tài),數(shù)組元素的值存儲在靜態(tài)區(qū)域。運行結果:2 4 6 8 10,7.1.4一維數(shù)組程序示例T7-2.

5、c求解斐波那契數(shù)列問題關于斐波那契算法:前兩個數(shù)各為1,后兩個數(shù)為前兩個數(shù)之和。main()int I;int f20=1,1;對于(I=2;i20I)fi=fi-2 fi-1;對于(I=0;i20I)if(I % 5=0)printf(“n”);printf(d,fi;運行結果:1 1 2 3 5 8 13 21 34 55 144 233 377 610 987 1597 2584 4181 6765,案例T7-3.c使用冒泡方法對6個數(shù)字進行排序(從小到大),思維3360比較兩個相鄰的數(shù)字,如果是小的,則轉移到前面,如果不是小的,則應該進行比較。在第一輪,大量的人沉入谷底,第二輪,第四輪

6、和第五輪,這里:n=6,外循環(huán)是j(1n-1)次,內循環(huán)是i (1n-j)次,98 88 88 88 555,55 94 44,44 49 22,22 29 0,00 009,85 55 5,5。4 4 8 2 2,2 2 2 8 0,0 0 0 8,5 4 4 4,4 5 2 2,2 2 5 0,0 0 5,4 2 2 2,2 4 0,0 0 4,2 0,0 2,main()int a7;int i,j,t;printf(“輸入6個數(shù)字:n”);對于(I=1;IAI 1)t=ai;ai=ai 1;ai 1=t;printf(“已排序的數(shù)字:n”);對于(I=1;i7;I)printf(“%

7、d _ ”, ai);運行:輸入6數(shù)字:輸入:9 8 5 4 2 0輸出:0 2 4 5 8 9,7.2二維數(shù)組的定義和引用7.2.1二維數(shù)組1的定義。一般形式:類型說明符數(shù)組名稱常量表達式常量表達式,例如:float a34定義數(shù)組a在c中有三行四列,二維數(shù)組可以看作是一個特殊的一維數(shù)組。如上文所定義的,它可以被視為具有三個元素的一維陣列,并且每個元素可以被視為包含四個元素的一維陣列。因此,上述定義相當于:浮點a04、a14、a24。注:如果在實踐中對其進行了定義,將被視為重新定義。2.二維陣列的每個元素在存儲器中的存儲順序是:按照第一列的順序,例如T7-3-1c main()int I,j

8、,a23對于(I=0;I2;I)對于(j=0;J3;j)掃描頻率( %d ,輸入:1 3 5 7 9 11輸出:浮點a23,k;對于(I=0;I2;I)對于(j=0;J3;j)對于(j=0 ), scanf(%)f;J3;j)Scanf(“% f % f”),共24個元素。記憶的排列順序是:第三維變化最快,然后是第二維,第一維變化最慢。7 . 2 . 2 2D數(shù)組的引用形式:數(shù)組名下標其中:下標是常量、變量或整數(shù)或字符類型的表達式。(定義時不能使用變量)例如:a12聯(lián)合執(zhí)行活動1。數(shù)組元素可以出現(xiàn)在表達式中,例如:a12=a22/2 2。使用數(shù)組元素時,應注意不要超出定義范圍;例如,int a

9、23a23=5;7.2.3二維數(shù)組1的初始化。按行將初始值賦給二維數(shù)組,例如:int a23=1,2,3,4,5,6;2.根據(jù)數(shù)組元素的順序分配初始值,例如:int a23=1,2,3,4,5,6;3.給一些元素賦值,根據(jù)行賦值更直觀,比如:int a23=2,5,3;4.當所有元素被賦值時,第一維下標可以省略,例如:int a 3=1,2,3,4,5,6;另一個例子:int a 4=0,0,3,0,0,10;7.2.4二維數(shù)組程序示例T7-4交換一個二維數(shù)組的行和列元素,并將它們存儲在另一個二維數(shù)組中。T7-4.c行和列交換主()的兩個數(shù)組,int a23=1,2,3,4,5,6;int b

10、32,I,j;printf( array a :n );對于(I=0;I=1;I)對于(j=0;j=2;(j ) printf(M ,共同執(zhí)行活動);bji=聯(lián)合執(zhí)行活動;printf(n );printf(“數(shù)組b :n”);對于(I=0;I=2;I)對于(j=0;j=1;(j ) printf(M ,bij);printf( n );例如,T7-5.c具有3 4矩陣,并且獲得最大元素所在的行號和列號main() int i,j,r=0,c=0,max。int a34=1,2,3,4,9,8,7,6,-10,10,-5,2;max=a00對于(I=0;imax)最大值=aijr=I;c=j

11、printf(max=%d,row=%d,colum=% dn ,max,r,c);運行結果:max=10,row=2,column=1問題:為什么要在比較之前將a00分配給max?7.3字符數(shù)組字符數(shù)組:用于存儲字符數(shù)據(jù)。一維字符數(shù)組:存儲一個字符串(每個數(shù)組元素存儲一個字符)二維字符數(shù)組:存儲多個字符串(行數(shù)是字符串的個數(shù))7.3.1字符數(shù)組的定義形式:字符數(shù)組名稱常量表達式字符數(shù)組名稱常量表達式常量表達式:整數(shù)、字符、符號常量。示例:char a5a0=攝氏度;a1=H;a2=I;a3=N;a4=A;7.3.2字符數(shù)組的初始化,如:字符a5=C,H,I,N,A;碳b5=碳、氫、碘、氮、鎢

12、、鈾;在編譯時,會指出有太多的初始化值,字符c5=C,H,I;字符d=c,h,I,n,a。系統(tǒng)自動確認長度為5,7.3.3的參考示例T7-6.c,并輸出字符串Main()字符C10=I,_,a,m,_,h,a,p,p,y;int I;對于(I=0;i10I)printf(“% c”,ci);打印(“n”);運行結果:我很高興,T7-7。c輸出DIA圖形main () chardiamond5=,*,*,*,*;int I;int j;對于(I=0;i5;I)對于(j=0;j5;j ) printf(%c,diamondij);printf(n);7.3.4字符串上的注釋和字符串的結束符號:(1

13、)字符串:用雙引號括起來的幾個字符,可以存儲在一維或二維字符數(shù)組中。(2)字符串的結束符號是:0(既不是動作也不是顯示)(3)字符串的長度:第一個0之前的字符數(shù);(4)當在字符數(shù)組或字符串中發(fā)現(xiàn)0時,該字符被視為結束;(5)字符串可以初始化字符數(shù)組,如char c= I _ am _ happy系統(tǒng)自動將0添加到數(shù)組的末尾,長度為11或char c= I _ am _ happy系統(tǒng)自動在長度為11的數(shù)組末尾添加0,相當于c=I,_,a,m,_,h,a,p,p,y,0;CharC10=中國注意:字符0不總是在字符數(shù)組后面,輸出時前0結束;示例T7-7-1.c主()字符a=a,b,0,1,2;c

14、har b= ab 0cdprintf (%s n%s n ,a,b);運行結果:a b a b,7.3.5字符數(shù)組1的輸入和輸出。字符數(shù)組的輸出:示例T7-7-2 . c main()int I;char a10=“中國”;char b18=中國0中國0中國;對于(I=0;i10I)printf(“% c”,ai);printf( n );printf (%s n ,a);對于(I=0;i18I)printf(“% c”,bi);printf( n );printf (%sn ,b);運行結果:China China _ China China _ China China,注意:(1)以%

15、s格式輸出時,當?shù)谝粋€0;(2)以% C格式輸出時,按指定長度輸出,滿足0時輸出;(3)以% s格式輸出字符數(shù)組元素時,如printf (%s ,a2);雖然編譯時沒有錯誤,但是輸出的是不確定的字符,所以這里必須是一個數(shù)組名;2.字符數(shù)組的輸入形式:scanf ( %s ,a);其中:a是已定義的字符類型的數(shù)組名,在字符的數(shù)組名前不加地址運算符scanf (%s% s ,a1,a2,a3);printf(“a1=% s Na2=% s na3=% s n”,a1,a2,a3);printf(,printf(,printf(,description:(1)當使用scanf函數(shù)輸入多個字符串時,它們可以用_,制表符分隔。(2)在printf函數(shù)中,使用%s打印字符數(shù)組的內容;使用%x或%o打印字符數(shù)組的地址。輸入:你好嗎?輸出:a1=怎么樣,a2=怎么樣,a3=你怎么樣?char a2=中國

溫馨提示

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

評論

0/150

提交評論