数组也是一种数据类型,里面可以放各种相同类型的数据,就像是一个大仓库,里面存放的数据称为数组元素。数组可以分为一维数组和多维数组,多维数组可以看成是多个一维数组构成,比如一个三行两列的二维数组a[3][2],可以看作是三个一维数组构成,分别是a[0];a[1];a[2];
一维数组的定义和使用:
int a[5] = {0,1,2,3,4,5};printf("%d\n",a[2]);
上面定义了一个int型的数组,这种定义方式是既给了数组的空间大小,也给了足够数量的值。因为在数组中元素是按照写入时的顺序存储的,且每个元素都有自己的下标,从‘0’开始,所以访问数组元素一定要给下标,如上所示a[2]表示的元素是上面数组中的“2”。需要注意的是数组访问时只能以元素的形式访问,意味着一定要加下标。下面还有两种常用的数组定义方式:
int b[] = {7,6,2};//第一种int c[9] = {4,5,9};//第二种
b数组没有声明元素个数(也就是给多少存储空间),但是已经给它赋值了,那么这个数组的大小就只能依赖于赋值。数组c给定了元素个数,但是在赋值时并没有给足够的数据,那么剩下的空间系统会自动使用0补齐,当然在打印的时候不会把系统补的0打印出来。下面示范错误的定义和使用方式:
int d;//错误写法int e[];//错误写法int f = {7,8,9};//错误写法,数组名后面的[]一定不可省略,这个[]是数组的标志 //而且[]中的数值一定要是常量,或者空着不写//正确写法,如下int g[5];g[5] = {9,5,3,7,2};
一维数组的使用,完成冒泡排序冒泡排序算法如下:(升序)
比较相邻的元素,如果第一个比第二个小就交换。
依次往后比较,直到最后一个元素完成比较。
针对所有的元素重复以上的步骤,除了已经完成排序的数列,(元素的个数 - 1)减去(已经完成的排序次数),这样计算是因为如果一个数组有5个元素,那么第一次排序的时候只需要比较4次就可以确定一个元素的位置是正确的;那么下一次排序的时候就只需要对剩下的4个元素排序,比较3次。下面用n表示元素的个数,i表示需要排序的次数,j表示每一次排序需要比较的次数。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
#include int main(){ int a[] = {7,5,9,12,0,63,25}; int i,n,j,k; n = sizeof(a) / sizeof(int); for (i=0; i-1; i++) { for(j=0; j-1-i; j++) { if(a[j] < a[j+1]) { k = a[j]; a[j] = a[j+1]; a[j+1] = k; printf("a[j]%d,a[j+1]%d,k=%d\n",a[j],a[j+1],k); } } } for(i=0; i printf("%5d",a[i]); printf("\n"); return 0;}
首先使用数组大小除以数组类型求出有多少元素,然后使用for循环完成排序,最后使用for循环将排序完成的数组输出。这段时间一直在学习C语言,前几天没有写学习笔记是因为感觉自己学的比较杂,不能形成自己的知识框架,所以一直没有记录。本来今天是打算把数组相关的知识都写完的,但是因为开始写的时间有点晚了,所以写不完了,剩下的明天补上。