嵌入式C語言難點一:數組
1.數組的定義
由若幹相同類型並且有順序關系的數組組成,數組中的每個變量就叫做這個數組的元素。
表達式:<儲存類型> <數據類型> <數組名> [<常量表達式>]
2.一位數組的引用
表示方法:數組名[下標]
列:定義10個數組並逆序輸出
#include <stdio.h>
int main(){
/*數組定義,有10個元素*/
Int i,a[10];
a[0]=a[1]=1;
for(i=2;i<10;i++){
/*下標為整型表達式,之一標號範圍為0-9*/
a[i]=a[i-2]+a[i--1];
printf("Fibonacci numbers...\n");
for(i=9;i>=0;i--){
printf("a[%d] is %d\n",i,a[i]);
return 0;
}
}
}
輸出結果:
a[9] is 55
a[8] is 34
a[7] is 21
a[6] is 13
a[5] is 8
a[4] is 5
a[3] is 3
a[2] is 2
a[1] is 1
a[0] is 1
數組中下標是從0開始,範圍是0到n-1,其中你為元素個數,通過下標就可以很方便的訪問數組中的元素。
切記,引用下標數組時,下標不能越界。
3.局部數組的初始化
(1)局部數組不初始化。
對於普通局部數組,若定以時,沒有初始化,則數組中的元素的值,是不確定的。
(2)static 數組不初始化。
若定義static數組時,沒有初始化,則數組中的元素默認為0.
(3)全局數組不初始化。
同上,若沒有初始化,也默認為0.
(4)全部初始化。
int a[10]={1,2,3,4,5,6,7,8,9,10};
(5)部分初始化。
int a[10]={1,2,9,23,5};
按順序就只有前五個賦了值,後五個自動賦為0。
(6)數組全部賦值。
若全部賦值,則可省略數組下標中的常量,編譯器會根據列表自動計算數組元素的長度。
Int a[]={1,2,9,56,12,3,8,46,7,13,};
註意此時"[]"不能省略。
(7)數組全部初始化為0。
對於這種特殊情況,有多種列子
Int main(){
int a[10]={0};
return 0;
}
還有這幾種等,列:
Int main(){
int a[10],i;
for(i=0;i<10;i++){
a[i]=0;
return 0;
}
}
#include <stdio.h>
int main(){
int a[10];
memset(a,0,sizeof(a));
return 0;
}
1.冒泡排序
(1)比較第一個數與第二個數,若為逆序a[0]>a[1],則交換;然後比較第二個數與第三個數;一次類推,直至第n-1個數和第n個數比較為止,第一趟冒泡排序,最終,最大的數被安置在最後後一個元素位置上。
(2)對前n-1個數進行第二趟冒泡排序,最終,是次大的數被安置在第n-1個元素位置。
(3)重復上述過程,共經過n-1次冒泡排序後,排序結束。
代碼市列:
#include <stdio.h>
#define N 10
int main(){
int a[N],i,j,t;
printf(“Please input %d numbers\n”,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]]){
t=a[j];
a[j]=a[j=1];
a[j+1]=t;
}
}
printf("The array after sort;\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
printf("\n");}
return 0;
}
輸出結果:
Please input 0 numbers
5,12,6,8,78,45,32,14,11,9
the array after sort:
5,6,8,9,11,12,14,32,45,78
嵌入式C語言難點一:數組