第六章 一维数组教案Word文件下载.docx

上传人:b****3 文档编号:17346253 上传时间:2022-12-01 格式:DOCX 页数:21 大小:139.72KB
下载 相关 举报
第六章 一维数组教案Word文件下载.docx_第1页
第1页 / 共21页
第六章 一维数组教案Word文件下载.docx_第2页
第2页 / 共21页
第六章 一维数组教案Word文件下载.docx_第3页
第3页 / 共21页
第六章 一维数组教案Word文件下载.docx_第4页
第4页 / 共21页
第六章 一维数组教案Word文件下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

第六章 一维数组教案Word文件下载.docx

《第六章 一维数组教案Word文件下载.docx》由会员分享,可在线阅读,更多相关《第六章 一维数组教案Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。

第六章 一维数组教案Word文件下载.docx

300名?

stud001,stud02,……stud300?

要去定义300个变量吗?

肯定不合适。

我们可以用数组来实现

数组:

是具有一定顺序关系的若干相同类型变量的集合,用数组名标识

1.学习新课:

①一维数组的定义和使用3min

定义方式:

数据类型数组名[常量表达式];

例inta[6];

表示有6个元素,元素是类型是整型,数组名是a。

数据类型:

可以是C语言里面提供的任意数据类型,int,float,char……

floatstu[300];

数组名:

一定要是合法的标示符,(合法标示符,字母,数字,下划线组成,首字节只能输字母或者下划线,不可以是C语言里面的关键字,数组名不可以是int)

常量表达式:

定义时数组的长度必须是常量,不能用变量定义数组的长度

inti=15;

intdata[i];

()

2一维数组元素的使用5min

数组必须先定义,后使用

通过数组名和下标的方式来表示数组名

例如inta[6];

//a[0]表示第一个元素,a[1]表示第二个元素。

……a[5]表示第5个元素。

注意越界,a[6]越界

不能一次使用全部数组的元素,只能逐个引用数组元素。

不能一次性对一整个数组进行赋值,只能对一个个元素进行赋值

inta[10];

a=10;

()

a[0]=10;

a[1]=10;

a[2]=10

数组的一些操作常常和for语句以前使用

例如;

一个长度为10的数组,全部赋值为1

for(j=0;

j<

11;

j++)

{a[j]=10;

}

提问:

以上程序存在问题,请指出

越界了,定义的数组大小是10,最后一个元素应该是a[9]

3一维数组在内存中的分配(难点)8min

移动专业是一个比较偏硬件的专业,任何的移动硬件设备,都是需要软件支持的。

软件开发很多都是对硬件进行编程,目前在通信的企业中,都是用C语言来完成对硬件的编程。

对硬件编程一定要弄清楚内存和地址。

弄清楚了内存和地址,才能帮助我们学习好后续的指针。

编译时分配空闲的连续内存

内存字节数=数组大小×

每元素的字节

inta[6];

(板书)

分配了6*4=24个内存

内存跟每个人的家一样,都有一个住址,一个门牌号,

内存也由门牌号,称为内存地址,例如a[0]的地址是0x0002,因为分给数组的内存是连续分配的,a[1]相当于在它的隔壁,一个元素占了4个字节,所以a[1]的地址是0x0006.

提问charch[10];

分配了多大的内存?

假如ch[0]分配的地址是0x0002,ch[1]分配的地址是什么?

4一维数组的输入输出8min

回忆,提问:

一般类型数据的输入输出

inta;

scanf(“%d”,&

a);

//&

为取地址符,意义是往a所在的地址输入一个数

printf(“%d”,a);

数组的输入输出:

intx[10];

scanf("

%d"

&

x[0]);

//为第0个元素输入值

printf("

x[0]);

//输出第0个元素的值

for(i=0;

i<

10;

i++)//循环为数组的每一个元素输入值

{

scanf("

x[i]);

为取地址符,意义是往a[i]这个元素所在的地址输入一个数

}

i++)//循环输出数组的每一个元素的值

printf("

x[i]);

&

是一种运算符,取地址符(重难点),

a&

b,这时,&

符号是“按位与”例如10&

11==10

a,这时,&

表示“取地址”

a[0]==0x0002,&

a[0]表示a[0]这个元素所占内存的地址

a[1]==0x0006,&

a[1]表示a[1]这个元素所占内存的的地址

a[2]==0x000a,&

a[2]表示a[2]这个元素所占内存的的地址

a==0x0002,a表示数组所占内存的首地址,其值就是&

a[0]

a);

往a所在的地址输入一个数

往想x[i]这个元素的地址输入一个数

这里要强调输入时,要指明为某个元素输入,还要在前面加上取地址符&

在学习指针之前,只有scanf函数会用到&

5做书上P88的练习题,加强学生对于数组、数组元素的表示,数组元素的地址等基本知识的理解(提问)4min

6如何运用VC调试工具观察内存分配状况(难点:

帮助理解内存分配,在程序出现问题时,可以利用这种方法查找问题,在实际编程应用中很常用)5min

打来一段关于数组的程序,演示过程:

只有在调试的过程中才能去查看,

1,设置断点

2,点击Go,开始调试

3,点击打开调试窗口中的Memory和watch

4,执行下一步(单步执行)——F10

在watch中查看数组元素的值和元素所在的地址:

在watch中输入x,回车,这是系统随机分配的,例如0x0012ff58,表示分配给数组x的内存的首地址

在watch中输入x[0],回车,表示第0个元素的值,例如从键盘输入的是10

在watch中输入&

x[0],回车,表示第0个元素所在地址的值0x0012ff58,和x相同,因为数组的首地址,就是第一个元素的地址

在watch中输入x[1],回车,表示第1个元素的值,例如从键盘输入的是20

x[1],回车,表示第1个元素所在地址的值0x0012ff5c,在第0个元素的地址数上加了4,因为1个元素占4个字节

添加设置断点——F9

点击Go

点击打开调试栏中的Memory和watch窗口

执行下一步(单步执行)——F10

Memory显示的是内存的分配状况,

Watch用于查看,某个变量当前的值或者这个变量所在的地址

练习1:

要求编程实现从键盘输入一个整型数组,并输出。

要求,用调试工具观察数组元素内存分配情况15min

根据学生的操作情况,找出共性问题,有针对性的重新演示一遍5min

练习2:

读10个整数存入数组,找出其中最大值和最小值。

要求,用调试工具观察程序中关键变量的变换

学生思考方法5min

讲思路,带学生画流程图(虚线内部的是循环体)5min

步骤:

1.输入:

for循环输入10个整数

2.处理:

(a)先令max=min=x[0]

(b)依次用x[i]和max,min比较(循环)

若max<

x[i],令max=x[i]

若min>

x[i],令min=x[i]

3.输出:

max和min

学生完成本题练习10min

根据学生的操作情况,找出共性问题,进行讲解。

给学生演示最终结果,用调试工具的watch窗口,观察关键变量min和max的变化5min

3.课堂小结:

10min

本节课学习了一维数组基本的使用规则,如何定义,如何使用,以及使用时要注意的问题,例如数组定义时,数组的长度必须是个常量,使用数组元素时,要注意越界的问题。

数组内存的分配,取地址符的含义,是为了后续学习,字符串,指针打下基础,

利用VC调试工具查看变量,以及变量的地址。

可以更快的帮助我们找出程序中很难找到的一些逻辑问题。

(因为在实际编程过程中,写代码和调试代码所花的时间是50:

50的,所以一定要学会如何调试程序,即找出程序中存在的问题)

作业:

P852

后续:

掌握了一维数组的基本知识,以及调试方式,后续会解决一些更复杂的实际问题,

 

(1)

课题:

课型:

实训

周次:

6

4

授课时间:

地点:

(结合岗位知识、能力、素质目标确定)

1,掌握一维数组的定义和使用的基本规则;

2,理解数组的内存与地址,会利用编译工具查看内存分配;

3,能利用一维数组解决简单的实际问题

教学重难点:

2.学习新课:

7一维数组元素的使用5min

8一维数组在内存中的分配(难点)8min

9一维数组的输入输出8min

10做书上P88的练习题,加强学生对于数组、数组元素的表示,数组元素的地址等基本知识的理解(提问)4min

11如何运用VC调试工具观察内存分配状况(难点:

5,设置断点

6,点击Go,开始调试

7,点击打开调试窗口中的Memory和watch

8,执行下一步(单步执行)——F10

(2)

数组的排序

1,利用一维数组掌握冒泡排序,选择排序

2,查找指定元素,顺序查找和二分法查找

1,冒泡排序和选择排序的思想,

2,顺序查找和二分法查找

1,冒泡法排序

讲解冒泡排序的核心思想,演示完成升序

学生自行联系,并修改为降序

2,选择排序

讲解选择排序的核心思想,演示完成升序

3,顺序查找

讲解思路,学生完成代码

4,二分法查找

字符数组

8

1,编程实现从键盘上输入的字符流中,统计字符的个数,因为字母的个数,和其他字符的个数

2,编程统计从键盘输入的字符流中,单词的个数

1,字符数组的输入输出

2,掌握字符,字符型数组,字符串的区别于联系

3,顺序查找和二分法查找

关于字符串的函数

9

1,掌握字符串处理函数,strcpy,strcat,strlen,strcmp

2,掌握各个字符串函数的具体实现方法

1,利用字符型数组处理字符串,完成复制,连接,比较,计算字符长度的操作,

2,Strlen和sizeof的区别

1,字符串拷贝函数strcpy

格式:

strcpy(字符数组1,字符串2)

功能:

将字符串2,拷贝到字符数组1中去

返值:

返回字符数组1的首地址

说明:

字符数组1必须足够大,>

字符串2

字符数组1必须是数组名形式(str1),

字符串2可以是字符数组名或字符串常量。

拷贝时‘\0’一同拷贝

不能使用赋值语句为一个字符数组赋值

具体实现:

学生编程完成

2,字符串连接函数strcat

strcat(字符数组1,字符数组2)

把字符数组2连到字符数组1后面

字符数组1必须足够大

连接前,两串均以‘\0’结束;

连接后,串1的‘\0’取消,新串最后加‘\0’。

3,字符串比较函数strcmp

strcmp(字符串1,字符串2)

比较两个字符串

比较规则:

对两串从左向右逐个字符比较(ASCII码),

直到遇到不同字符或‘\0’为止。

返回值:

返回int型整数。

其值是ASCII码的差值

若字符串1<

字符串2,返回负整数

若字符串1>

字符串2,返回正整数

若字符串1==字符串2,返回零

字符串比较不能用“==”,必须用strcmp,虽然编译无错,但结果不对

4,字符串长度函数strlen

strlen(字符数组)

计算字符串长度

返回字符串实际长度,不包括‘\0’在内

二维数组

10

1,矩阵置换,将一个2行3列的矩阵置换为3行2列矩阵

2,统计多个学生的多科成绩的总分和平均分,5个学生的3科成绩,计算每个同学的总分和平均分

重点:

二维数组的声明,

二维数组的赋值与输出

难点:

二维数组的内存分配,

数组每一行首地址的表示

1,讲解二维数组的定义,表示,存储,初始化,赋值

字符型数组

3,矩阵置换,将一个2行3列的矩阵置换为3行2列矩阵

4,统计多个学生的多科成绩的总分和平均分,5个学生的3科成绩,计算每个同学的总分和平均分

函数的调用,文件组织结构,值传递和地址传递

12

3,掌握函数的声明、定义、调用

4,用函数计算两个数的和

5,编程:

设x取值为区间[1,20]的整数,求函数f(x)=x-sin(x)-cos(x)的最大值,要求使用自定义函数实现f(x)功能。

6,单独用文件定义和声明函数,使用多源文件构成程序

7,值传递和地址传递的区别

3,函数的声明、定义、调用,

4,C程序多文件的构成

5,参数的值传递和地址传递

1,简单介绍值传递和地址传递

数组元素作函数实参——值传递

数组名可作函数参数——地址传递

2,用函数思想实现对任何n个数进行排序(包括升序、降序、选择法、冒泡法)

回忆冒泡排序和选择排序的思想

将之前的完成的代码改成利用函数实现(关键代码可以发给学生)

演示步骤

3,汉诺塔问题

将A上n-1个盘子借助C移到B。

把A上剩下一个盘子送到C

将n-1个盘子从B借助A移到C

因此,可以用两个函数分别实现上面两类操作,

用hanoi函数实现第一类操作,hanoi(n,a,b,c)将n个盘从a→c借助b

用move函数实现第2类操作。

move(x,y)将1个盘x→y座,x

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

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1