嵌入式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