<四> 数组--Array
【1】首先我们了解一下什么是数组?
- 数组:由若干个数据类型相同的元素组成的集合。
【2】当然还有数组是怎么定义的?
- 定义:数据类型 数组名[元素个数];
- eg:int a[5];
- 元素:a[0] ~ a[n-1]
【3】接下来我们看下数组定义的几种方式
- int a[5] = {0,1,2,3,4};
- int a[ ] = {0,1,2,3}; //==> int a[4];
- #define N 7 int a[N];
- int a[n]; //n为变量时,不能初始化
- int a[ ]; //错误!!!
【4】初始化
- 可以全部赋值,但不可以空间越界多赋值
- 局部赋值:没有赋值的部分默认为0
- 局部变量且不初始化:则数据元素为随机值
【5】性质:
- 元素类型相同
- 存储空间连续
- 数组名是首元素的地址
【6】数组名
- 数组名是首元素的地址
- sizeof(数组名); //求空间大小
- sizeof(数组名)/sizeof(a[0]); //求元素个数
【7】注意:数据越界访问时不报错。
- int a[5]; -------------------> a[5];
【8】冒泡排序
- 比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止――第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上
- 对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置
- 重复上述过程,共经过n-1趟冒泡排序后,排序结束
第一种方法
1 int i,j; 2 for(i=0; i<N-1; i++) 3 { 4 for(j=0; j<N-i-1; j++) 5 { 6 if(a[j] > [j+1]) 7 { 8 t = a[j]; 9 a[j] = a[j+1]; 10 a[j+1] = t; 11 } 12 } 13 }
第二种方法
1 int i,j; 2 for(i=0; i<N-1; i++) 3 { 4 for(j=i+1; j<N; j++) 5 { 6 if(a[i] > a[j]) 7 { 8 a[j] ^= a[j+1]; 9 a[j+1] ^= a[j]; 10 a[j] ^= a[j+1]; 11 } 12 } 13 }
【9】二维数组
- 1--- int a[3][4] = {0};
- int a[][2] = {0,1,2,3,4}; 《===》 int a[3][2];行数可以省略
- 2--- 数据类型相同
- 3--- 数据存储是连续的;
- 4--- 数组名代表数组的首元素地址(首地址);
- 5--- a[0]、a[1]、a[2] 代表每一行的首地址;
【10】char
- char a[10] = “hello” //以字符串常量直接赋值,只能在对数组初始化的时候
- char b[] = "acb"; //size = 4
- char c[] = {'A','B','C'}; //以printf("%s",c)打印的结果不可预知,最后没有'\0'
输出:printf("%c"); printf("%s"); puts();
输入:scanf("%c"); scanf("%s"); gets();
青春看起来如此完美, 没空闲去浪费时间。
<我们最后的话——刺猬>