您的当前位置:首页正文

《C语言程序设计》课程教案

2024-10-18 来源:威能网
《C语言程序设计》课程教案

课题 授课日期 教学目的 C语言概述 课型 课时 新授课 2 1、了解C语言的特点; 2、掌握C简单程序的结构; 3、熟练掌握C程序的编辑、编译、链接和运行的过程。 教学重点:C语言的特点与编程环境 教学难点:C语言的编程环境 主要运用讲授法,兼用演示法 1、C语言的简史与特点; 2、简单的C程序; 3、C程序的上机步骤,掌握程序的编辑、编译、链接和运行。 教学重点难点 教学方法 教学内容提纲 教学过程:

本章导读:阐述本章主要内容,重点要掌握的知识点。 §1.1 C语言概况 1.1.1 C语言的发展

(1)C语言的发展源于人们希望用高级语言编写操作系统。(C-BCPL第二字母) ALGOL60(高级语言)->CPL(硬件支持)- BCPC->B->C->标准C-> ANSI C -> ISO C

(2)语言既具有高级语言特性,又具有低级语言特性-中级语言。 1.1.2 C语言的特点

C语言是从ALGOL60、CPL发展而来,既具有一般高级语言特性,又具有低级语言特性。8个特点。

§1.2 简单的C语言程序

通过简单的C语言程序举例,总结C语言程序的结构。 【例1.1】在计算机屏幕上输出“Hello,World!” /* EX1-1.C */ main() {

printf(\"Hello,World!\\n\"); }

【例1.2】己知圆的半径,求圆的周长和面积 /* EX1-2.C */ main() {

int r;

float l,s; r=5;

l=2*3.14159*r;

s=3.14159*r*r; printf(\"r=%d,l=%f,s=%f\\n\ }

§1.3 算 法

算法的概念和表示方法(流程图的画法)。

【例1-4】画出求1+2+3+……+100之和的流程图。

1

开始 0⇒s,1⇒i i≤100 Y s+i⇒s,i+1⇒i N 输出s的结束 §1.4 C程序的实现

1、源程序、目标程序、可执行程序的概念(补充)。 2、C语言程序的实现:编辑、编译、连接、运行。 课堂提问与讨论 本章小结、作业布置

2

课题 授课日期 教学目的 教学重点难点 教学方法 数据类型 标识符与常量 课型 课时 新授课 2 1、了解C语言丰富的数据类型; 2、了解常量的基本概念; 3、掌握常用基本数据类型(整型、实型、字符型)数据的常量表示。 掌握C语言数据和数据类型的相关知识 由于本节内容语法点比较多,所以在教学中结合多个小示例,在练习中掌握各知识点,通过实例操作,体会语法点。 1、C数据类型概述 2、C的基本数据类型(整型、字符型、枚举型、实型) 3、标识符的定义与使用规则; 4、常量的类型和定义方法及举例。 教学内容提纲 教学过程:

本章导读

数据是程序处理的对象,是程序设计中的重要组成部分。C语言为我们提供了丰富的数据类型和运算符及语法规则。

阐述本章的主要内容与学习要求。 §2.1 数据类型

2.1.1 数据类型概述

整型(int)

整型

短整型(short) 长整型(long)

基本类型

字符型(char)

单精度型(float)

实型

双精度型(double)

枚举类型(enum)

数据类型

数组类型(第6章)

构造类型

结构体类型(struct) 共用体类型(union)

指针类型(*) 空类型(void)

§2.1 数据类型

C语言的数据类型(整型、实型、字符型),数据的类型、表示形式和数据表示范围的定义。

3、标识符的概念及其使用规则,包括系统定义的32个关键字。

(1) 标识符只能由下划线、数字0~9与大小写字母a~z,A~Z构成。Turbo C最多识别由32个字符组成的标识符,Microsoft C最多识别由8个字符组成的标识符。

3

(2) 标识符的首个字符必须是字母或下划线,而不能是数字或其它符号。 (3) C语言中大小写字母是敏感的,即在标识符中,大写字母和小写字母代表不同的意义。例如:Name和name是两个不同的标识符。

(4) 标识符不能使用系统的关键字,因为关键字是系统保留的,它们已有特定的含义。

(5) 系统预定义标识符,如预编译命令名(define、include)、系统函数名(scanf、printf、getchar、putchar)等可作为用户标识符,但建议不作它用。

(6) 尽量作到“见名知义”,例如max、score等,而不用象abc、x1、y2等标识符。 (7) 避免使用易混字符,如1、l、i;0、o;2、z等。 ANSI C定义的关键字共32个:

auto double int struct break else

long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static §2.2.2 常 量

1、各类型常量的定义和表示方法的详细说明。

2、C语言中特殊的不可见字符的表示方法--转义字符。

3、字符串常量的定义和表示形式,以及与字符常量的区别方法。 4、符号常量的概念和定义方法。 #define PI 3.14159

这种常量定义在C语言中被称之为“宏定义”,具体方法将在本书第11章中介绍。 【例2-1】输入圆的半径,计算周长和面积 #define PI 3.14159 main() {

float r,c,s; scanf(\"%f\ c=2*PI*r; s=PI*r*r;

printf(\"r=%f,c=%f,s=%f\\n\}

课堂提问与讨论 课堂小结、作业布置

4

课题 授课日期 教学目的 变量 1、 了解变量的概念及其三要素; 2、 掌握变量的定义方法; 3、 理解变量定义的作用和存储。 教学重点:变量的定义方法; 教学难点:不同类型变量的存储。 由于本节内容语法点比较多,所以在教学中结合多个小示例,在练习中掌握各知识点,通过实例操作,体会语法点。 1、 变量的含义; 2、 变量的定义方法; 3、 变量定义的作用; 课型 课时 新授课 2 教学重点难点 教学方法 教学内容提纲 教学过程: 复习回顾上次课的主要内容。 §2.2.3 变 量

1、阐述变量的含义及其三要素: ①变量名

②变量的存储单元

③变量(存储单元存放)的值。 2、变量的定义形式和举例。 §2.2.3 变量定义的作用 1、 变量定义的作用:

(1)编译系统将根据定义检测函数中的变量名。

(2)编译系统将对每一个变量根据它被定义的类型分配相应的存储单元。 (3)编译系统根据变量被定义的类型检查该变量进行运算的合法性。 (4)可以给变量赋初始值。 2、变量的赋值方式。 3、整型数据的存储形式。

4、整型数据的溢出原因和判断。 /* EX2-2.C */ main( ) {

int a, b, c; unsigned u, v;

a=32767+1;b=131071;c=-98304; u=131071;v=-98304;

printf(\"a=%d,b=%d,c=%d\\n u=%u,v=%u\\n\}

5、实型数据的存储及实型数据存储时的舍入误差。 /* EX2-3.C */ main( ) {

5

float x, y; x=123456.789E5; y=x+30.0;

printf(\"x=%f, y=%f\\n\}

6、字符数据的存储与使用

main( ) /*字符与整数的通用举例*/ {

char ch1, ch2; int i; ch1='a'; i=ch1; ch2=97;

printf(\"%d is %c\\n\ printf(\"%c is %d\\n\ printf(\"%c is %d\\n\}

main() /*大小写字母的转换*/ {

char c1,c2; c1='a'; c2='B';

c1=c1-32; /*'a'的ASCII码值为97,减去32得'A'的ASCII码值*/ c2=c2+32; /*'B'的ASCII码值为66,加上32得'b'的ASCII码值*/ printf(\"%c,%c\}

main( ) /*字符数据的补码*/ {

char c;

c=0362; /*八进制数,相当于十进制数242*/ printf(\"%c%d\\n\}

课堂提问与讨论

整型数据溢出例子,浮点数据舍入误差例子,给我们编程序的提示什么? 课堂小结、作业布置

6

课题 授课日期 教学目的 运算符与表达式 课型 课时 新授课 2 1、 了解:C语言的丰富运算符,丰富的运算符可以构成灵活的表达式 2、 掌握算术、赋值、逗号运算符及它们构成的表达式。 掌握运算符的优先级、结合性规律。 教学重点: 1、算术、赋值、自增/减运算符及它们构成的表达式 2、运算符的优先级、结合性规律。 教学难点: 1、运算符的优先级、结合性 2、自增/减运算符的运算规律 由于本节内容语法点比较多,所以在教学中结合多个小示例,在练习中掌握各知识点,通过实例操作,体会语法点。 1、 列举C语言的13类运算符,提示学习运算符时应注意的问题; 2、 算术运算符与表达式; 3、 强制类型转换运算符; 4、 自增自减运算符及举例; 5、 赋值运算符与表达式; 6、 逗号运算符与表达式; 7、 数据类型的转换。 教学重点难点 教学方法 教学内容提纲 教学过程: §2.3 运算符与表达式

2.3.1 算术运算符与算术表达式

1、C语言中基本的算术运算符共有5个,分别为:+(加), -(减), *(乘), /(除),%(取模,或称求余)。

2、有时为了达到某种目的,需要将一个表达式的类型转变成所需的类型,这时就要用到强制类型转换运算符。作用形式:

(类型) (表达式) 将表达式的值转换成相应类型 例如: (double)a (int)(x+y) (float)5/3 3、自增自减运算符:++和- -

自增自减运算符++和--是C语言中最常用也最难掌握的两个单目运算符,具有右结合性。他们的作用是:只作用于变量,使变量的值自增1或自减1。如++i相当于i=i+1;--j相当于j=j-1,因此++、- -实质也有赋值作用。由于不能对常量或表达式赋值,因此象3++, (a+b)- -等都是错误的。

【例2-8】输出下面程序中i、j的值 main() {

int i=5,j; j=++i+i++;

printf(\"i=%d,j=%d\\n\ i=5;

j=(++i)+(++i)+(i++);

7

printf(\"i=%d,j=%d\\n\ printf(\"%d %d\\n\ }

§2.3.2 赋值运算符与赋值表达式

1.赋值运算符及其表达式的定义形式。 2. 复合赋值运算符

C语言允许在赋值运算符“=”之前加上其他运算符以构成复合的赋值运算符。基本算术运算符和位运算符。有:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=

3. 赋值类运算符的副作用及限制 4. 算术表达式的计算

§2.3.3 逗号运算符与逗号表达式

【例2-9】分析下面程序的运行结果 main() {

int y=3,x=3,z=1;

printf(\"%d %d\\n\}

§2.4 数据类型转换 2.4.1类型转换概述

三种方式:类型自动转换、赋值类型转换和强制类型转换。 §2.4.3 赋值类型转换

赋值运算时,如果赋值运算符两侧的类型(指基本类型)不一致,系统自动将表达式的值转换成变量的类型存到变量的存储单元,转换的结果可能会:

(1)当整型数据赋给浮点型变量时,数值上不发生任何变化,但有效位增加。 (2)当单、双精度浮点型数据赋给整型变量时,浮点数的小数部分将被舍弃。

(3)将字符型数据赋给整型变量时,由于字符型数据在运算时根据其ASCII码值自动转化为整型数据,所以将字符型数据的ASCII码值存储到变量中。

(4)将有符号的整型数据赋给长整型变量,系统要进行符号位扩展。将无符号的整型数据赋给长整型变量时,只需0扩展即可。

(5)将长整型数据赋给整型变量或将整型数据赋给字符型变量,都有可能溢出。 (6)同长度有符号整型数据赋给无符号整型变量时,数据将失去符号位功能。 (7)同长度无符号整型数据赋给有符号整型变量时,数据将得到符号位功能。 §2.4.4 强制类型转换

利用强制类型转换运算符将一个表达式的值强制转换成所需类型。即: (类型名)(表达式)

§2.5 程序举例,分析程序的运行结果。 【例2-10】分析下面程序的运行结果 main() {

int x, y; x=50;

y=(x=x-5, x/5); printf(\"y=%d\}

8

【例2-11】写出下面程序的运行结果 main() {

int i=2,j=3,k,n,m; k=i+j;printf(\"%d\ k=k+1;printf(\"%d\ n=k*3;printf(\"%d\ m=n%j;printf(\"%d\ m=m-i;printf(\"%d\ n=k/j;printf(\"%d\}

【例2-12】分析下面程序的运行结果 main( ) {

int m,n, k; m=5; n=10; k=(--m)+(--n);

printf(\"m=%d,n=%d,k=%d\\n\ m=5, n=10; k=(m--)+(n--);

printf(\"m=%d,n=%d,k=%d\\n\}

本章小结各知识点的小结。 课堂提问与讨论

a=3*5,a*4<=>? 答:(a=3*5),(a*4) 课堂小结、作业布置

仔细阅读附录4及其说明,掌握优先级规律。(经常查阅)

9

课题 授课日期 简单程序设计 课型 课时 新授课 2 教学目的 1、了解C语言语句分类:控制语句,表达式语句,复合语句,函数调用语句等; 2、掌握表达式语句,复合语句的构成; 3、掌握格式化输入/输出函数,常用其它输入/输出函数的使用。 教学重点: 表达式语句,复合语句的构成,程序的基本结构; 教学难点: 格式化输入/输出函数。 教学中结合多个小示例,通过实例操作,体会语法点。 1、 C语言的语句类型; 2、 程序的基本结构; 3、 赋值语句; 4、数据的输入与输出函数的使用。 教学重点难点 教学方法 教学内容提纲 教学过程: 本章导读:说明本章的主要内容与学习要求。 §3.1 C语言语句

C语句可分为以下5种类型: 1.表达式语句

由表达式组成的语句称为表达式语句,其作用是计算表达式值或改变变量值。它的一般形式是: 表达式; 2.函数调用语句

由一个函数调用加上一个分号构成函数调用语句,其作用是完成特定的功能。它的一般形式是: 函数名(参数列表); 3.控制语句

控制语句用于完成一定的控制功能,以实现程序的各种结构方式。C语言有9种控制语句。

4.复合语句

复合语句是用大括号将若干语句组合在一起,又称分程序,在语法上相当于一条语句。 5.空语句

只有一个分号的语句称为空语句。它的一般形式是: ;

空语句是什么也不执行的语句,常用于循环语句中的循环体,表示循环体什么都不做。 §3.2 程序结构 3.2.1 程序结构简介

程序结构:顺序结构、选择结构、循环结构。任何复杂的程序都是由这三种基本结构组成。 【问题3-1】简单的程序结构。 main() {

int x,y,z; /*定义三个整型变量,是C语言中的声明部分*/ x=123;y=234; /*以下语句是C语言中的语句,是执行部分*/ z=x-y;

10

printf(\"x-y=%d\\n\}

【问题3-2】由多个函数构成的程序结构 main() /*主函数*/ {

int x,y,z; /*声明部分,定义变量的类型*/

scanf(\"%d,%d\ /*通过输入函数,给变量x、y赋值*/ z=min(x,y); /*调用min函数,将函数值赋给变量z*/ printf(\"min=%d\\n\ /*输出变量z的值*/ }

int min(int a,int b) /*定义一个名为min的函数,函数值为整型,虚参a和b也是整型*/ { int c; /*函数min中的声明部分*/ if(a>b) c=b; else c=a; return ( c );

} /*将变量c的值通过返回语句带回调用处*/ 3.2.2 顺序结构及举例

顺序结构是程序设计中最简单、最基本的结构,其特点是程序运行时,按语句书写的次序依次执行。 §3.3 赋值语句

赋值语句是一个应用十分普遍且最简单的语句。赋值语句的一般形式:x=e; 其中:x是变量名,“=”前面已介绍过,是赋值号,e是表达式。

赋值语句的功能是将赋值号右边表达式的值计算出来,再赋给赋值号左边变量。 §3.4 数据输入与输出

1、 printf函数(格式输出函数)

(1) 格式:printf(格式控制字符串,输出表列)

格式控制字符串:(格式控制项、普通字符)

输出表列:一般是一个表达式,简单地,可以是变量。

(2) 格式控制字符d、o、x/X、u、c、s、f、e/E、g/G构成控制项的各种常见形式。

表3-1,3-2。

注意:不要死记硬背,要总结规律。一般形式:% ± m n h/l 格式字符 2、 scanf函数(格式输入函数)

(1) 格式:scanf(格式控制字符串,输入表列-地址列表)

格式控制字符串:含义与printf类似

输入表列-地址列表:变量的地址或字符数组的首地址 (2) 格式控制字符、格式控制项与printf类似,表3-3,4。一般使用更加简单形式。 注意: 数据读入结束情况:遇空格、TAB、回车;遇非法输入;指定宽度结束。 3、字符数据的输入与输出

(1)putchar函数 一般形式:putchar(字符表达式); (2)puts函数 一般形式:puts(char *str); (3)gets函数 一般形式:gets(char *str); 课堂提问与讨论 课堂小结、作业布置

C语言的格式输入/输出的规定比较繁琐,重点掌握最常用的一些规则和规律即可,其它部分可在需要时随时查阅。

11

课题 授课日期 教学目的 简单程序设计 1、了解结构化程序设计的概念; 2、掌握结构化流程图、N-S流程图; 3、掌握顺序结构程序设计的方法。 教学重点: 顺序结构程序的设计。 教学难点: 结构化流程图、N-S流程图的绘制方法。 教学中结合多个小示例,通过实例操作,体会语法点。 1、 算法及其表示方法; 2、 结构化程序设计; 3、 顺序结构程序设计举例。 课型 课时 新授课 2 教学重点难点 教学方法 教学内容提纲 教学过程: 复习格式化的输入和输出。 一、算法及其表示方法

1、 算法:解决问题的方法、步骤

2、 算法的5大特性:有穷性,确定性,有0个或多个输入,有1个或多个输出,有效性。 3、 算法的表示方法

a) 用自然语言表示算法

b) 用流程图表示算法(传统流程图、改进的流程图) c) 用N-S流程图表示算法(盒图)

d) 用伪代码表示算法(常常用于算法设计) e) 用计算机语言表示算法 二、结构化程序设计

1、 结构化算法或程序由三种基本结构顺序组成:顺序结构,选择结构,循环结构;在基本

结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本结构中。 2、 可以用改进的流程图或N-S图表示。 三、顺序结构程序设计举例

例3-15:从键盘上输入两个整数放入变量a,b中,编程将这两个变量中的数据交换。 例3-16:从键盘上输入一个英文小写字母,编程输出该字母所对应的ASCII码和所对应的大写字母。

例3-17:输入三角形的三条边,编程求该三角形的面积 例3-18:编程求方程的解 3x25x70 例3-19:分析给出程序的运行结果。 课堂提问与讨论 课堂小结、作业布置

结构化流程图、N-S流程图绘制关键是记住各种基本结构的绘制方法。

12

课题 授课日期 教学目的 第4章 选择结构程序设计(1/3) 课型 课时 新授课 2 1. 学生应能掌握关系运算符与关系表达式的使用; 2、学生应能掌握逻辑运算符与逻辑表达式的使用; 3、学生应能掌握if语句基本结构。 教学重点: 1、关系运算符与关系表达式、逻辑运算符与逻辑表达式; 2、if语句的使用。 教学难点: 1、逻辑表达式运算的短路现象。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、关系运算符与关系表达式; 2、逻辑运算符与逻辑表达式; 3、if语句。 教学重点难点 教学方法 教学内容提纲 教学过程: 本章导读

选择结构是结构化程序中基本结构之一。选择结构是根据判定所给条件是否满足,自动决定程序该执行哪些语句。在C语言中,通常用if语句或switch语句来实现选择结构。if语句是两分支的选择语句;switch语句是多分支的选择语句。本章主要介绍什么是选择结构、选择结构的特点和语法以及如何利用选择结构语句设计简单的程序。 4.1关系运算符与关系表达式 1、关系运算符

关系运算实际上就是比较运算。比较两个量的运算符就称为关系运算符。 在C语言中为我们提供了6种关系运算符:

< 小于

<= 小于或等于 > 大于

>= 大于或等于 = = 等于 != 等于 2、关系表达式

关系表达式是用关系运算符将两个表达式(可以是算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式等表达式)连接起来的式子。 4.2 逻辑运算符与逻辑表达式 1、逻辑运算符

C语言中为我们提供了三种逻辑运算符,分别是: && 与运算 || 或运算 ! 非运算 2、逻辑表达式

逻辑表达式类似于关系表达式,是用逻辑运算符把两个表达式连接起来的式子。

13

4.3 if语句

【问题】我们在求解数学问题中常会遇到这样的问题,例如:计算一个分段函数:

0 x<=0

y= 1 x>0

又有时我们需要给学生成绩分等级。比如:85分以上的为A等,70~84分为B等,60~69分为C等……诸如此类问题。平时我们用数学方法解决,在C语言中我们该如何编写程序解决呢?

1、 单分支if语句的基本形式及应用举例。 2、 双分支if语句的基本结构及应用举例。

3、 多分支选择结构的if语句一般形式及其应用举例。 课堂提问与讨论 课堂小结、作业布置

14

课题 授课日期 教学目的 第4章 选择结构程序设计(2/3) 1. 学生应能理解if语句的嵌套概念, 2. 学生应能通过对条件运算符和条件表达式的学习掌握在简单情况下利用条件表达式表达选择结构的方法。 教学重点: if-else语句、switch语句、条件运算符教学难点: 教学难点: 1.嵌套if-else语句中的if与else匹配问题 2.switch语句的执行流程; 3.条件运算符的结合性及其使用 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、if语句的嵌套 2、条件运算符和条件表达式 3、switch语句 课型 课时 新授课 2 教学重点难点 教学方法 教学内容提纲 教学过程:

复习关系去处、逻辑运算、if语句。 4.3.4 if语句的嵌套及应用举例

当if语句中的语句体又是if语句时,我们认为这种情况就叫if语句的嵌套。

例4-5:键盘输入一行字符(以回车结束),统计其中所有数字字符、字母字符和其他字符的个数。

例4-6:输入两个十进制整数,输出这两个数的关系。如若输入的数据为2,3,则输出结果为2<3,若输入数据为3,2,则输出结果为3>2,若输入数据为3,3,则输出结果为3=3。

4.3.5 条件运算符和条件表达式

1、条件运算符

条件运算符是C语言中一个特殊的运算符,由“?”和“:”组合而成。 2、条件表达式的形式。 4.4 switch语句

【问题】前面我们所说的if语句通常用于解决两个分支的情况,而日常生活中我们常常要解决多个分支的问题。例如前面我们所说的,给学生成绩划分A、B、C等……,诸如此类问题。利用嵌套的if语句当然也是可以解决的,但是如果分支太多,if语句嵌套的层次数太多,势必会造成程序的冗长,可读性差。有没有什么更好的方法能解决多分支问题呢?

C语言为我们提供了专门用于解决多分支选择问题的switch语句,其一般形式为:

switch(表达式) {

case常量表达式1: 语句1; case常量表达式2: 语句2; …

case常量表达式n: 语句n; default : 语句n+1;

15

}

课堂提问与讨论 课堂小结、作业布置 课题 授课日期 第4章 选择结构程序设计(3/3) 课型 课时 新授课 2 教学目的 1.学生应能通过 “程序举例”的学习,学习一些常用选择结构算法,例如:少量数按从大到小或从小到大顺序输出;百分制成绩转换成五级制成绩输出;判断闰年等; 2.学生应能正确选择分支结构进行程序设计。 选择结构程序设计的方法。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 程序举例 1.输入一个十进制正整数,判断该数是否是7的倍数,若是输出\"Yes!\",否则输出\"No!\"。 2.输入3个数,按从大到小的顺序输出。 3.将一个百分制的成绩转化成5个等级制。 4. 用switch…case语句来实现上例。 5.输入2005年的一个月份,输出这个月的天数。(2005年为平年) 教学重点难点 教学方法 教学内容提纲 教学过程: 复习分支语句。 程序举例:

例4-10:输入一个十进制正整数,判断该数是否是7的倍数,若是输出\"Yes!\",否则输出\"No!\"

例4-11:输入3个数,按从大到小的顺序输出。

例4-12:将一个百分制的成绩转化成5个等级:90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。例如输入75,则显示C。

例4-13:用switch…case语句来实现【例4-12】。

例4-14:输入2005年的一个月份,输出这个月的天数。(2005年为平年) 本章内容小结。 课堂提问与讨论 课堂小结、作业布置 课题 授课日期 教学目的 第5章 循环结构程序设计(1/3) 课型 课时 新授课 2 1. 学生应能掌握循环的基本概念; 2. 学生应能描述掌握while循环语句的使用; 3. 学生应能掌握do-while循环语句的使用。 教学重点: 1、switch语句; 2、while循环语句; 3、do-while循环语句。 教学难点: 16

教学重点难点

1、switch语句的执行流程; 2、while循环语句循环控制; 3、do-while循环语句循环控制。 教学方法 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、循环的基本概念 2、循环方法的探索 3、循环结构语句:while和do-while语句 教学内容提纲 教学过程: 本章导读

复习循环结构的特点,介绍本章的主要内容和学习要求。 §5.1 循环的基本概念

【问题】如何计算1+2+3+4+…+100 循环方法的探索。 §5.2 循环结构语句

一、while语句(当型循环) 1)、while语句的一般形式 2)、执行过程是:(流程图、N-S图) 3)、使用while注意的问题。

例5-1:利用while语句,编写程序计算1+2+3+…+100。

例5-2:利用while语句,计算1到100之间所有3的倍数的和。 结论:编制循环程序要注意的几个问题。 二、do-while语句(直到型循环) 1)、do-while语句的一般形式 2)、do-while执行过程(流程图) 3)、do-while说明:

例5-3:利用do-while语句,编写程序计算1+2+3+…+100。 课堂提问与讨论 课堂小结、作业布置

17

课题 授课日期 第5章 循环结构程序设计(2/3) 课型 课时 新授课 2 教学目的 1、学生应能掌握for循环语句的使用; 2、学生应能掌握while、do-while和for循环的相互转换与嵌套的使用方法; 3、学生应能掌握循环体中的break和continue语句的用法; 教学重点: 1、for循环语句; 2、循环的嵌套; 3、循环体中的break和continue语句。 教学难点: 1、for循环语句循环控制; 2、嵌套循环中break和continue的作用。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、for循环; 2、循环的嵌套; 3、break语句、continue语句和goto语句。 教学重点难点 教学方法 教学内容提纲 教学过程: 复习while循环语句。 §5.3 for循环

1、for语句的一般形式(给出while循环的对应结构) 2、for循环执行过程(流程图)

例5-4:写一个程序,计算1+2+3+…+100。 例5-5:计算1+1.5+2.0+2.5+3.0+3.5+…+10。 3、for语句最容易理解、最常用的形式 4、for语句说明(6点)。C语言的for语句功能强大,使用灵活。 §5.4循环嵌套的几种形式

例5-6:计算s=1+(1+2)+(1+2+3)+…+(1+2+3+4+…10)。 §5.5 break语句、continue语句和goto语句 课堂提问与讨论 课堂小结、作业布置

18

课题 授课日期 教学目的 教学重点难点 教学方法 第5章 循环结构程序设计(3/3) 教学难点: 穷举法和迭代法循环结构程序设计 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 程序举例 1.计算s=1×2×3×4……×8 2.打印输出5行星号图形,但每行输出的个数不等 3.计算100以内的所有素数之和 4.计算Fibonacci数列前40项的和。 课型 课时 新授课 2 学生应能通过简单的程序设计例子进一步掌握三种循环结构。 教学内容提纲 教学过程:

复习三种循环结构、引入3种循环的比较、进一步加深学生对3种循环结构的理解。 一、几种循环的比较

1、 循环结构的基本组成部分(4部分)

2、 几种循环的比较。一般相互可以替代,但具体形式有些差异。

例5-7:将50-100之间的不能被3整除的数输出(用三种循环结构实现). 二、应用举例

例5-8: 计算s=1×2×3×4……×8 例5-9:打印以下图形(循环的嵌套)。 例5-10:计算100以内的所有素数之和。 例5-11:计算Fibonacci数列前20项的和。 课堂提问与讨论

注意到例5-10:外层n的循环,循环变量的修正是:“n=n+2”(即就是每次加2),为什么?(因为只要检查奇数,偶数能被2整除,一定不是素数)。 课堂小结、作业布置 课题 授课日期 教学目的 第6章 数组(1/4) 1、学生应能理解数组引入的意义及作用; 2、学生应能掌握一维数组的基本思想和基本用法; 3、学生应能掌握使用一维数组的基本算法:排序与查找。 教学重点: 1、一维数组的定义、初始化和引用; 教学重点难点 2、使用一维数组的基本算法:排序与查找。 教学难点: 1、一维数组的引用; 2、一维数组的具体应用:排序与查找。 教学方法 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 19

课型 课时 新授课 2

教学内容提纲 1、一维数组的定义 2、一维数组元素的引用 3、一维数组的存储和初始化 4、一维数组的应用 教学过程: 本章导读

在程序设计中,按序排列的同类型数据元素的集合称为数组。数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别的数组。

提出本章的主要内容和学习要求。

【问题】从键盘接收10个数,求平均数并输出小于平均数的数。 6.1.1 一维数组的定义形式及相关使用说明。 6.1.2 一维数组元素的引用形式和要求。

例6.1:将数字0~9存入一个整型数组a中,并输出。 6.1.3 一维数组的存储和初始化方法。 6.1.4 一维数组的应用举例。

例6.2:用数组求Fibonacci数列的前20项。 例6.3:随机输入10个数,选出其中的最小数。 例6.4:将10个整数从大到小排序。 课堂提问与讨论 课堂小结、作业布置

20

课题 授课日期 教学目的 第6章 数组(2/4) 课型 课时 新授课 2 1. 学生应能掌握二维及多维数组的基本思想和基本用法; 2. 学生应能掌握使用二维数组 教学重点: 二维数组定义、初始化、引用 教学难点: 1、二维数组及多维数组的存储和引用; 2、矩阵的转置 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、 二维数组的定义 2、 二维数组元素的引用 3、 二维数组的存储和初始化 4、 二维数组的应用 教学重点难点 教学方法 教学内容提纲 教学过程:

复习数组的概念,数组的定义、初始化、元素引用方法。 6.2 二维数组

C语言允许使用多维数组。多维数组的最简单的形式是二维数组。实质上二维数组也就是由一维数组组成的。

6.2.1 二维数组的一般定义形式及定义说明。 6.2.2 二维数组元素的引用形式。

程序设计时,通常用循环变量控制数组元素的下标,来实现数组元素的引用。 例6.5:数组元素引用的示范例题。 6.2.3 二维数组的存储和初始化的具体方法。 6.2.4 二维数组的应用

例6.6:求矩阵的转置。

例6.7:有一个3×4的矩阵,要求编程以求出其中值最大的那个元素,以及它所在的行号和列号。

例6.8:有M个人参加了N门课程的考试,编程求每个人的平均分以及每门课程的平均成绩。

课堂提问与讨论 课堂小结、作业布置

21

课题 授课日期 教学目的 第6章 数组(3/4) 课型 课时 新授课 2 1.学生应能掌握字符数组的定义、初始化、引用,及输入与输出 2.学生应能掌握字符串处理函数的使用方法。 教学重点: 1、字符数组的初始化、按字符串的输入和输出; 教学重点难点 2、二维字符数组对多字符串的存储和处理。 教学难点: 二维字符数组对多字符串的处理:多字符串排序算法。 教学方法 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、 字符数组的定义与初始化 2、 字符串 3、 字符串的应用 教学内容提纲 教学过程: 复习二维数组的概念、定义、初始化、元素引用的方法。引入字符数组(元素为字符)。 6.3 字符数组与字符串

字符数组,字符数组的每个元素是一个字符;

一维字符数组可以存放字符串;二维字符数组可以存放多个字符串。 字符数组可以逐个元素处理,若存放的是字符串,那么还可以直接调用字符串处理函数处理。

1、字符数组的定义、初始化及引用-与一般数组类似。 2、字符串与字符数组

(1) 字符串与字符数组。存放的内容。

(2) 字符数组的初始化(除了一般数组的初始化方法外,增加了一些方法) 例6.9:给字符数组赋值且输出。

(3) 字符数组的输入输出(两种形式:逐个字符输入/输出,整串输入/输出) 3、字符串(字符数组)处理函数

(1)字符串输入,输出函数:gets、puts

(2)字符串处理函数:strlen、strcat、strcpy、strcmp、 【例6.10】使用\"%c\"输入输出字符串。

【例6.11】输入输出一个字符串(scanf、printf) 【例6.12】输入输出一个字符串(gets、puts)

【例6.13】将一个字符串复制到另外一个字符串中。(strcpy) 【例6.14】连接两个字符串。(strcat)

【例6.15】输入5个字符串,将其中最小的字符串输出。(strcmp) 【例6.18】测字符串的长度。(strlen) 4、字符数组应用举例 【例6.17】输入一个字符串,统计其中的大写字母、小写字母、数字和其它字符的个数。 【例6.18】删除一个字符串中的某个特定字符,本题以字符's'为例。 课堂提问与讨论 课堂小结、作业布置

22

课题 授课日期 教学目的 第6章 数组(4/4) 课型 课时 新授课 2 1.通过程序举例复习一维、二维和字符数组的使用 2.掌握一维数组中的冒泡排序算法及其他数组应用的算法。 教学重点: 求最大值,冒泡排序、选择排序算法 教学难点: 冒泡排序、选择排序算法 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 程序举例 1.用冒泡法对10个数排序(从小到大)。 2.编程输出杨辉三角形(输出前10行)。 3.不用strcat函数,将键盘输入的两个字符串连接起来形成一个新串。 教学重点难点 教学方法 教学内容提纲 教学过程:

§6.4数组应用程序举例。

【例6.19】用冒泡法对10个数排序(从小到大)。

【例6.20】编程输出以下的杨辉三角形(输出前10行)。

【例6.21】不用strcat函数,将键盘输入的两个字符串连接起来形成一个新串。 本章知识点小结。 课堂提问与讨论 课堂小结、作业布置

23

课题 授课日期 第7章 函数(1/4) 课型 课时 新授课 2 教学目的 1、 通过一个学生成绩管理系统,说明模块化程序设计的方法; 2、 进一步了解C语言程序的结构; 3、 掌握函数的定义方法; 4、 函数的调用方法和形式。 教学重点: 函数的调用形式; 教学难点: 函数的调用方法。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、函数概述 2、函数的参数和函数的值 教学重点难点 教学方法 教学内容提纲 教学过程: 本章导读

本章的主要内容,和学习要求。 7.1 函数概述

1、模块化程序设计方法,引出C语言的函数式结构。 2、简单函数应用的例子。 例7-1 显示输出几行信息。 3、总结说明函数的定义方法。

例7-3:编一函数fun1用来实现将两个整数相加。 4、函数调用的一般形式和调用方式。 例7-4:函数调用时求值的顺序。 7.2 函数的参数和函数的值。

1、函数的形参和实参。

例7-5:分析函数调用时参数的传递的值的情况。 2、函数的返回值。(return语句) 课堂提问与讨论 课堂小结、作业布置

24

课题 授课日期 教学目的 第7章 函数(2/4) 课型 课时 新授课 2 1、 理解函数间的参数传递; 2、 理解数组名和数组元素作为参数的区别。 教学重点: 函数间的参数传递; 教学难点: 数组名作为函数参数传递的实质。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、 值传递的特点 2、 地址传递的特点 3、 数组作为函数的参数 教学重点难点 教学方法 教学内容提纲 教学过程: 复习函数的定义、函数调用方式。 7.3 函数间的参数传递

在函数的调用过程中,大部分都存在着数据上的联系,主要表现在两个方面:一是外部数据如何传递到函数内部;二是函数内部加工过的数据如何传递给外部程序。因此 C程序中,函数间的参数传递有两个方面:1)函数调用时传递给函数的值;2)函数调用结束时返回给主调函数的值。 7.3.1 值传递的特点

例7-8:分析函数调用时值的传递情况。 7.3.2 地址传递的特点

例7-9:分析使用数组名作为函数参数调用函数时地址的传递情况。 7.4 数组作为函数的参数

数组作为函数的参数有两种形式:

(1)一种是把数组元素作为函数的实参,此时形参是普通变量;

(2)另一种是把数组名作为函数的实参,此时形参可以是数组名或指针。 例7-10:分析用数组元素作为函数的实参进行函数的调用。 课堂提问与讨论 课堂小结、作业布置

25

课题 授课日期 教学目的 第7章 函数(3/4) 1、 理解函数的嵌套调用和递归调用方法; 2、 了解变量的作用域和存储方式。 教学重点: 函数的嵌套调用; 教学难点: 函数的递归调用和静态变量。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、 函数的嵌套调用及举例; 2、 函数的递归调用及举例; 3、 变量的作用域和存储方式。 课型 课时 新授课 2 教学重点难点 教学方法 教学内容提纲 教学过程: 复习函数间的参数传递方法,数组作为函数的参数的函数调用。 7.5 函数的嵌套与递归调用

1、函数的嵌套调用

【问题】 1)定义一个sum函数实现1+2+…+n;

2)定义一个time函数实现a1×a2×…×am

调用这两个函数,计算: s=1×(1+2) ×(1+2+3) ×…×(1+2+…+10)

分析函数的嵌套调用过程。

2、函数递归调用的及举例。 7.6 变量的作用域和存储方式

7.6.1 变量的作用域(局部变量、全局变量) 7.6.2 变量的存储方式(动态存储、静态存储) 课堂提问与讨论 课堂小结、作业布置

26

课题 授课日期 教学目的 教学重点难点 教学方法 第7章 函数(4/4) 函数的定义和调用方法 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 程序举例 1、 最大公约数和最小倍数的函数; 2、 数组作为函数的参数; 3、 函数的递归调用举例; 4、 变量的作用域举例。 课型 课时 新授课 2 通过函数应用程序举例,进一步掌握函数的相关知识。 教学内容提纲 教学过程:

复习变量的作用域和存储方式。 7.7 函数应用程序举例。

【例7-24】写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。

【例7-25】函数summ的功能是求n个实型数据的和,函数amin是求数组a中最小元素及所在的位置,主函数调用这两个函数,求x[4][4]中每行元素的和,并求和中最小数及所在的位置。

【例7-26】用递归的方法编写一函数ssq计算12+22+…+n2。主函数调用该函数,计算并输出12+22+…+202

【例7-27】下面程序中函数 fun 的功能是:将在字符串s中下标为偶数位置上的字符,紧随其后重复出现一次,放在一个新串t中,t中字符按原字符串中字符的顺序排列。

【例7-28】分析使用了静态变量函数的运行结果。 本章知识点回顾和小结。 课堂提问与讨论 课堂小结、作业布置

27

课题 授课日期 教学目的 第8章 指针(1/8) 课型 课时 新授课 2 1、 理解指针的基本概念; 2、 区分指针和指针变量,以及变量和指针变量; 3、 掌握指针的定义方法。 教学重点: 理解指针的基本概念。 教学难点: 区分指针与指针变量。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、 指针及指针变量的概念; 2、 指针变量的定义与初始化方法。 教学重点难点 教学方法 教学内容提纲 教学过程: 本章导读

本章的主要内容,和学习要求。 8.1指针的基本概念

问题:什么是指针?什么是指针变量?指针与指针变量有什么区别和联系? 8.1.1 指针的概念 1.内存及其地址; 2.变量地址的获取; 3.指针与指针变量;

指针即地址。由于地址唯一确定程序实体的存储位置,就象路标一样,故形象地称为指针。

指针变量——专门存放变量(或其它程序实体)地址的变量。指针变量也需要存储单元(存放地址值的整数),它本身也有地址。

4.直接访问方式与间接访问方式。 8.1.2指针变量的定义与初始化

1.指针的类型。

指针的类型又称指针的基类型,即指针所指向的程序实体(如变量、数组)的类型,由此可确定程序实体所占内存的字节数。

2.指针变量的定义。 3.指针变量的初始化。 课堂提问与讨论 课堂小结、作业布置

28

课题 授课日期 第8章 指针(2/8) 课型 课时 新授课 2 教学目的 1、掌握指针变量的赋值运算。 2、理解指向运算符的功能,及其与取地址运算符&的关系。 3、掌握指针变量的引用方法。 4、指针的算术运算和逻辑运算。 教学重点难点: 指针变量的引用方式。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、指针变量赋值运算的几种情况列举; 2、指向运算和指针变量的引用方法; 3、指针的算术运算和关系运算。 教学重点难点 教学方法 教学内容提纲 教学过程: 复习指针的概念、指针变量的定义和初始化。 8.1.3指针的运算及引用

1.指针变量的赋值运算

(1) 赋给同类型普通变量求地址运算得到的地址值。 (2) 通过已有地址值的指针变量赋值。 (3) 通过标准函数获得地址值。 (4) 给指针变量赋“空”值。 2.指向运算和指针变量的引用

(1) 指向运算符*和取地址运算符&及这两者之间的关系。 (2) 指针变量的引用

【例8-1】理解例举程序中含有指针的各语句的含义。

【例8-2】输入两个整数i1和i2,利用指针将大数存放到i1中,小数存放到i2中,最后按i1、i2的顺序输出。

3.指针的算术运算和关系运算 (1) 指针的算术运算。 (2) 指针的关系运算。 课堂提问与讨论 课堂小结、作业布置

29

课题 授课日期 教学目的 第8章 指针(3/8) 课型 课时 新授课 2 1、通过实例了解指针作为函数参数时值的传递。 2、了解多级指针的概念。 教学重点: 指针作为函数参数,函数调用时值的传递。 教学难点: 多级指针的概念和使用。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、指针作为函数参数的实现方法。 2、通过举例分析多级指针的概念。 教学重点难点 教学方法 教学内容提纲 教学过程:

复习变量的引用、指针的运算。 8.1.4 指针作为函数参数

【例8-3】输入两个整数i1和i2,利用指针将大数存放到i1中,小数存放到i2中,最后按i1、i2的顺序输出。要求用函数调用交换变量的值。

【例8-4】分析指针作为函数参数的程序运行结果。 8.1.5 多级指针的概念

二级指针的含义和定义形式,使用二级指针时应注意的问题。 【例8-5】运行使用二级指针的程序分析结果。 课堂提问与讨论 课堂小结、作业布置

30

课题 授课日期 第8章 指针(4/8) 课型 课时 新授课 2 教学目的 1、指向数组元素的指针变量的定义方法和使用; 2、了解用一维数组元素的地址表示方法访问数组元素; 3、数组名或指针变量作为函数参数的值传递; 4、指针与二维数组的关系。 教学重点: 用指针变量访问数组元素的方法。 教学难点: 用于二维数组的指针变量的使用。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、指向数组元素的指针变量; 2、一维数组元素的地址表示法; 3、数组名或指针变量作为函数参数; 4、二维数组的地址表示法; 5、用于二维数组的指针变量。 教学重点难点 教学方法 教学内容提纲 教学过程:

复习指针作为函数参数进行数据传递的实现方法。 8.2指针与数组

8.2.1 指针与一维数组

1.指向数组元素的指针变量

【例8-6】用指针变量访问数组元素。 2.一维数组元素的地址表示法

【例8-7】访问数组元素的几种方法。 3.数组名或指针变量作函数参数

【例8-8】输入N个(设为10个)整数,将其中的全部奇数输出。要求输入、输出均调用函数进行。

8.2.2指针与二维数组

二维数组元素是按行存放的,可以按存放的顺序访问数组元素。但是,为了方便地按行和列的方式访问数组元素,必须要了解C语言规定的行列地址的表示方法。

1.二维数组的地址表示法

【例8-9】输出二维数组的有关值。 2.用于二维数组的指针变量

【例8-10】用一级指针变量输出二维数组的全部元素。(二维数组的地址表示法) 【例8-11】输出二维数组任意行任意列的元素值。(用于二维数组的指针变量) 课堂提问与讨论 课堂小结、作业布置

31

课题 授课日期 教学目的 第8章 指针(5/8) 1、了解使用指针变量访问字符串的方法; 2、字符串指针作为函数参数时值的传递。 教学重点: 使用字符型指针变量方式引用常量字符串或字符数组。 教学难点: 字符串指针作函数参数。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、复习提问; 2、字符串的访问方法; 3、分析字符数组和字符型指针变量的不同之处; 4、讨论字符串指针作函数参数时值的传递情况。 课型 课时 新授课 2 教学重点难点 教学方法 教学内容提纲 教学过程:

复习指向数组元素的指针变量的定义和使用。 8.2.3指针与字符串

1.字符串的访问方法

字符类型的指针变量如果取得字符数组或字符串的首地址,也可以用来访问字符串。复习总结出C语言访问字符串的三种主要方式。

(1) 直接引用常量字符串; (2) 字符数组方式;

(3) 字符型指针变量方式引用常量字符串或字符数组。 【例8-12】理解给出程序中字符型指针变量的作用。

【例8-13】在输入的字符串中查找是否有字符'k',若有指出第一次遇到的'k'是第几个字符。

【例8-14】在输入的字符串中删除指定的字符。 2.对比字符数组和字符型指针变量

【例8-15】输入字符串,统计各元音字母的个数。 3.字符串指针作函数参数 【例8-16】 编写函数cpystr,用指针方法将字符串2复制到字符串1。主函数调用cpystr实现复制。

课堂提问与讨论 课堂小结、作业布置

32

课题 授课日期 教学目的 第8章 指针(6/8) 1、指针数组的概念和定义; 2、了解用指针数组处理多字符串的问题。 3、通过指针数组访问二维数组。 教学重点: 指针数组的概念和定义形式的掌握。 教学难点: 通过指针数组访问二维数组。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、指针数组的概念和定义形式; 2、用指针数组处理多字符串问题的分析和举例; 3、通过指针数组访问二维数组的分析。 课型 课时 新授课 2 教学重点难点 教学方法 教学内容提纲 教学过程:

复习指针与字符串。 8.2.4 指针数组

1.指针数组的概念和定义

由指向同一数据类型数据的指针为元素组成的数组叫指针数组。一维指针数组的定义形式为:类型 *数组名[元素个数];

【例8-17】阅读一程序,指出输出结果的含义。 2.用指针数组处理多字符串问题

【例8-18】 利用指针数组对多字符串进行字典排序。 3.通过指针数组访问二维数组

使用指针数组与使用指向一维数组的指针变量处理二维数组问题在形式上很类似,但一定要注意它们的区别。 课堂提问与讨论 课堂小结、作业布置

33

课题 授课日期 教学目的 第8章 指针(7/8) 了解指针与函数的关系。 教学重点: 认识指向函数的指针。 教学难点: 带参数主函数的应用。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、指向函数指针调用函数的方法和作为函数参数的方法; 2、返回指针的函数的定义方法; 3、带参数的主函数的定义方法和程序举例。 课型 课时 新授课 2 教学重点难点 教学方法 教学内容提纲 教学过程:

复习指针数组的概念和定义。

首先指出指针与函数关系的三个方面的问题,引入新课。 8.3 指针与函数

8.3.1 指向函数的指针

1.用指向函数的指针变量调用函数的方法。

【例8-20】用指向函数的指针变量调用求较大值函数。 2.指向函数的指针变量作函数参数的方法和用途。 【例8-21】利用梯形法计算定积分sinx dx,cosx dx。 8.3.2 返回指针的函数的定义方法

【例8-22】输入一个1~7之间的整数,输出对应的星期名。 8.3.3 带参数的主函数

【例8-23】编程显示命令行输入的,除可执行文件名外的全部字符串,每行一个字符串。

课堂提问与讨论 课堂小结、作业布置

34

课题 授课日期 教学目的 教学重点难点 教学方法 第8章 指针(8/8) 通过程序举例复习指针的概念和使用方法。 教学重点: 指针变量的定义、指针运算及引用方法。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、用指针的方法将数组a中的n个整数按相反的顺序存放。 2、输入3×4整数矩阵并求矩阵中最大值、最小值和所有元素的平均值。 3、统计字符串中单词的个数。单词由小写字母组成,单词之间由空格分隔,字符串开始和结尾没有空格。 4、本章知识小结。 课型 课时 新授课 2 教学内容提纲 教学过程: 程序举例

【例8-24】用指针的方法将数组a中的n个整数按相反的顺序存放。

【例8-25】输入3×4整数矩阵并求矩阵中最大值、最小值和所有元素的平均值。 【例8-26】统计字符串中单词的个数。单词由小写字母组成,单词之间由空格分隔,字符串开始和结尾没有空格。 本章小结

1.指针数据类型汇总。

2.指针的运算。 课堂提问与讨论 课堂小结、作业布置

35

课题 授课日期 教学目的 第9章 结构体与共用体(1/3) 课型 课时 新授课 2 1、理解结构体类型,学会定义结构体变量、引用结构体成员; 2、了解结构体数组的定义、初始化以及数组元素的引用方法; 3、了解链表的概念。 教学重点: 结构体变量的定义、初始化和引用方法。 教学难点: 链表的操作。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、结构体类型的应用实例; 2、结构体类型的定义形式; 3、结构体变量的说明、初始化和成员的引用方法; 4、结构体数组的定义、初始化以及数组元素的引用方法; 5、动态内存分配与链表。 教学重点难点 教学方法 教学内容提纲 教学过程: 本章导读

本章的学习目的与要求。 9.1 结构体

【问题】什么是结构体类型?什么是结构体变量?结构体类型与数组类型有什么区别和联系?

姓名 (字符数组) 年龄 (整型) 性别 (字符) 身份证号 (长整型) 民族 (字符) 住址 (字符数组) 电话号码 (长整型) 9.1.1 结构体类型的定义形式。

9.1.2 结构体变量的说明——三种方法。 9.1.3 结构体变量的初始化 9.1.4 结构体变量的引用

1.引用结构体成员

在无嵌套的情况下,引用结构体变量成员的形式为:结构体变量名·成员名 2.结构体变量的赋值、输入和输出 3.同一类型的结构体变量可相互赋值 【例9-1】输出结构体数据。

9.1.5 结构体数组的定义、初始化以及数组元素的引用方法

【例9-2】输入3个学生的信息然后输出。每个学生的信息包括学号、姓名和4门课程的成绩。

9.1.8 动态内存分配与链表

1.动态内存分配和链表的概念2.链表的概念【例9-11】建立一个简单的链表并输出。 【例9-15】建立带有头结点的单向链表,当输入-1时结束。 【例9-17】编写函数,在单向链表中删除值为x的结点。 课堂提问与讨论 课堂小结、作业布置

36

课题 授课日期 教学目的 第9章 结构体与共用体(2/3) 1、了解共用体的概念; 2、共用体变量的定义和引用方法。 教学重点: 共用体变量的定义和引用方法。 教学难点: 共用体和结构体类型的区别和联系。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、共用体的概念; 2、共用体类型的定义形式; 3、共用体变量的说明和引用方法; 4、分析总结与结构体类型的区别和联系; 5、共用体的应用举例。 课型 课时 新授课 2 教学重点难点 教学方法 教学内容提纲 教学过程: 复习结构体。 9.2 共用体

问题:什么是共用体类型?什么是共用体变量?共用体类型与结构体类型有什么区别和联系?

9.2.1 共用体类型的定义。

9.2.2 共用体变量的说明——三种方式。 9.2.3 共用体变量的引用

1.共用体变量的引用 2.共用体的应用

(1) 变体记录问题

【例9-19】输入N个人的信息,共同的信息有:姓名、性别,另外,职业(job)为教师('t')则登记其单位(group),职业为学生('s')则登记其班级(class),最后将信息输出。

(2) 将内存空间的内容拆分成几部分使用 【例9-20】运行程序,分析运行结果。 课堂提问与讨论 课堂小结、作业布置

37

课题 授课日期 教学目的 第9章 结构体与共用体(3/3) 1、枚举类型的定义形式和应用; 2、掌握用户自定义类型的方法。 教学重点: 枚举类型变量的说明及引用方式。 教学难点: 用户新定义类型的方法和步骤。 主要运用讲授法。(1.举例引导2.提问3.类比) 利用多媒体课件进行教学,扩大课堂教学的信息量。 1、枚举类型应用实例和它的定义形式; 2、枚举变量的说明及引用; 3、枚举类型的应用程序举例; 4、用户定义类型; 5、结构体、共用体和枚举类型综合应用举例。 课型 课时 新授课 2 教学重点难点 教学方法 教学内容提纲 教学过程:

复习结构体和共用体。 9.3 枚举类型

9.3.1 枚举类型的定义形式 9.3.2 枚举变量的说明及引用

【例9-21】输出全部的枚举值字符串。 9.3.3 枚举类型的应用

【例9-22】输入星期几的整数,输出“工作日”或“休息日”的信息。 9.4 用户定义类型

1.定义“替代”类型名

定义的形式为:typedef 类型名 标识符; 2.定义“构造”类型名

定义的形式为:typedef 类型名 标识符及“构造”; 3.定义新类型名的一般步骤及说明

(1) 先按定义变量或数组的方法写出定义; 如: char a[10];

(2) 将定义的名字换成新类型名; 如: char NAME[10];

(3) 在前面加上typedef;

如: typedef char NAME[10];

(4) 然后可以用新类型名定义变量;

如:NAME c,d;c、d即是有10个元素的字符数组。 9.5 程序举例

【例9-23】有5个学生,每个学生的信息有学号、姓名和三门课的成绩,求每个学生的平均成绩并按平均成绩从大到小对所有学生的信息进行排序然后输出。

【例9-24】有5个学生,每个学生的信息有学号、姓名和三门课的成绩,输出三门课的总平均分以及所有成绩中最高成绩所对应学生的全部信息。

【例9-25】已知单向链表的结点类型为struct node,头指针为head,编写一个释放链

38

表的函数。

【例9-26】已知函数bioskey(0)返回用户按键对应的一个16位二进制数,其中若是控制键(含移动光标、组合控制键等)则高8位是该键的扫描码,低8位是0;若是可见字符(含空格)则低8位是字符的ASCII码。利用共用体编程获得用户按键的ASCII码或扫描码。

【例9-27】口袋中有红、黄、绿、蓝颜色的球各一些,现从口袋中每次摸出3个球,要求颜色均不同,考虑摸出的顺序,输出所有可能的取法的排列及取法的数量。 本章小结

1、结构体与共用体很多相似的地方。 2.结构体与共用体的主要区别。

3.定义结构体与共用体类型时可相互嵌套。

4.对于结构体类型,如果其中的一个成员项是一个指向自身结构的指针,则该类型可以用作链表的结点类型。

5.枚举类型的数据就是用户定义的一组标识符(枚举常量)的序列,其存储的是整型数值,因此枚举类型是基本数据类型。

6.用户可以通过typedef给系统数据类型以及构造类型重新命名,注意这并没有定义新的类型。

课堂提问与讨论 课堂小结、作业布置

39

因篇幅问题不能全部显示,请点此查看更多更全内容