你现在所处的位置在:首页→C语言教学→幻灯片版→第五章数组 第五章数组 数组概念 维数组 二维教组及多维数组 字符数组和字爷串 BACK
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章 数组 1 第五章 数组 一维数组 二维数组及多维数组 字符数组和字符串 数组概念
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章数组 教组概念 构造数据类型之 ·数组:有序数据的集合,用数组名标识 元素:属同一数据类型,用数组名和下标确定 BACK 2
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章 数组 2 数组概念 • 构造数据类型之一 • 数组:有序数据的集合,用数组名标识 • 元素:属同一数据类型,用数组名和下标确定
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章数组 5.1一维数组 ]:数组运算符 单目运算符 优先级(1) 左结合 ★一维数组的定义 不能用() 今定义方式 数据类型数组名[常量表达式]; 例inta[6]; 合法标识符 表示元素个数 a a0 下标从0开始 all a[2] 编译时分配连续内存 [3] 数组名表示内存首地址, 内存字节数=数组维数* 是地址常量 a[4] Sizes元素数据类型) a[5] BACK
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章 数组 3 一维数组的定义 ❖定义方式: 数据类型 数组名[常量表达式]; 合法标识符 表示元素个数 下标从0开始 [ ] :数组运算符 单目运算符 优先级(1) 左结合 不能用( ) 例 int a[6]; 0 a[0] 1 4 5 a[1] a[2] a[3] a[4] a[5] 2 3 a 编译时分配连续内存 内存字节数=数组维数* sizeof(元素数据类型) 数组名表示内存首地址, 是地址常量 5.1 一维数组
你现在所处的位置在:首页→C语言教堂→幻灴片版→第五章数组 例 int data[5] datl[5]-10;∥C语言对数组不作越界检查,使用时要注意 维数组的引用 数组必须 只能逐个引用数组元索。不能一次引用整个数组 令数组元素表示形式:数组名[下标] 其中:下标可以是常量或整型表达式 例inta[1l0] printf(%d', a (×) 必须for=0j<10j++) printf("%dt, alD BACK 4
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章 数组 4 ❖数组必须先定义,后使用 ❖只能逐个引用数组元素,不能一次引用整个数组 ❖数组元素表示形式: 数组名[下标] 其中:下标可以是常量或整型表达式 例 int i=15; int data[i]; (不能用变量定义数组维数) 例 int a[10]; printf(“%d”,a); () 必须 for(j=0;j<10;j++) printf(“%d\t”,a[j]); () 例 int data[5]; data[5]=10; //C语言对数组不作越界检查,使用时要 注意 一维数组的引用
你现在所处的位置在:首页→C语言教学→幻灴片版→第五章数组 维数组的初始化 今初始化方式 inta[S]={1,2,3,4,5} 等价于:a[0]=1;a[1]=2;a[2]=3;a[3]4;a[4=5 今说明: ●数组不初始化。其元素值为随机数 ●对 static数组元素不赋初值。系统会自动赋以0值 ●三全都数纪天质,可不指定数 inta={1,2,3,4,5,6}; 编译系统根据初值个数确定数组维数 BACK
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章 数组 5 ❖初始化方式 在定义数组时,为数组元素赋初值 (在编译阶段使之得到初值) int a[5]={1,2,3,4,5}; 等价于:a[0]=1; a[1]=2; a[2]=3; a[3]=4; a[4]=5; ❖说明: ⚫数组不初始化,其元素值为随机数 ⚫对static数组元素不赋初值,系统会自动赋以0值 ⚫当全部数组元素赋初值时,可不指定数组长度 如 int a[5]={6,2,3}; 等价于: a[0]=6; a[1]=2;a[2]=3; a[3]=0; a[4]=0; 如 int a[3]={6,2,3,5,1}; () static int a[5]; 等价于:a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4]=0; ⚫只给部分数组元素赋初值 int a[]={1,2,3,4,5,6}; 编译系统根据初值个数确定数组维数 一维数组的初始化
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章数组 例用冒泡法对10个数排序 排序过程: (1)比较第一个数与第二个数,若为逆序a[0]a[1,则交换;然 后比较第二个数与第三个数;依次类推,直至第n-1个数和第 n个数比较为止—第一趟冒泡排序,结果最大的数被安置在 最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在 第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束 BACK 6
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章 数组 6 排序过程: (1)比较第一个数与第二个数,若为逆序a[0]>a[1],则交换;然 后比较第二个数与第三个数;依次类推,直至第n-1个数和第 n个数比较为止——第一趟冒泡排序,结果最大的数被安置在 最后一个元素位置上 (2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在 第n-1个元素位置 (3)重复上述过程,共经过n-1趟冒泡排序后,排序结束 例 用冒泡法对10个数排序
383838 1313 例 494949 272727 27 6565 27 3030 30 38 762730 4949 27130 65 65 例用冒泡法对10个数排序(图解) 30|7676 9797 初始关键字一 第第 第第第第第 四五 七 趟趟 BACK
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章 数组 7 例 38 49 65 76 13 27 30 97 第 一 趟 38 49 65 13 27 30 76 第 二 趟 38 49 13 27 30 65 第 三 趟 38 13 27 30 49 第 四 趟 13 27 30 38 第 五 趟 13 27 30 第 六 趟 49 38 65 97 76 13 27 30 初 始 关 键 字 n=8 38 49 76 9713 97 97 27 30 97 13 76 76 76 27 30 13 2765 3065 65 13 13 49 3049 2749 2738 308 38 13 27 第 七 趟 例 用冒泡法对10个数排序(图解)
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章数组 例用简单选择法对10个数排序 排序过程: (1)首先通过n-1次比较,从n个数中找出最小的,将它与第一个数 交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上 (2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录, 将它与第二个数交换—第二趟选择排序 (3)重复上述过程,共经过n-1趟排序后,排序结束 BACK Io&8
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章 数组 8 排序过程: (1)首先通过n-1次比较,从n个数中找出最小的,将它与第一个数 交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上 (2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录, 将它与第二个数交换—第二趟选择排序 (3)重复上述过程,共经过n-1趟排序后,排序结束 例 用简单选择法对10个数排序
你现在所仆的位置在首而→C语言教学→幺T片版→第五童数组 例i=1初始: 386597764927 k k i=2一趟:13(276597764938 二趟:13276597764938 三趟:132738[97764965] 四趟:13273849[769765] 五趟:13273849659776] 六趟:132738496576[97]
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章 数组 9 例 初始: [ 49 38 65 97 76 13 27 ] k j i=1 13 49 i=2 一趟: 13 [38 65 97 76 49 27 ] 27 38 二趟: 13 27 [65 97 76 49 38 ] 三趟: 13 27 38 [97 76 49 65 ] 四趟: 13 27 38 49 [76 97 65 ] 五趟: 13 27 38 49 65 [97 76 ] 六趟: 13 27 38 49 65 76 [97 ] k k k k j j j j j j j j j j 例 用简单选择法对10个数排序
你现在所处的位置在西语言教学红片版ec0o 5.2二维数组及多维数组 ★二维数组的定义 cIOJOJ2 元素个数=行数 c0[0[3 今定义方式: InG 数据类型数组名[常量装达式需量表c0 数组 例inta[3][4]; c[0 ●原 float b[2]5] intc[2][3]4]; c0J22 inta[3,4]; cO213 clOOt int a32 aLot cccc ao1 clI allo c[1[12 aoo alol all c[[13 c[1201 a a a[2]0 a[2][0]a[2][1 c[12[1 a[2][1 c[1[2[2 c[1[2[3 BACK IU
你现在所处的位置在:首页→C语言教学→幻灯片版→第五章 数组 10 二维数组的定义 ❖定义方式: 数据类型 数组名[常量表达式][常量表达式]; ❖数组元素的存放顺序 ⚫原因:内存是一维的 ⚫二维数组:按行序优先 ⚫多维数组:最右下标变化最快 例 int a[3][4]; float b[2][5]; int c[2][3][4]; int a[3,4]; () 行数元素个数=行数列数*列数 int a[3][2] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1] 0 1 4 5 2 3 a[0][0] a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1] int c[2][3][4] 0 1 2 3 4 5 6 7………... 20 21 22 23 c[0][0][0] c[0][0][1] c[0][0][2] c[0][0][3] c[0][1][0] c[0][1][1] c[0][1][2] c[0][1][3] c[0][2][0] c[0][2][1] c[0][2][2] c[0][2][3] c[1][0][0] c[1][0][1] c[1][0][2] c[1][0][3] c[1][1][0] c[1][1][1] c[1][1][2] c[1][1][3] c[1][2][0] c[1][2][1] c[1][2][2] c[1][2][3] 5.2 二维数组及多维数组