一、一維數組
1、定義一個一維數組:
(1)格式:儲存類別 類型標識符 數組名標識符[常量運算式]
(2)例子:static int a[10]
(3)注意:定義數組時數組的元素必須是常量,不能是變數,例如int n=3;int a[n] 這是不對的。
2、對數組的引用:
(1)引用形式:數組名[下標] 例如 a[2]
( 2) 注意數組的下標是由0開始,如a[3] 表示有三個元素 分別是a[0],a[1] ,a[2] .如果你用a[3]訪問第三個元素是錯誤的。
(3)對數組的遍曆:如果要一次訪問數組的全部元素,則只能使用遍曆的形式,如下
| 代碼如下 |
複製代碼 |
for(int i=0;i<5;i++){ printf(“d%n”,a[i]); } |
(4)怎麼輸入數組?
注意不能整體一下子輸入數組,如果你想scanf(“%d,”,a);其中a是數組,這樣只能夠輸入a[0],因為數組名代表的就是數組的首地址,它與scanf(“%d,”,&a[0]);等價。如果想全部輸入,則需要使用迴圈的方式:
例如:
| 代碼如下 |
複製代碼 |
for(int i=0;i<5;i++){ scanf(“d%n”,&a[i]); } |
3、數組的儲存結構:
(1)有一個整型數組a,裡面有4個元素,知道了第一個元素的記憶體位址是1000,怎麼求出第三個元素的記憶體位址 ?
解:c語言為數組開闢了連續的儲存單元,每個元素都會佔據一樣的位元組數,由於整型一般是佔據2個位元組,所以每個元素都會佔據2個位元組的記憶體空間,數組的其真實位址是1000,所以第二個元素的地址是1002,第三個是1004,第四個是1006.
根據這個原理,可以得出一個公式:
數組的元素地址 = 數組的起始地址 + 元素下標 x sizeof(數群組類型)
數組的初始化:
解:初始化的方式有:int a[5] = {0,1} 或者 nt a[5] = {0,1,5,4,3}
注意:如果元素的長度不夠,系統會自動為後面的元素補0,就像第一個a[5] = {0,1},就相當於a[5] = {0,1,0,0,0}。千萬不要多了,這樣會導致溢出,例如a[5] = {0,1,5,4,3,0,5}就是錯誤的行為。
例如:
| 代碼如下 |
複製代碼 |
int a[10]; 說明整型數組a,有10個元素。 float b[10],c[20]; 說明實型數組b,有10個元素,實型數組c,有20個元素。 char ch[20]; 說明字元數組ch,有20個元素。 |
利用資料進行排序(起泡排序)
從第一個數開始依次對相鄰兩數進行比較,如次序對則不做任何操作;如次序不對則使這兩個數交換位置。第一遍的(N-1)次比較後,最大的數已放在最後,第二遍只需考慮(N-1)個數,以此類推直到第(N-1)遍比較後就可以完成排序。
來源程式如下:
| 代碼如下 |
複製代碼 |
#define N 10 #include"stdio.h" main() { int a[N],i,j,temp; printf("please input %d numbersn",N); for(i=0;i<N;i++) scanf("%d",&a[i]); for(i=0;i<N-1;i++) for(j=0;j<N-1-i;j++) { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } printf("the array after sort:n"); for(i=0;i<N;i++) printf("%5d",a[i]); } |