C语言程序设计教案 数组程序设 说明 本讲1.数组的概念 内容2.一维数组的定义、初始化、引用 3.二维数组的定义、初始化、引用 重点一维数组的定义、初始化及引用、二维数组的定义、初始化及引用 难点一维数组的定义、初始化及引用、二维数组的定义、初始化及引用 问题当我们需要定义10个甚至更多的整型或其它类型时,怎么办?这时候 提出就需要一个简便的操作方式,那么就可以用数组来实现。 数组的概念 由相同数据类型的变量按照一定的次序组织起来,就是数组。构成 数组的变量称为数组元素。用一个数组名和下标来唯一确定数组中的元 素。数组类型属于构造数据类型。 、一维数组 【定义】 类型标识符数组名[常量表达式] int aa[4 【注意】 (1)类型标识符指明数组的数据类型,即数组中每个元素的数据类型 (2)数组名的命名应遵循标识符的命令规则 (3)“常量表达式”用以表示数组元素的个数,也就是数组长度,它可以 是整型常量、整型常量表达式或整型符号常量 (4)不允许对数组的大小作动态定义,即数组长度不容许是变量 (5)数组的下标下限为0:数组的下标上限为“常量表达式-1” 【初始化】 可以用下列方法对一维数组进行初始化: (1)对数组的全部元素赋初始值。 如:intm[5}={1,21,35,4,58}; (2)对数组的部分元素赋初始值。 如: int num[5}={1,24,3 只给数组的前三个元素赋指定的初始值,后两个元素按系统规定整型赋 初始值为0,字符型赋初始值为”0 (3)对数组的全部元素赋初始值时,可以将数组定义为一个不确定长度 的数组。如: int num[]={19,2,32,4,51}; 【引用】 引用数组中的元素可以通过使用数组名及其数组名后的方括号中 的下标来实现。只能引用数组元素而不能一次引用整个数组。引用数组 元素时,数组元素的下标可以是整型常量、变量或表达式。 举例|例求10个数的最大值与最小值,10个数用数组描述 maino I float a[10] x=-le20, min=le20 for(i=0;i<=9;i++) /*输入10个数*/
C 语言程序设计教案 数组程序设计(一) 内容 说明 本讲 内容 1. 数组的概念 2.一维数组的定义、初始化、引用 3.二维数组的定义、初始化、引用 重点 一维数组的定义、初始化及引用、二维数组的定义、初始化及引用 难点 一维数组的定义、初始化及引用、二维数组的定义、初始化及引用 问题 提出 当我们需要定义 10 个甚至更多的整型或其它类型时,怎么办?这时候 就需要一个简便的操作方式,那么就可以用数组来实现。 举例 一、数组的概念 由相同数据类型的变量按照一定的次序组织起来,就是数组。构成 数组的变量称为数组元素。用一个数组名和下标来唯一确定数组中的元 素。数组类型属于构造数据类型。 二、一维数组 【定义】 类型标识符 数组名 [常量表达式]; int aa[4]; 【注意】 ⑴类型标识符指明数组的数据类型,即数组中每个元素的数据类型; ⑵数组名的命名应遵循标识符的命令规则; ⑶“常量表达式”用以表示数组元素的个数,也就是数组长度,它可以 是整型常量、整型常量表达式或整型符号常量。 ⑷ 不允许对数组的大小作动态定义,即数组长度不容许是变量。 ⑸ 数组的下标下限为 0;数组的下标上限为“常量表达式-1”。 【初始化】 可以用下列方法对一维数组进行初始化: ⑴ 对数组的全部元素赋初始值。 如: int m[5]={1,21,35,4,58}; ⑵ 对数组的部分元素赋初始值。 如: int num[5]={1,24,3}; 只给数组的前三个元素赋指定的初始值,后两个元素按系统规定整型赋 初始值为 0,字符型赋初始值为’\0’。 ⑶ 对数组的全部元素赋初始值时,可以将数组定义为一个不确定长度 的数组。 如:int num[ ]={19,2,32,4,51}; 【引用】 引用数组中的元素可以通过使用数组名及其数组名后的方括号中 的下标来实现。只能引用数组元素而不能一次引用整个数组。引用数组 元素时,数组元素的下标可以是整型常量、变量或表达式。 例 求 10 个数的最大值与最小值,10 个数用数组描述。 main() { float a[10]; int i; float max=-1e20, min=1e20; for(i=0; i<=9;i++) /*输入 10 个数*/
C语言程序设计教案 scanf("%f”,&a[i]) for (i=0: i<=9: i /*求最大值与最小值*/ if (a [i] >max) max=a [i] f(a [i] <min) min=a li]: printf(″最大值=%f,最小值=%f",max,min) 、二维数组 【定义】 数据类型数组名[常量表达式1][常量表达式2] float a[3][41 【注意】 二维数组中元素的排列顺序是按行排列,即在内存中先顺序存放第注意 行的元素,再存放第二行的元素,即:a0a→a→a03→a0→an→a12二维数 组的元 【初始化】 素在内 可以用下列方法对二维数组进行初始化 存当中 (1)分行对二维数组初始化 的存储 如:inta[3][4]={128,3,4,15,62,7,8},(9,10,11,12};形式 (2)按数组排列的顺序对各元素赋初值。 如:inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12} (3)可以对部分元素赋初值 如:inta[3][4]={4,{5},{9}; 只对每行的第一个元素赋初值,其余元素值自动为0 (4)如果对全部元素赋初值,则定义数组时对第一维的长度可以不指 定,但第二维的长度不能省略。 如:inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 也可以只对部分元素赋初值 [][4]={{0,0,3},{},{1,3,5,9}} 【引用】 二维数组也只能引用数组元素,而不能引用整个数组 例利用二维数组从键盘上输入6个数,按2行3列的形式输出 举例 maino inta[2][3],i,j; 注意: 引用数 j3;j+) 组的方 scanf(“%d”,&a[i][j) for(j=0;j<3;j++) ali]lijl printf(“Ⅶn”)
C 语言程序设计教案 举例 scanf (″%f″,&a[i] ); for (i=0; i<=9;i++) /*求最大值与最小值*/ { if(a[i]>max) max=a[i]; if(a[i]<min) min=a[i]; } printf (″最大值=%f, 最小值=%f″, max, min); } 三、二维数组 【定义】 数据类型 数组名 [常量表达式 1] [常量表达式 2]; float a[3][4]; 【注意】 二维数组中元素的排列顺序是按行排列,即在内存中先顺序存放第 一行的元素,再存放第二行的元素,即:a00→a01→a02→a03→a10→a11→a12 →a13→a20→a21→a22→a23。 【初始化】 可以用下列方法对二维数组进行初始化: ⑴ 分行对二维数组初始化。 如: int a[3][4]={{1,28,3,4},{15,62,7,8},{9,100,111,12}}; ⑵ 按数组排列的顺序对各元素赋初值。 如: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; ⑶ 可以对部分元素赋初值。 如: int a[3][4]={{1},{5},{9}}; 只对每行的第一个元素赋初值,其余元素值自动为 0。 (4) 如果对全部元素赋初值,则定义数组时对第一维的长度可以不指 定,但第二维的长度不能省略。 如:int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 也可以只对部分元素赋初值。 如:int a[ ][4]={{0,0,3},{ },{1,3,5,9}}; 【引用】 二维数组也只能引用数组元素,而不能引用整个数组。 例 利用二维数组从键盘上输入 6 个数,按 2 行 3 列的形式输出。 main() {int a[2][3],i,j; for(i=0;i<2;i++) for(j=0;j<3;j++) scanf(“%d”,&a[i][j]); for(i=0;i<2;i++) { for(j=0;j<3;j++) printf(“%4d”,a[i][j]); printf(“\n”); } } 注意: 二维数 组的元 素在内 存当中 的存储 形式 注意: 引用数 组的方 法
C语言程序设计教案 例分析下列程序的输出结果 main inta[3][3]={1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0; j<=i; j++) st=alilljl printf( %d\n", s) 通过对数组的学习,可以看到数组在处理多个相同的基本数据类型时 总结非常方便,另外,数组和指针结合起来处理问题更是得心应手,这个我 们将在后面学习
C 语言程序设计教案 例 分析下列程序的输出结果。 main() { int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=1;i<3;i++) for(j=0;j<=i;j++) s+=a[i][j]; printf("%d\n",s); } 总结 通过对数组的学习,可以看到数组在处理多个相同的基本数据类型时 非常方便,另外,数组和指针结合起来处理问题更是得心应手,这个我 们将在后面学习
C语言程序设计教案 数组程序设计(二) 说明 本讲1.数组排序方法-冒泡法 内容2.数组排序方法-选择法 重点两种排序方法的思路 难点将两种排序方法应用到实例当中 问题当我们需要对多个相同数据类型的数据进行从大到小或从小到大排序 提出时,这时我们就可以利用选择法和冒泡法实现 冒泡法排序的思路 冒泡法排序也叫起泡法排序,是相邻两元素进行比较的一种排序方 法。每遍都从第一个元素开始,两两比较,若不符合相应序列,则两数 值交换位置。当比较完一遍后,最大(或最小)的数已沉底,被放置在 最后的位置,而相应较小(或较大)的数则上浮。由于第一遍已找出最 大(或最小)的数,第二遍不需要与其比较,所以第二遍比第一遍的比 较次数少一次。同样需要n-1遍比较才能完成排序 例从键盘上输入10个数,用冒泡法排序(由小到大)。 参考程序如下 main ( 详细讲 i float a [10] 解冒泡 int 1,], t 法比较 举例 printf(“请输入10个元素:”) 大小的 for(i=0;i<10;i++) 过程 scanf(“%f”,&a[i]); for (i=0: 1<=8 for (j=0; j<=8-1: j++) if(a[j]>a[j+1]) {t=a[j]:a[j]=a[j+1];a[j+1]=t; for(i=0;i<10;i+) printf(“a[%d]=%fⅦn”,i,a[i] 选择法排序的思路 选择法排序首先取数组中第一个元素,依次与后面的元素进行比 较,若不符合相应的序列,记录较小(或较大)元素的下标,且用较小 (或较大)的元素与后面的元素继续比较,直到内层循环结束。当内层 循环结束后,记录的下标即为比较范围内最小(或最大)的元素的下标, 同时将该元素交换到第一个元素的位置。这样每进行一遍比较只进行 次数据交换,若有n个元素则比较n-1次后,最小数值(或最大数值) 就被交换到第一个元素的位置。然后再取第二个元素依次与后面的n 2个元素进行比较,方法同上。每一遍的比较次数比前一遍少一次。直 到最后一遍比较次数为1,一共要进行n-1遍的比较。 例用选择法对6个数进行排序。 参考程序如下
C 语言程序设计教案 数组程序设计(二) 内容 说明 本讲 内容 1.数组排序方法---冒泡法 2.数组排序方法---选择法 详细讲 解冒泡 法比较 大小的 过程 重点 两种排序方法的思路 难点 将两种排序方法应用到实例当中 问题 提出 当我们需要对多个相同数据类型的数据进行从大到小或从小到大排序 时,这时我们就可以利用选择法和冒泡法实现。 举例 一、冒泡法排序的思路 冒泡法排序也叫起泡法排序,是相邻两元素进行比较的一种排序方 法。每遍都从第一个元素开始,两两比较,若不符合相应序列,则两数 值交换位置。当比较完一遍后,最大(或最小)的数已沉底,被放置在 最后的位置,而相应较小(或较大)的数则上浮。由于第一遍已找出最 大(或最小)的数,第二遍不需要与其比较,所以第二遍比第一遍的比 较次数少一次。同样需要 n-1 遍比较才能完成排序。 例 从键盘上输入 10 个数,用冒泡法排序(由小到大)。 参考程序如下: main() { float a[10]; int i ,j,t; printf(“请输入 10 个元素:”) for ( i=0;i<10;i++) scanf ( “%f”, &a[i] ); for(i=0; i<=8; i++) for(j=0; j<=8-i; j++) if(a[j]>a[j+1]) {t=a[j]; a[j]=a[j+1]; a[j+1]=t; } for (i=0; i<10; i++) printf( “a[%d]=%f \n”, i, a[i] ); } 二、选择法排序的思路 选择法排序首先取数组中第一个元素,依次与后面的元素进行比 较,若不符合相应的序列,记录较小(或较大)元素的下标,且用较小 (或较大)的元素与后面的元素继续比较,直到内层循环结束。当内层 循环结束后,记录的下标即为比较范围内最小(或最大)的元素的下标, 同时将该元素交换到第一个元素的位置。这样每进行一遍比较只进行一 次数据交换,若有 n 个元素则比较 n-1 次后,最小数值(或最大数值) 就被交换到第一个元素的位置。然后再取第二个元素依次与后面的 n- 2 个元素进行比较,方法同上。每一遍的比较次数比前一遍少一次。直 到最后一遍比较次数为 1,一共要进行 n-1 遍的比较。 例 用选择法对 6 个数进行排序。 参考程序如下:
C语言程序设计教案 main 举例 /从小到大*/ 详细讲 inta[6]={5,8,9,4,7,2},i,j,t,k 解选择 for(i=0;i<5;i++) 法比较 大小的 过程 for(j=i+1: j<6: j++) if(alk]>alilk=j if(i!=k) t=alil; a[i]=alk]: a[k]=t for(i=0;i<6;i++) printf("a[%d]=%d\n,i, ali) 总结排序是计算机进行数据处理的基本运算之一,排序后的数据便于进行查 找,选择合适的排序方法可以提高编程效率。冒泡法和选择法是我们重 点掌握的内容
C 语言程序设计教案 举例 main() /*从小到大*/ { int a[6]={5,8,9,4,7,2},i,j,t,k; for(i=0;i<5;i++) { k=i; for(j=i+1;j<6;j++) if(a[k]>a[j])k=j; if(i!=k) { t=a[i];a[i]=a[k];a[k]=t; } } for (i=0;i<6;i++) printf("a[%d]=%d\n",i,a[i]); } 详细讲 解选择 法比较 大小的 过程 总结 排序是计算机进行数据处理的基本运算之一,排序后的数据便于进行查 找,选择合适的排序方法可以提高编程效率。冒泡法和选择法是我们重 点掌握的内容