- 1 .为什么需要数组
- 为了解决大量同类型的数据的存储和使用问题
- 为了模拟世界
- 数组的分类
- 一维数组
- 怎么样去定义数组
- 为n 个变量连续分配存储空间
- 所有的变量数据类型必须相同
- 所有变量所占的字节大小必须相同。
- 例子:
- Int a [5];
- 一维数组不代表数组中的所有的元素!
- 一维数组名所代表数组第一个元素的地址! a[0]
- 定义数组的时候 int a[5] 所代表的是5个数。 但是数组的索引是从零开始! 主要循环的时候!不然它出错啦!
- 有关一维数组的操作
- 初始化
- 完全初始化
- Int a[3] = {1,2,3};
- 不完全的初始化
- Int a[5] = {1,2,3}; 注意: 不完全的初始化的情况下,没有被初始化的系统会默认为0;
- 完全没有初始化
- Int a[5]; //不完全初始化的情况下,会出现5个垃圾数字
- 清零的技巧:
- Int a[5] = {0}; //那么系统后面4个都为零啦!
- 错误的写法:
- 1.
- int a[6] ; error 错误!
- a[6] = {1,2,3,4,5,6,};
- 记忆法: 只有在定义的数组的同时才可以整体赋值!
- 原因: 因为在定义 a[6] 之前 是定义了6个 而a[6] 是代表从 元素的下标开始计算起来的。所以会报错!
- 2.
- int a[5] = {1,2,3,4,5};
- int b[5] = a[5];
- 原因:数组是不能够直接赋值给另外一个数组!
- 正确做法为:
- int i = 1;
- int a[5] = {1,2,3,4,5};
- int b[5];
- for (i = 0;i<5;i++)
- {
- b[i] = a[i];
- }
- for(i = 0;i<5;i++)
- {
- printf("%d\n",b[i]);
- }
- 算法要掌握的内容:
- 赋值
- 排序
- 最大最小值
- 倒置
- 查找
- 插入
- 删除。
- 把一个元素倒置的算法:
- #include <stdio.h>
- int main(void)
- {
- int a[5] = {1,2,3,4,5};
- int j = 4;
- int i = 0;
- int t = 0;
- while (i <=j)
- {
- t = a[i];
- a[i] = a[j];
- a[j] = t;
- i++;
- j--;
- }
- for (i = 0; i<=4;i++)
- {
- printf("%d",a[i]);
- }
- }
- 二维数组
- Int a[3][4]; //这个是指个数! 而数组的索引是从零开始!
- 总共是 12个元素,可以看做是三行四列
- a[0][0] a[0][1] a[0][2] a[0][3]
- a[1][0] a[1][1] a[1][2] a[1][3]
- a[2][0] a[2][1] a[2][2] a[2][3]
- int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
- int a[i][m] =a[i-1][m-1] //获得索引元素所对应的值!
- 初始化问题:
- int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
- int a[3][4] =
- {
- {1,2,3,4},
- {1,2,3,4},
- {1,2,3,4}
- };
- 操作
- #include <stdio.h>
- int main(void)
- {
- //int a[2][3]={1,2,3,4,5,6};
- int a[2][3] = {
- {1,2,3},
- {4,5,6}
- };
- int i = 0;
- int j = 0;
- for(i = 0;i<2;i++) //a[0][0] a[0][1] a[0][2]
- {
- for(j = 0;j<3;j++)
- {
- printf("%d ",a[i][j]);
- }
- printf("\n");
- }
- }
- /*
- 二维数组外循环控制行!内循环控制列。
- 因为索引是从零开始的, 而a上面的是个数。
- */
- 多维数组
- 是否存在多维数组
- 不存在
- 因为内存是线性一维的。
- N维数组可以当作是每个元素的n – 1维数组里面的一维数组
- Int a[3][4];
- 那么该数组只含有三个一维数组,而三个一维数组里面再分成4个小元素。
- Int a[3][4][5];
- 那么该数组只含有三个一维数组,而该三个一维数组中有4行5列。
- a[0][0] a[0][1] a[0][2] a[0][3]
- a[1][0] a[1][1] a[1][2] a[1][3]
- a[2][0] a[2][1] a[2][2] a[2][3]
- 用循环输出就是 : 外循环控制行 ,内循环控制列。
今天学习不用心,经常挨夜!任务完成后看书或者整理下论坛都可以.但请不要浪费时间。