第八节 数组
——一维数组
1:通过对本节课的学习,能够了解、掌握有关数组的相关概念及一维数组定义、初始化、引用和在程序中使用。
1.1教学目的:
1. 数组的相关概念
2. 一维数组的定义、初始化、引用及应用
1.2教学内容:
1. 概念:数组、数组元素、数组下标
2. 一维数组的定义、初始化、引用
3.一维数组在程序中的应用
1.3教学重点:
一维数组的定义、初始化、引用和一维数组在程序中的应用
1.4教学方法:
讲授法、课件演示
1.5学习方法:
听课、做笔记、课后作业
1.6学习时间
第十四周
2:回顾上一节:[15分钟]
do-while循环语句的意义、构成及应用
break、continue循环语句的意义、构成及应用
循环语句的嵌套意义及应用
3:课程知识点讲解:
具体知识点1:数组相关概念 [15分钟]
1、数组:具有相同数据类型的数据的有序的集合。
2、数组元素:数组中的元素。数组中的每一个数组元素具有相同的名称,不同的下标,可以作为单个变量使用,所以也称为下标变量。在定义一个数组后,在内存中使用一片连续的空间依次存放数组的各个元素。
3、数组的下标:是数组元素的位置的一个索引或指示。
4、数组的维数:数组元素下标的个数。根据数组的维数可以将数组分为一维、二维、三维、多维数组。
具体知识点2:一维数组的定义、初始化、引用 [20分钟]
一维数组中的各个数组元素是排成一行的一组下标变量,用一个统一的数组名来标识,用一个下标来指示其在数组中的位置。下标从0开始。一维数组通常和一重循环相配合,对数组元素进行处理。
引例:【案例6.1】输入5个学生某门课的成绩,要求按与输入次序相反的顺序输出。
编程分析:定义5个变量,根据前面所学的顺序结构可以实现其功能。
程序如下:
main()
{ float s1, s2, s3, s4, s5;
printf("Enter five scores: ");
scanf("%f , %f , %f, %f, %f", &s1, &s2, &s3, &s4, &s5);
printf("\nThe score in reverse order are: ");
printf("%10.2f%10.2f %10.2f %10.2f %10.2f \n", s5,s4,s3,s2,s1);
}
定义一维数组的格式:
类型说明 数组名[整型常量表达式]
例如:int a[100];定义了一个数组a,元素个数为100,数组元素类型为整型。
说明:1.数组名:按标识符规则。本例a就是数组名。
2.整型常量表达式:表示数组元素个数(数组的长度)。可以是整型常量或符号常量,不允许用变量。
整型常量表达式在说明数组元素个数的同时也确定了数组元素下标的范围,下标从0开始~整型常量表达式-1(注意不是1~整型常量表达式)。C语言不检查数组下标越界,但是使用时,一般不能越界使用,否则结果难以预料(覆盖程序区-程序飞出,覆盖数据区-数据覆盖破坏,操作系统被破坏,系统崩溃)。
本例数组元素个数是100个,下标从0-99。
3.类型说明:指的是数据元素的类型,可以是基本数据类型,也可以是构造数据类型。类型说明确定了每个数据占用的内存字节数。比如整型2字节,实型4字节,双精度8字节,字符1字节。
本例数组元素是整型,每个元素占2个字节,因为有100个数组元素,所以占用200字节。
4.编译程序为数组分配了一片连续的空间。
C语言还规定,数组名是数组的首地址。即a=&a[0]
一维数组的初始化:
数组可以在定义时初始化,给数组元素赋初值。
数组初始化常见的几种形式:
1.对数组所有元素赋初值,此时数组定义中数组长度可以省略。
例如:int a[5]={1,2,3,4,5};或int a[]={1,2,3,4,5};
2.对数组部分元素赋初值,此时数组长度不能省略。
例如:int a[5]={1,2};
a[0]=1,a[1]=2,其余元素为编译系统指定的默认值0。
3.对数组的所有元素赋初值0。
例如:int a[5]={0};
注意:如果不进行初始化,如定义int a[5];那么数组元素的值是随机的,不要指望编译系统为你设置为默认值0。
数组元素的引用
数组元素的引用形式:数组名[下标]
注意:数组元素引用时,下标为整型的表达式,可以使用变量。
具体知识点3:一维数组的应用 [30分钟]
案例讲解:
【案例6.2】用数组完成案例6.1。
编程分析:引用数组处理每个学生的成绩。程序如下:
main()
{ int i;
float score[5]; /*定义有5个