您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 《C语言程序设计》教案第四章数组—一维数组
学习好资料欢迎下载《C语言程序设计》课程教案表授课题目第四章数组(1)——一维数组课时安排2授课时间教学目的和要求1.掌握:一维数组的定义和使用方法;2.熟悉:数组的概念教学内容1.基本内容:(1)数组的概念(2)一维数组2.重点:一维数组讲课进程和时间分配1、导入(10分钟)板书:从本次课开始我们将学习数组2、数组的概念(25分钟)例如:输入100名学生的成绩,要求输出高于平均分的那些成绩。平均分可以在读入数据的同时,用边累加成绩边统计数据个数的方法最后求出,但只有读入最后一个学生的分数之后才能求出平均分,因此,必须把100个学生的分数全部保留下来,然后逐个与平均分比较,才能把高于平均分的成绩打印出来。为了保存学生的成绩,就需要有100个变量(假定为a1、a2、…、a100)来存放,且用变量与平均分average一一比较如下:if(a1average)printf(“%f\n”,al);if(a2average)printf(“%f\n”,a2);……if(a100average)printf(“%f\n”,a100);这样的程序是无法让人接受的。解决上述问题方法:(1)在C语言中,我们可以定义一个名叫a的变量,它不代表一个单一的成绩值,而是代表整个成绩组。使用数组元素a[1]、a[2]、…、a[100]来代替a1、…、a2、…、a100,则程序就会简单得多,只需要用一个for循环就能完成100次比较:for(i=1;i=100;i++)if(a[i]average)printf(“%f\n”,a[i]);(2)在这里,a代表数组名,a[i]代表a数组中的一个元素,i是数组元素的下标,当i的值为1时,a[i]代表a[1];当i的值为2时,a[i]代表a[2]。在循环中当i从1变化到100时,a[i]数据类型基本类型构造类型指针类型空类型整型实型字符型长整型整型、短整型无符号整型单精度双精度数组结构体共用体枚举型学习好资料欢迎下载也就逐个代表a[1]到a[100]。(3)同样a[5]表示在a的数组里的第五号元素。归纳:(1)数组具有相同数据类型的数据的有序的集合。-----构造类型作用:1)保存大量同类型的相关数据。如矩阵运算,表格数据等2)便于引用和操作(2)数组元素:数组中的元素(变量)。数组中的每一个数组元素具有相同的名称,不同下标的元素,可以作为单个变量使用,所以也称为下标变量。在定义一个数组后,在内存中使用一片连续的空间依次存放数组的各个元素。(3)数组的下标:是数组元素的位置的一个索引或指示。(4)数组的维数:数组元素下标的个数。根据数组的维数可以将数组分为一维、二维、三维、多维数组。例如:inta[10];定义了一个一维数组a,该数组由10个数组元素构成的,其中每一个数组元素都属于整型数据类型。数组a的各个数据元素依次是a[0],a[1],a[2]…a[9](注意:下标从0-9)。每个数据元素都可以作为单个变量使用(如赋值,参与运算,作为函数调用的参数等)。例如:floatb[3][3];定义了一个二维数组b,该数组由9个元素构成,其中每一个数组元素都属于浮点(实数)数据类型。数组b的各个数据元素依次是:b[0][0],b[0][1],b[0][2],b[1][0],b[1][1],b[1][2],b[2][0],b[2][1],b[2][2](注意:下标从0-2)。每个数组元素也都可以作为单个变量使用。3、一维数组(45分钟)(1)一维数组的定义(先定义后使用)格式:类型说明数组名[常量表达式]例如:intgrades[10];/*定义了一个数组grades,元素个数为10,数组元素类型为整型。*/说明:1)数组的类型就是数组各个元素的类型,对于一个数组,所有元素的数据类型都是相同的。2)数组名取名规则与变量名相同,遵守标识符命名规则。3)数组名后是用方括弧括起来的常量、常量表达式或符号常量,不能是变量。4)所有数组元素共用一个名字,用下标来区别每个不同元素。下标从0开始,按照下标顺序依次连续存放。如:a[0],a[1]a[2],…。5)常量表达式表示元素个数,即数组的长度。如:inta[10];中10表示a数组有10个元素。例如:以下定义是合法的。inta[10];或:#defineN10inta[N];6)C编译程序为数组分配了一片连续的存储单元。为了区分不同的单元,系统的内存是以字节(Byte)为单位进行编号,这些编号称为地址。7)C语言还规定,数组名是数组的首地址。即a=&a[0]1、下列一维数组说明中,不正确的是[]。学习好资料欢迎下载A、intn;scanf(“%d”,&n);floatb[n];B、floata[]={5,4,8,7,2};C、#defineS10inta[S+5];D、floata[5+3],b[2*4];(2)一维数组的初始化1)初始化格式:类型说明符数组名[下标]={常量列表};说明:常量列表可以是数值、字符常量或字符串,数组元素的初值必须依次放在一对花括号内。(1)给数组a所有元素赋初值。例如:inta[10]={0,1,2,3,4,5,6,7,8,9};经过上面的定义和初始化之后,数组各个元素值为:a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8,a[9]=92)给部分元素赋初值。例如:inta[10]={0,1,2,3,4};初始化之后:a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,其余元素自动赋0值。3)设置一个数组中全部元素值为0。例如:inta[10]={0,0,0,0,0,0,0,0,0,0};或inta[10];系统会对所有数组元素自动赋0值。4)在对全部数组元素赋初值时,可以不指定数组长度。例如:inta[5]={1,2,3,4,5};或inta[]={1,2,3,4,5};若定义数组长度大于元素赋初值的个数时,不能省略数组长度的定义,而必须写成:inta[10]={1,2,3,4,5};若定义数组长度小于元素赋初值的个数时,语法错误不能执行。练习:下列一维数组初始化语句中,正确的是[]。A、inta[8]={};B、inta[9]={0,7,0,4,8};C、inta[5]={0,2,0,3,7,9};D、inta[7]=7*{6};练习:下列一维数组初始化语句中,正确且与语句floata[]={0,3,8,0,9};等价的是[]。A、floata[6]={0,3,8,0,9};B、floata[6]={0,3,8,0,9,0};C、floata[7]={0,3,8,0,9,0};D、floata[5]={0,3,8,0,9};(3)一维数组元素的引用C语言规定,数组必须先定义后使用;而且只能逐个引用数组元素,不能一次引用整个数组。格式:数组名[下标]说明:下标可以是整型常量或整型表达式。例如:a[1],a[2*2]。若要对一维数组的连续多个元素引用或操作,可用一重循环实现。说明:引用数组元素时,下标可以是整型常数、已经赋值的整型变量或整型表达式。数组元素本身可以看作是同一个类型的单个变量,因此对变量可以进行的操作同样也适用于数组元素。也就是数组元素可以在任何相同类型变量可以使用的位置引用。引用数组元素时,下标不能越界。否则结果难以预料(覆盖程序区-程序飞出,覆盖数据学习好资料欢迎下载区-数据覆盖破坏,操作系统被破坏,系统崩溃)。练习:要将0、9、16、21、24存入数组a中,下列程序段中不正确的是[]。A、inta[5];a={0,9,16,21,24};B、inta[5];a[0]=0;a[1]=9;a[2]=16;a[3]=21;a[4]=24;C、inta[5]={0,9,16,21,24};D、inti,a[5];for(i=0;i5;i++)a[i]=i*(10-i);(4)一维数组应用举例【例6.1】随机输入10个数并输出。程序代码:main(){inta[10],i;printf(“input10numbers:\n”);for(i=0;i10;i++)/*运用一重循环连续给数组元素赋值*/scanf(“%d”,&a[i]);printf(“\n”);for(i=0;i10;i++)printf(“%d,”,a[i]);/*输出数组中的10个元素*/}【例6.2】建立一个数组,数组元素a[0]到a[9]的值为0~9,然后按逆序输出。程序代码:main(){inti,a[10];for(i=0;i=9;i++)a[i]=i;/*给数组a的10个元素,用循环变量i的值分别赋值*/for(i=9;i=0;i--)printf(“%4d”,a[i]);}运行结果为:9876543210【例6.3】求已知数组各元素的平均值。程序代码:#includestdio.h#defineN5main(){inta[N]={10,20,30,40,50};inti;floats,v;for(s=i=0;iN;i++)s=s+a[i];/*累加数组所有元素值*/v=s/N;printf(“Theaverageis%6.2f\n”,v);}运行结果为:Theaverageis30.00【例6.4】用数组编程,求Fibonacci数列问题的前20个数据。分析:定义一个一维数组f[20]用来存放20个数据,i为循环变量,我们从下面的数据找一下规律:学习好资料欢迎下载f[0]=1;f[1]=1;f[2]=f[0]+f[1];f[3]=f[2]+f[1];依次类推找出公式为:f[i]=f[i-1]+f[i-2];循环语句为:for(i=2;i20;i++)程序代码:main(){inti;staticintf[20]={1,1};/*定义20个元素的数组f[0]=f[1]=1*/for(i=2;i20;i++)f[i]=f[i-2]+f[i-1];/*生成20个数据存放在f[i]数组中*/for(i=0;i20;i++){if(i%5==0)printf(“\n”);/*每行输出5个数据*/printf(“%10d”,f[i]);}}例6.5:输入10个数,找出其中的最小值及第一个最小值的下标。#include“stdio.h”voidmain(){intdata[10],j,min,min_p;for(j=0;j10;j++)scanf(“%d”,&data[j]);/*为数组赋值*/min=data[0];/*假设首元素为最小,存放在min变量中*/min_p=0;/*将首元素下标存放在min_p中*/for(j=1;j10;j++)if(mindata[j])/*核查在其余的元素中,是否有比min中变量还小{min=data[j];/*的变量,如果有,则改变min和min_p中的值*/min_p=j;}printf(“theminis%d,position%d”,min,min_p);}(5)数组在内存中的存放例如intdata[3];则在内存中的状态如下:讨论、思考题、作业:实验指导书习题参考资料(含参考书、文献等):叶斌陈世强.C语言程序设计.北京:科学出版社授课类型:理论课讨论课□实验课□练习课□其他□教学方式:传统授课双语□讨论□示教□指导□其他□教学资源:多媒体模型□实物□挂图□音像□其他□data[0]data[1]data[2]100010021004
本文标题:《C语言程序设计》教案第四章数组—一维数组
链接地址:https://www.777doc.com/doc-7220847 .html