崔C第5章数组教案学生1323.docx

上传人:b****8 文档编号:12813555 上传时间:2023-06-08 格式:DOCX 页数:18 大小:277.43KB
下载 相关 举报
崔C第5章数组教案学生1323.docx_第1页
第1页 / 共18页
崔C第5章数组教案学生1323.docx_第2页
第2页 / 共18页
崔C第5章数组教案学生1323.docx_第3页
第3页 / 共18页
崔C第5章数组教案学生1323.docx_第4页
第4页 / 共18页
崔C第5章数组教案学生1323.docx_第5页
第5页 / 共18页
崔C第5章数组教案学生1323.docx_第6页
第6页 / 共18页
崔C第5章数组教案学生1323.docx_第7页
第7页 / 共18页
崔C第5章数组教案学生1323.docx_第8页
第8页 / 共18页
崔C第5章数组教案学生1323.docx_第9页
第9页 / 共18页
崔C第5章数组教案学生1323.docx_第10页
第10页 / 共18页
崔C第5章数组教案学生1323.docx_第11页
第11页 / 共18页
崔C第5章数组教案学生1323.docx_第12页
第12页 / 共18页
崔C第5章数组教案学生1323.docx_第13页
第13页 / 共18页
崔C第5章数组教案学生1323.docx_第14页
第14页 / 共18页
崔C第5章数组教案学生1323.docx_第15页
第15页 / 共18页
崔C第5章数组教案学生1323.docx_第16页
第16页 / 共18页
崔C第5章数组教案学生1323.docx_第17页
第17页 / 共18页
崔C第5章数组教案学生1323.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

崔C第5章数组教案学生1323.docx

《崔C第5章数组教案学生1323.docx》由会员分享,可在线阅读,更多相关《崔C第5章数组教案学生1323.docx(18页珍藏版)》请在冰点文库上搜索。

崔C第5章数组教案学生1323.docx

崔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元素

删除最后元素

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2