C语言程序设计教案
课程:C程序设计 制订日期:2015-11-7
授课章节 | 5.1 一维数组 | 授课形式 | 讲授、演示 |
授课班级 | 2015级软件工程 | 授课时数 | 1学时(45分钟) |
授课日期 | 2015年11月8日星期日 | 授课地点 | E座607 |
教学目标与要求: 1、掌握一维数组的定义和引用 2、掌握一维数组的初始化方法 3、了解与一维数组有关的应用编程方法 | |||
教学重点: 一维数组的定义和引用、初始化方法 教学难点: 与一维数组有关的应用编程方法 | |||
教学准备: 1.教学材料 教材:C语言程序设计(第四版)——谭浩强著 清华大学出版社 参考资料: C++语言程序设计与实践——张思民著 清华大学出版社 2.制作课件,讲稿。 | |||
教学过程 | 备注 | ||
授课内容 第5章 数组 5.1 一维数组 数组是具有相同类型变量的集合。在数组中,各个变量称之为元素。其中,同一数组中的所有元素都有相同的名字,只是下标不同。只有一个下标的数组称之为一维数组,有多个下标的数组称之为多维数组。 1.一维数组的定义 一维数组定义的一般形式为: 数据类型 数组名 [常量表达式]; 说明: (1)数据类型表示数组元素的类型。 (2)数组名的命名规则跟变量名一样。 (3)方括号中的常量表达式是数组的容量,即包含元素的个数。 例如:定义数组 int a[10]; 表示定义了一个整型的数组a,含有10个元素(每个元素都是整型)。其说明如图6.1所示。 图6.1 数组定义的说明 数组一旦定义,各数组元素名就确定了。数组元素的一般形式为: 数组名[下标] 数组的第一个元素的下标总是从0开始的。对于上面所定义的数组a[10],其元素依次为a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9]。 其实,数组名代表的是数组的首地址,下标则是数组元素到数组开始的偏移量。系统为数组在内存分配的是一片连续的存储的单元,如定义了“int a[10];”,则它的10个元素在内存中的排列情况如图6.2所示: 图6.2 一维数组元素在内存中的排列情况 2.一维数组的初始化 数组初始化是指在数组定义时给数组元素赋予初值。数组初始化是在编译阶段进行的。这样将减少运行时间,提高效率。 数组初始化赋值的一般形式为: 数据类型 数组名[常量表达式] = {值,值,……,值}; 其中在{ }中的各数据值依次为各元素的初值,各值之间用逗号间隔。 例如: int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 相当于a[0] = 0; a[1] = 1; ...; a[9] = 9; 数组初始化赋值的几点说明: (1)可以只给部分元素赋初值。当{ }中数据值的个数少于元素个数时,只给前面部分元素赋值。例如: int a[10] = {0, 1, 2, 3, 4}; 表示只给a[0]~a[4]这5个元素赋值,而后5个元素将被编译器自动赋0值。如图6.3所示。 图6.3 未赋值的元素自动被0填充 (2)只能给元素逐个赋值,不能给数组整体赋值。例如:给十个元素全部赋1值,只能写为: int a[10] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; 而不能写为: int a[10]=1; (3)如在定义数组时给全部元素赋初值,则在数组定义的说明中,可以不显式的指出数组容量,系统会以给出的数值个数默认为数组容量。 例如: int a[5] = {1, 2, 3, 4, 5}; 可写为: int a[] = {1, 2, 3, 4, 5}; 注意,C++ 数组元素以0开头而不是以1开头,经常会有初学者搞错。 例如,声明了数组 int a[5]; 这表示数组a[ ]有5个元素:a[0]、a[1]、a[2]、a[3]、a[4]。这个数组中没有a[5]这个元素。 需要指出的是,这时如果在程序中使用了a[5],运行程序时C++ 系统并不会报错。C++ 不会检查访问数组是否越界,系统会把紧接着a[4]后面的存储单元中的值取出来当作a[5],程序能够使用这个值继续运行,并得出结果,尽管这个结果是错误的。如图6.4所示。 图6.4 当使用数组中并没有的元素a[5]时,其取值情况 (4)对于分布有规律、能用表达式表示元素的数组,经常采用循环结构来给数组元素进行初始化,先声明一个数组,然后在循环中使用赋值语句逐个初始化数组元素。例如: int a[5]; for(i = 0; i < 5; i++) { a[i] = i + 1; } 通过循环,数组下标 i 从 0逐个递增到4(因为当 i=5时,条件i<5为假,不能进入循环体)。 【例6-1】随机产生10个100以内的整数,并出其中的最大数。 源程序如下: // 随机产生10个100以内的整数,并出其中的最大数。 #include <stdio.h> #include <time.h> void main() { 声明数组a[ ]有10个元素 int i, max, a[10]; int N = 100; 循环变量i的取值从0到9,与数组a[ ]的下标值相同 srand(time(0)); for(i = 0; i < 10; i++) 每循环一次,数组a[ ]的下标值都会变化 采用循环,产生10个100以内的随机整数,为数组赋值,并输出这10个数数组全部赋值为1 { a[i] = rand() % N +1; printf("a[%d]=%d \n", i, a[i]); } max = a[0]; 从a[1]到a[9]逐个与max比较,较大者就赋值给max,使max总是元素值中的最大数。 for(i = 1; i < 10; i++) if(a[i] > max) max = a[i]; printf("最大值max = %d \n" , max ); } 3.总结强调重要的知识点 熟练掌握数组的赋值与运算 4.课后作业 | |||
更新、补充、删节内容 | |||
无 | |||
教学反思 1、 2、 | |||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论