4.【数组】
2016-06-21 17:36
375 查看
【数组】 为什么需要数组 为了解决大量同类型数据的的存储和使用问题 为了模拟现实世界 ------------------------- #include <stdio.h> int main() { int a[5] = {1,2,3,4,5}; //a是数组的名字,5表示数组元素的个数,并且这个5个元素分别用a[0] a[1] a[2] a[3] a[4] 表示 int i; for(i=0; i<5; ++i) printf("%d\n",a[i]); //将会依次输出a[5]里面的5个元素的值1 2 3 4 5 printf("%d\n",a[100]); //因为a[100]没有在a[5]里面所以,会是输出一个其他的值 return 0; } ----------------------------------- 数组的分类 一维数组 怎样定义一维数组 为那个变量连续分配存储空间 所有的变量数据类型必须相同 所有变量所占字节大小必须相等 列子: int a[5]; 一维数组名不代表数组中所有的元素 一维数组名代表数组第一个元素的地址 有关一维数组的操作 初始化 完全初始化 int a[5] = {1,2,3,4,5}; 不完全初始化,未进行初始化的元素自动为零 int a[5] = {1,2,3}; 不初始化,所有元素是垃圾值 int a[5]; 清零,里面的每个元素初始值都为零 int a[5] = {0}; 错误写法: int a[5]; a[5] = {1,2,3,4,5}; //错误 只有在定义数组的同时才可以整体赋值,其他情况下整体赋值都是错误的 只有在定义数组的时候,中括号里面的数字才表示元素的个数,其他时候都表示为里面元素的下标,即元素的位置 int a[5] = {1,2,3,4,5}; a[5] = 100; //错误,因为没有a[5]这个元素,内里元素最大只到到a[4] int a[5] = {1,2,3,4,5}; int b[5]; 如果要把a数组中的值全部复制给b数组,怎么写呢? 错误的写法: b = a;// error,因为这里的a代表的是a[5]这个数组里面的第一个元素的地址 正确的写法: for(i=0;i<5;++i) b[i] = a[i]; 赋值------------------------------------ #include <stdio.h> int main() { int a[5]; int i; scanf("%d",a[0]); printf("a[0]=%d\n",a[0]); scanf("%d",a[3]); printf("a[3]=%d\n",a[3]); for (i=0; i<5; ++i) printf("%d",a[i]); return 0; } ----如果输入1和2,则输出结果为:----- a[0]=1 a[3]=2 1,数值,数值,2,数值 排序 求最大/最小值 倒置 查找 插入 删除 ------------------------------------- #include <stdio.h> int main() { int a[7] = {1,2,3,4,5,6,7}; int i=0,j=6,t; while(i<j) { t=a[i]; a[i] = a[j]; a[j] = t; i++; //这样效果会不一样 --j; } for(i=0;i<7;++i) //最后输出结果可以查看 printf("%d\n",a[i]); } ----------输出的结果为:7 6 5 4 3 2 1-------------------- 二维数组 int a[3][4]; 总共是12个元素,可以当做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] a[i][j] 表示第i+1行第j+1列元素 int a[m] ; 该二维数组右下角最大位置的元素只能是a[m-1][n-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}, {5, 6, 7, 8}, {9,10,11,12}, }; 输出二维数组内容: --------------------------------- #include<stdio.h> int main() { int a[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9,10,11,12}, }; int i,j; for (i=0; i<3; ++i) { for (j=0; j<4; ++j) printf("%-5d",a[i][j]); //这里的-5表示格式左对齐5位一格 printf("\n"); } return 0; } ---------------------------------------------------------- 操作 对二维数组排序 求每一行的最大值 判断矩阵是否对称 矩阵的相乘 多维数组 是否存在多维数组 不存在 因为内存是线性一维的 N维数组可以当做每个元素是n-1维数组的一维数组 比如: int a[3][4]; 该数组是含有3个元素的一维数组 只不过每个元素都可以再分成4个小元素 int a[3][4][5]; 该数组是含有3个元素的一维数组 只不过每个元素都是4行5列的二维数组
相关文章推荐