崔C第5章数组教案学生1323.docx
- 文档编号:12813555
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:18
- 大小:277.43KB
崔C第5章数组教案学生1323.docx
《崔C第5章数组教案学生1323.docx》由会员分享,可在线阅读,更多相关《崔C第5章数组教案学生1323.docx(18页珍藏版)》请在冰点文库上搜索。
崔C第5章数组教案学生1323
第5章数组(P128~165)
(一)教学(6学时)
基本要求:
1.掌握一维数组、字符串等概念、初始化和输入输出方法,了解二维数组的使用方法。
2.熟练掌握一维数组的逆置、移动、查找、插入、删除、排序、统计等算法。
3.熟练掌握字符串有关操作。
重点:
一维数组的逆置、移动、查找、插入、删除、排序、统计等算法及字符串处理。
难点:
一维数组有关算法;字符串有关操作;二维数组应用。
进度:
●第1讲(3学时)
⏹一维数组概念及数组元素的逆序存放、查找、删除、插入、排序等算法。
●第2讲(3学时)
⏹字符数组和字符串概念及其使用。
⏹二维数组。
例题操作:
进度
例题
知识点
第1讲
P129例5.1~5.12
●一维数组及其应用。
●有关算法:
逆置、移动、查找、插入、删除、排序、统计等。
第2讲
P141例5.13~5.18
●字符串概念及其使用。
P146例5.19~5.22
●二维数组及其应用。
(二)实验(4学时)
题目:
数组应用
目的:
●学习构建一维数组及数组中数据的移动、查找、插入、删除等算法。
●学习字符串有关操作。
●二维数组及其应用。
重点:
一维数组的应用和字符串有关操作。
难点:
一维数组中数据的移动、查找、插入、删除、排序等算法和字符串操作。
内容:
进度
题目
知识点
文件名
第1讲
补充题5.1
一维数组的建立和查找操作
BC5-1
补充题5.2
一维数组的建立、数据移动和插入操作
BC5-2
P160训练5.1
一维数组的建立、查找、数据移动和插入
XL5-1
补充题5.3
一维数组的建立、数据移动和删除操作
BC5-3
第2讲
补充题5.4
求字符串长度
BC5-4
P162训练5.3
字符串连接
XL5-3
P162训练5.3扩展
字符串比较
XL5-3-k
P163训练5.4
二维数组及其应用
XL5-4
(三)课后作业
●阅读教材第5章。
其中例5.1~5.12中有关逆置、移动、查找、插入、删除、排序、统计等算法。
例5.13~5.18中有关字符串概念及其应用的例题。
例5.19~5.29中有关提高部分例题。
●练习:
P163习题5基础部分1~8(不交)。
上机题(交)
题目
知识点
文件名
P161训练5.2
统计
XL5-2
P164习题5基础部分10
字符选择法排序
XT5-10
第5章上机训练-1
【补充题5.1(交)】一维数组的建立和查找操作。
(文件名BC5-1)
(1)建立一维数组
1)定义一个名为a的一维数组,含10个元素,每个元素都是整型。
2)从键盘输入10个互不相同的整数存放在该数组中。
3)输出该数组。
(2)查找相同值(参考教材P136【例5.8】)
1)通过键盘给变量x输入值。
2)在数组中查找与x值相同的元素,若找到用k1记录该元素的下标。
3)如果找到输出下标值k1,否则输出没有找到的信息。
(3)查找最小值(参考教材P137【例5.9】)
1)查找该数组中值最小的元素,并用k2记录最小值元素的下标。
2)输出最小值和最小值下标k2。
1.目标:
(1)学习定义一维数组、给数组元素输入值和输出数组元素值的方法。
(2)掌握在数组中查找元素的方法。
2.步骤:
(1)定义和建立一维数组
1)定义含10个整型元素的一维数组a:
inta[10];
2)定义程序中用到的各整型变量:
inti=0,x=0,k1=-1,k2=0;
i:
循环控制变量
x:
待查找值
k1:
查找相同值信息的标志,初值为-1,如果找到则为找到元素的下标值。
k2:
查找到的最小值的下标
3)通过键盘使数组每个元素得到值。
printf("输入10个不相同的整数:
");
for(i=0;i<10;i++)scanf("%d",&a[i]);/*为每个元素输入值*/
4)输出该数组。
for(i=0;i<10;i++)printf("%2d",a[i]);/*输出每个元素值*/
printf("\n");
(2)查找相同值
1)通过键盘键入需查找值x。
printf("输入查找值x:
");
scanf("%d",&x);/*输入需查找的值*/
2)在数组中查找与x值相同的元素,若找到用k1记录该元素的下标值。
for(i=0;i<10;i++)/*将x与数组元素依次比较*/
if(x==a[i])k1=i;/*如果找到值相同元素,用k1记录该元素下标值i*/
3)如果找到输出下标值k1,否则输出没有找到的信息。
if(k1!
=-1)printf("找到!
下标值为:
%d\n",k1);/*k1≠-1说明找到了值相同元素*/
elseprintf("没找到%d!
\n",x);/*k1为-1说明没有找到*/
(3)查找最小值
1)查找该数组中值最小的元素,并用k2记录最小值的下标值。
k2=0;/*假设0下标元素当前值最小,用k2记录其下标值*/
for(i=1;i<10;i++)/*将当前值最小元素a[k2]与其余元素依次比较*/
if(a[k2]>a[i])k2=i;/*只要找到小于a[k2]的元素,就用k2记录其下标值i*/
2)输出最小值和最小值下标k2。
printf("最小值是:
%d下标为:
%d\n",a[k2],k2);/*输出最小值和最小值下标*/
3.提示:
(1)查找相同值:
变量k1在此题中作为查找相同值信息的标志,查找有两种可能,如果没有找到,k1保持初值-1,如果找到,k1则为找到的数组元素的下标值。
(2)查找最小值:
注意不必用min记录当前最小值元素,只要用k2记住当前最小值元素的下标就可以了。
运行结果:
找到相同值
没有找到相同值
【补充题5.2(交)】一维数组的建立和插入操作。
(文件名BC5-2)
已有定义:
inta[11]={1,2,3,4,5,6,7,8,9,10};要求在数组下标j(0≤j≤10)处插入100,j值通过键盘输入。
说明:
(1)要完成插入操作,务必在定义数组时多开辟若干存储单元用于存放插入的数据。
(2)在做插入操作之前,应该先将插入点及其后各数组元素值向数组尾部方向移动一位。
移动必须从最后一个元素开始,依次向数组首部方向进行。
请看图示:
例如:
j=3为插入点
1.目标:
(1)熟悉一维数组的定义、学习数组初始化的方法。
(2)学习在一维数组中确定插入点和将数插入到数列中的方法。
2.步骤:
(1)定义变量和一维数组
1)定义和初始化一维数组a:
inta[11]={1,2,3,4,5,6,7,8,9,10};/*定义并初始化*/
说明:
因为是插入操作,定义数组时要多开辟一个存储单元用于存放插入的数据。
因此这里定义一个含11个整型元素的一维数组a,只给前10个元素设置了初值。
2)定义变量i和j,初值为0。
i:
循环控制变量
j:
插入点位置
(2)输出插入操作前的数组a,注意:
只有前10个是有效数据
printf("插入操作前的数组:
\n");
for(i=0;i<10;i++)printf("%4d",a[i]);
printf("\n");
(3)通过键盘输入j值确定插入点
printf("请输入j(0≤j≤10):
");
scanf("%d",&j);
(4)移动数据:
将下标j(含j)及其后各数组元素值向数组尾部方向移动一位。
移动必须从最后一个元素开始,依次向数组首部方向进行。
for(i=10;i>=j+1;i--)
a[i]=a[i-1];
说明:
1)当0≤j<10时,需要移动数据,执行for循环,从数组最后一个元素起至下标j元素止,将该区间的数据依次向右移动一位。
2)若j=10时,不需要移动数据,for循环一次都不执行。
(5)插入数据:
在下标j位处插入100
a[j]=100;
(6)输出插入操作后的数组a(注意:
插入100后数组a中已有11个有效数据)
printf("插入操作后的数组:
\n");
for(i=0;i<11;i++)printf("%4d",a[i]);/*多输出一位*/
3.提示:
插入操作完成后,数组元素总个数将增加,输出数据时要注意。
运行结果:
插在首部
插在中间
插在尾部
【P160训练5.1】若已有按降序排列的数列20、18、16、14、12、10、8、6、4、2,现要求将键盘输入的一个数k,插入到该数列中,要求按原来的排序规律插入。
(文件名XL5-1)
说明:
(1)定义数组时必须多开辟存储单元用于存放插入的数据。
(2)若要保证插入后原数组仍按降序排列,应该先找到插入点。
(3)在做插入操作之前,应该先将插入点及其后各数组元素值向数组尾部方向移动一位。
移动必须从最后一个元素开始,依次向数组首部方向进行。
下图以k=15为数据插在数列当中的例子
1.目标:
(1)熟悉一维数组的定义和初始化方法。
(2)掌握寻找插入点和将一个数插入到数列中的方法。
2.步骤:
(1)定义变量和一维数组
1)定义和初始化一维数组a
inta[11]={20,18,16,14,12,10,8,6,4,2};/*定义并初始化*/
说明:
因为是插入操作,定义数组时要多开辟一个存储单元用于存放插入的数据。
因此这里定义一个含11个整型元素的一维数组a,只给前10个元素设置了初值。
2)定义整型变量i、j、k,初值均为0。
i:
循环控制变量
j:
插入点下标值
k:
插入值
(2)输出插入操作前的数组a
(3)通过键盘输入插入值k
(4)通过while循环查找插入点j
说明:
1)解释while循环的判断条件:
a[j]>=k&&j<10
●当在数组a中没有找到比k小的元素同时查找还在数组的有效范围内(0 ●一旦找到一个比k小的元素(即a[j] 2)举例说明: ●若k为24: 因a[0]值小于k,循环一次不执行,j=0为插入点,数据插在首部。 ●若k为15: 当j为0、1、2时,a[j]值都大于k,循环继续;a[3]小于k,循环终止,找到插入点j=3。 ●若k为1: 在原数列中始终没有找到比k小的元素,循环终止时j=10,数据直接插在尾部。 (5)移动数据: 将下标j(含j)及其后各数组元素值向数组尾部方向移动一位。 移动必须从最后一个元素开始,依次向数组首部方向进行。 说明: 1)当0≤j<10时,为了将数据插在数列当中,需要向右移动数据。 执行for循环,可从数组最后一个元素起至下标j元素止,将该区间的数据依次向右移动一位。 2)若j=10时,不需要移动数据,for循环一次都不执行,数据直接插在尾部。 (6)插入数据: 在下标j位处插入k (7)输出插入操作后的数组a 3.提示 (1)while后的表达式a[j]>=k&&j<10不能只写a[j]>k,因为结束while循环的条件有两个: 当找到第一个比k小的元素或者没有找到比k小的元素。 (2)插入操作完成后,数组元素总个数将增加,输出操作要注意。 根据提示填写代码完善程序 #include main() {inti=0,j=0,k=0; /*请填定义数组a并初始化*/ /*输出插入操作前的数组*/ printf("插入操作前的数组: \n"); /*请填输出插入操作前数组a*/ printf("\n"); /*插入操作*/ printf("输入插入值k: "); /*请填给插入值k输入值*/ /*请填①查找插入点*/ /*请填②移动数据*/ /*请填③插入数据*/ /*输出插入操作后的数组*/ printf("插入操作后的数组: \n"); /*请填输出插入操作后数组a*/ printf("\n"); } 运行结果: 插在首部 插在中间 插在尾部 【补充题5.3】已有定义inta[10]={1,2,3,4,5,6,7,8,9,10};,要求从一维数组a中删除下标为k的元素值,k值通过键盘输入(0≤k≤9),可参考教材P138【例5.10】。 (文件名BC5-3) 说明: (1)删除操作实际是移动数据的操作,应先确定删除点。 (2)从删除点开始,依次将各元素右侧数据向左侧移动一位。 1.目标: (1)熟悉数组的定义、初始化、输出的方法。 (2)掌握如何将一个值从数列确定位置处删除。 2.步骤: (1)定义变量和一维数组a 1)按题目所述定义一维数组a并初始化。 2)定义循环控制变量i和变量k(删除元素下标值),初值为0。 (2)输出删除操作前的a数组 1)提示输出 2)输出删除操作前的数组a (3)确定删除点: 输入k 1)提示输入被删元素下标值k 2)输入被删元素下标值k 3)输出被删元素下标值k (4)移动数据: 从k位元素开始,依次将右侧数据向左侧移动一位 for(i=k;i<9;i++)a[i]=a[i+1]; 说明: 1)删除从下标为k的元素开始,至数组最后一个元素止,执行for循环依次将其右侧元素值向左侧移动一位,原位置处元素值即被覆盖。 (5)输出删除操作后的a数组 1)提示输出删除操作后的数组 2)输出删除操作后的数组a,元素总个数应减1。 3.提示: (1)可参考P138【例5.10】完成删除值的操作,注意,删除从下标为k的元素开始。 (2)输出删除操作后的数组a时,元素总个数应减1。 运行结果: 删除下标为0元素 删除下标为3元素 删除最后元素
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 教案 学生 1323
![提示](https://static.bingdoc.com/images/bang_tan.gif)