《C语言程序设计》谭浩强(第四版)教案_第1页
《C语言程序设计》谭浩强(第四版)教案_第2页
《C语言程序设计》谭浩强(第四版)教案_第3页
《C语言程序设计》谭浩强(第四版)教案_第4页
《C语言程序设计》谭浩强(第四版)教案_第5页
已阅读5页,还剩23页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《C语言程序设计》教案

课程名称C语言程序设计

教材C语言程序设计(第四版)作者:谭浩强清华大学出版社

考试课程。

考核方式

总成绩:课堂参与占10%;试验报告占20%:期末考试占70%(闭卷考试)。

C语言是近年来国内外得到迅速推广使用的一种计算机语言。C语言程序设计课程是

计算机专业和信息管理专业的核心专业基础课,它功能丰富,表达能力强,使用灵活方便,

应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的

优点。既适用于应用软件编写,又适用于系统软件的编写。在现代的工业机器人的众多

语言中,大多编程风格以C语言非常类似,学生学好C语言,对将来的工作中,从事工

教业机器人现场编程是非常有帮助的。

学课程的性质和任务

基《语言程序设计》这门课是我校工业机器人、分布式发电与微电网专业的专业必修课。

本作为计算机系的数据结构、C++、单片机编程等课程的前导课程,也是一门实践性很强的

目课程,既要掌握概念,又要动手编程,还要上机调试运行。对工业机器人专业来说是一

的门必修的课程。

和同时,这门课程也是“湖南省非计算机专业学生计算机应用能力水平考试”二级考试

要的主要语种之一,

求课程的教学目标

本课程的教学目标是:通过理论和实践教学,使学生较好地掌握C语言各方面的知识,

掌握基本的程序设计过程和技巧,具备初步的高级语言程序设计能力,并能熟练应用

VC++6.0集成环境进行C语言的编写、编译与调试,能应用C语言解决一般编程问题的

水平。

一、程序设计和C语言

重点:计算矶程序、计算机语言、C语言编译软件的安装、最简单的C语言程序

二、算法:程序的灵魂

重点:简单的算法举例、算法的特性、用流程图表示算法。

三、顺序结构程序设计

重点:C语言的数据类型、C语句的种类、赋值语句、数据的输入输出及输入输出

中最常用的控制格式。

四、选择结构程序设计

重点:关系运算符与逻辑运算符及其组成的具有逻辑值的表达式、二条分支语句的格

式及基本应用、多分支的选择语句。

五、循环结构程序设计

重点:C构成循环的四种方法,尤其是后三种方法、break与continue语句的基本作

用。

难点:while语句;do-while语句;for语句;循环的嵌套:break与continue语句。

六、数组

重点:一维数组、二维数组的定义与引用;字符数组的定义与引用、常用字符串处

理函数及字符处理函数;数组的应用

难点:二维数组的定义与引用;字符数组;数组的应用

七、困数

重点:函数的定义;函数的参数和函数的值;函数的调用;函数的嵌套调用;函数的

递归调用;数组作为函数参数;变量作用域;量存储类别:

难点:函数定义、函数调用、函数声明等基本基本概念;函数的嵌套调用与递归调

用;数组作为函数的参数、变量的存储类别与作用域。

八、指针

重点和难点:指针与地址的基本概念、指针与变量的关系;指针与数组;指针与字

符串、指针数组与二级指针;指针的应用

九、建立自己的数据类型

重点和难点:定义和使用结构体变量、用指针处理链表、共用体类型

十、文件

重点:文件的基本知识、fopen>fclose函数打开与关闭文件、顺序读写数据文件、

随机读写数据文件

难点:用二进制方式向文件读写一组数据。

十一、常见错误分析

重点和难点:文件的基本概念;文件的打开、关闭、常用读写方法。

十二、数组高级应用

重点:不定长数组与二维数组的应用

难点:不定长数组与二维数组的应用

十三、综合应用

重点:数组、if语句、循环语句、函数知识的综合应用

难点:二维数组、指针

教材、教材:《C程序设计》(第四版)谭浩强著清华大学出版社2010年6月

参考书

参考书:《C程序设计语言》Kernighan&Ritchie机械工业出版社

《C语言程序设计》教案

第1-2课时

授课内容第1章C语言概述

教学目的

了解C历史,名称来源、C特点,掌握C程序基本结构;C语言的版本、C语言的关键字;

和要求

重点

C语言的关键字;

难点

引言

语言:人一人语言交流;聋哑人一手势语;人机一计算机语言

C语言是一种流行的计算机高级语言,C语言适合于编写系统软件,也可以编写应用程序。

讲授

一、语言出现的历史背景

(1)C语言的发展源于人们希望用高级语言编写操作系统。(C-BCPL第二字母)

ALG0L60(高级语言)->CPL(硬件支持)-BCPC->B-〉C->标准5>ANSIC->ISOC

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

二、C语言的特点

教C语言既具有一般高级语言特性,又具有低级语言特性。8个特点。

学1、C语言简洁、紧凑。

安2、运算符丰富。

排3、数据结构类型丰富。

4、具有结构化的控制语句。

5、语法限制不太严格,程序设计自由度大。

6、C语言允许直接访问物理地址,能实现汇编语言的大部分功能,可以直接对硬件进行操作。

7、生成目标代码质量高,程序执行效率高。

8、与汇编语言相比,用C语言写的程序可移植性好。

三、C语言的关键字

附录C(书本378页)

四、C语言的版本和关键字

aulo、inline、restricts_bool>.Complex、—Imaginary是后来力,充的,有些编译器也力,充了关

键词。

五、TurboC编译器的安装与使用

课后自我

总结分析

备注

《C语言程序设计》教案

第3-4课时

授课内容第1章VC++6.0、VS2015的安装和使用

教学目的了解C语言常用的编译器;掌握VC++6.0、VS2015的下载与安装;

和要求掌握VC++6.0、VS2015的使用

重点重点:VC++6.0、VS2015的使用

难点难点:VC++6.0、VS2015的使用

讲授

一、C语言常用的编译器

(1)32位的WINDOWS操作系统与64位的WINDOWS操作系统

(2)VC++6.0(2)VS2015

二、文件夹与压缩包

1、文件夹

2、文件的压缩与解压

3、软件的下载

教4、软件安装的一般流程

学5、产品id号、序列号与破解补丁

安三、VC++6.0、VS2015的下载与安装

排7、生成目标代码质量高,程序执行效率高。

8、与汇编语言相比,用C语言写的程序可移植性好。

四、VC++6.0、VS2015的使用

VC++6.0、VS2015的使用

五、c4droid编译器的使用

1、基于安卓手机操作系统的C语言编译器

2、c4droid编译器的安装

3、c4droid编译器的使用

六、上机演示及实践操作

在win7电脑上示范VC++6.0、VS2015的编译器的安装和使用

课后自我同学们对计算机基础知识比较缺乏,安装VC++6.0时,不知道如何解压,也不知道如何下

总结分析载和计算机操作系统版本匹配的VC++6.0或VS2015

备注

《C语言程序设计》教案

第5-6课时

授课内容第2章算法的基本概念和简单算法举例

教学目的

了解算法的基本概念、程序设计的一般流程、掌握书写简单的算法流程、了解算法的特性

和要求

重点

掌握书写简单的算法流程。

难点

引言(5分钟)

什么是算法?菜谱、拳谱、歌谱都是广义的算法。以湘潭去北京开会为例解释算法的优劣。

1+2+3+…100的常规算法和高斯的首尾相加快递算法

讲授

一、简单算法举例(37分钟)

(1)求5!(10分钟)

常规求解方式的烦琐引出用循环方式求解的方法。

分析用循环方式求5!的C语言代码

(2)求1X3X4X5X7X9X11(10分钟)

询问同学此题与5!的异同,引每项是2n-l的通项,在上题的基础上改动少量代码可实现本

题的C语言编程。

(3)求2000-2500年间的闰年(10分钟)

图示方式给学生解说闰年要满足的条件,引出要做多次判断的较复杂流程

提问:能被4整除,也能被100整除,是不是等同能被400整除这一认识误区

再次提问:2000年是不是闰年,为什么?2060色是不是闰年,为什么?检测学生是否了解

闰年判断流程。

(4)素数的求法(7分钟)

根据素数的定义来循环判断是否能被一系列数整除,最后判断是不是素数,请学生尝试写

出求解流程。

二、算法的特性(3分钟)

1、有穷性。2、确定性。3、0个或多少输入。4、1个或多个输出。5、有效性。

三、上机演示及实践操作

在讲课的同时切换软件界面调试代码

课后自我

通过提问可以了解同学们对知识的掌握程序,互动性的教学设计更有益于教学

总结分析

备注

《C语言程序设计》教案

第7-8课时

授课内容第2章算法的表示

教学目的

掌握用流程图表示算法;了解传统流程图的弊端;掌握N-S流程图表示方法。

和要求

重点重点:掌握用流程图表示算法;掌握N-S流程图表示方法

难点难点:掌握用流程图表示算法;掌握N-S流程图表示方法

讲授

一、用流程图表示算法(15分钟)

1、介绍流程图的图框及含义

起止框、输入输出框、判断框、处理框、流程线、连接点、注释框

2、示范用流程图表示两个分支的if语句

3、将例2.1的算法用流程图表示并分析

4、将例2.2的算法用流程图表示并分析

5、将例2.3的算法用流程图表示并分析

总结:流程图表示算法比较直观

2、将例2.4多项式求和用流程图表示

教(1)、书本求解本题算法的流程图表示

学(2)、其它算法的流程图表示

安二、三种基本结构和改进的流程图(15分钟)

排1、统流程图的弊端

2、三种基本结构

(1)顺序

(2)选择

(3)循环分当型和直到型两种

二、用N—S流程图表示算法(15分钟)

1、N-S流程图的符号

2、将例2.1的算法用N-S流程图表示并分析

3、将例2.2的算法用N-S流程图表示并分析

4、将例2.3的算法用N-S流程图表示并分析

三、实践环节

对“分时问候”的算法绘制N-S流程图

课后自我

总结分析

备注

《C语言程序设计》教案

第9-10课时

授课内容第3章最简单的C程序设计一一顺序程序设计

教学目的

举例说明顺序程序调序的基本流程、整型数据类型、整型数据的溢出。

和要求

重点重点:整型数据类型;整型数据的溢出

难点难点:整型数据类型:整型数据的溢出

讲授

一、顺序程序设计举例(10分钟)

1、绘制例3.I算法的N-S流程图

2、根据N-S流程怪编写代码并调试

二、常量与变量(15分钟)

1、常量概念。

(1)整型常量、整型常量、字符常量、字符串常量

(2)ASCII字符

(3)转义字符

2、变量概念、变量名

(1)先定义,后使用

(2)变量名与变量值概念的异同

排三、数据类型概述(5分钟)

1、不同类型的数掂在内存中占用的存储单位长度是不同的

VC++6.0为字符型数据分配一个字节长度;为int型(基本型)分配4个字节的长度。

2、存储不同数据类型的方法也是不同的。

四、整型数据(15分钟)

1、整型数据的分类:

(1)基本整型(int型)(2)短整型(shortint);(3)长整型(longint)

2、整型变量的符号属性

(1)有符号型和无符号型(2)整型数据常见的存储空间和值的范围

3、整型数据的溢出

五、上机演示及实践操作

在讲课的同时切换编译界面调试整型数据溢出

课后自我

总结分析

备注

《C语言程序设计》教案

第11-12课时

授课内容第3章最简单的C程序设计一一顺序程序设计

教学目的

举例说明顺序程序调序的基本流程、数据的表现形式及运算、不同数据类型的混合运算。

和要求

重点

整型数据类型longint和shortint数据类型、运算符的优级先级、不同数据类型的混合运算

难点

讲授

一、浮点型数据

1、浮点型数据的存储方式

2、浮点型数据的表现形式浮点数据的指数形式

3、浮点型数据的类型

(1)单精度(2)双精度(3)长双精度

二、字符型数据

1、字符常量表示。直接表示/转义表示(特殊的转义字符,一般字符也可以转义表示)。

特殊转义字符对显示/打印的控制作用

2、字符变量一1个字节,char关键词。

教3、字符数据的存储一ASCII码/二进制存储一C语言可以将字符看做很短的整数处理。

学例2-7A,例2-8A可以看出字符数据的具有整数特性。

安三、怎样确定常量的类型

排1、从常量的表示形式,如精度

2、只要看到单撇号括起来的单个字符或转义字符即字符常量

四、运算符与表达式

1、基本的算术运算符2、自增、自减运算符

3、算术表达式和运算符的优先级与结合性

五、数值型数据混合运算

1、自动隐式转换。2、强制类型转换。

六、C语句

1、控制语句2、函数调用语句3、表达式语句

4、空语句5、复合语句

七、上机演示及实践操作

在讲课的同时切换编译界面调试整型数据溢出

课后自我

总结分析

备注

《C语言程序设计》教案

第13-14课时

授课内容第4章(1)选择结构程序设计

教学目的理解条件-产生逻辑值的表达式;熟练绘制选择语句算术的流程图

和要求掌握关系运算符、关系表达式;逻辑运算符、逻辑表达式

重点重点:关系运算符、关系表达式;逻辑运算符、关系表达式

难点难点:熟练绘制选择语句算术的流程图

讲授

一、选择结构的条件判断

1、理解条件•产生逻辑值的表达式

2、选择结构的流程图绘制

3、二元二次方程求根的算法及程序编写

二、关系运算符与关系表达式

“关系运算”(比较运算)即,将两个值进行比较,判断是否符合或满足给定的条件。

1、关系运算符及其优先次序

a)C语言提供6种关系运算符。表57。

b)关于优先次序:前4种高于后两种;关系低于算术;关系高于赋值

例5-2o

2、关系表达式

关系表达式的值是逻辑值,即“真”“假C语言没有逻辑型数据,1一“真”,0-"假

例5-3o

三、逻辑运算符和逻辑表达式

“关系运算”(比较运算)即,两个逻辑值的运算。

1、逻辑运算符。(1)&&逻辑与,(2)||逻辑或,(3)!逻辑非

2、逻辑运算符的优先顺序:

3、逻辑表达式

四、条件运算符与条件表达式

1、单目运算符、双目运算符、三目运算符的概念

2、C语言啡一的三目运算符构成的条件表达式

课后自我

总结分析

备注

《C语言程序设计》教案

第15-16课时

授课内容第4章(2)选择结构程序设计

教学目的

选择结构的嵌套;switch语句实现多分支选择结构

和要求

重点重点:选择结构的嵌套;switch语句实现多分支选择结构

难点难点:选择结构的嵌套:switch语句实现多分支选择结构

讲授

一、if语句的嵌套

1、在if语句中又包含一个或多个if语句称为if语句的嵌套。

2、如果if与else的数目不一-致,为了体现程序设计者的思想,可加花括号来确定配对的关

系。

3、利用代码缩进增强代码的可读性,养成良好的编程风格

4、例4.5阶跃函数用if语句的嵌套实现

(1)绘制流程图(2)将流程图编写成程序

教二、用switch语句实现多分支选择结构

学如果条件分支较多,利用if语句显得程序冗长,且可读性降低。因此,C语言设计了switch

安语句。

排1、switch语句的一般形式

2、例4.6输出考试成绩的ABCD段等级

(1)绘制流程图(2)将流程图编写成程序

3、例4.7用switcc语句处理菜单命令

三、选择结构程序设计综合举例

例4.8判断某一年是否是闰年

例4.9求二元二次方程的实根

四、上机演示及实践操作

在讲课的同时切换软件界面调试代码

课后自我

总结分析

备注

《C语言程序设计》教案

第17-18课时

授课内容第5章(1)循环结构程序设计

教学目的

掌握while当型循环、dowhile直到型循环、for循环

和要求

while当型循环、dowhile直到型循环、for循环的形式、执行过程、使用注意问

重点

难点

引言

重复执行就是循环。重复工作是计算机特别擅长工作之一。

重复执行不是简单地重复,每次重复,操作的数据(状态、条件)都可能发生变化。

重复的动作是受控制的,C语言提供三种循环控制语句,构成了三种基本的循环结构。

讲授

一、while语句(当型循环)

1while语句的一般形式是;

2、执行过程是:(流程图、N-S图)

3、使用while注意的问题。

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

二、do-while语句(直到型循环)

1、do-while语句的一般形式

2、do-while执行过程(流程图)

3、do-while说明:

例5-4:利用do-wkile语句计算机1+1/2+1/4+..+l/50o

三、for语句(当型循环)

1、for语句的一般形式(给出while循环的对应结构)

2、for循环执行过程(流程图)

例5-6:写一个程序,计算半径为0.5,1.5,2.5,3.5,4.5,5.5mm时圆的半径。

例5-7:求正整数「的阶乘n!,其中n由用户输入。

3、for语句最容易理解、最常用的形式

4、for语句说明(6点)。C语言的for语句功能强大,使用灵活。

四、上机演示及实践操作

在讲课的同时切换软件界面调试代码

课后自我

总结分析

备注

《C语言程序设计》教案

第19-20课时

授课内容第5章(2)循环结构程序设计

教学目的掌握条件运算符、条件表达式

和要求掌握switch-case语句

重点

switch-case语句

难点

引言

a)复习关系运算、逻辑运算、if语句

b)引入简单的条件运算符及表达式、以及开关语句

讲授

一、条件运算符、条件表达式

在if语句中,在表达式为“真”和“假”时,都只执行一个赋值语句给同一个变量赋值

时,可以使用简单的条件运算符来处理。

例如:if(a〉b)max=a;elsemax=b;<=>max=a>b?a:b;

(1)条件表达式的一般形式:表达式1?表达式2:表达式3

(2)条件表达式说明(5点)

教例5-4.

二、switch-case语句(多分支选择语句/开关语句)

3^switch一般形式

4、switch语句说明。(1)-(7)

三、分支程序例子

例5.5写程序,判断某一年是否是闰年。

例5.6求一元二次方程ax2+bx+c=0的根。

例5.7运输公司对用户计算运费。

六、应用举例

例6T4:从键盘输入一个大于2的整数n,判断是不是素数。

例6-15:求100-200之间的所有素数。

例6-16:输出下三角99乘法表

七、上机演示及学生操作

在讲课的同时切换软件界面调试代码

课后自我

总结分析

备注

《C语言程序设计》教案

第21-22课时

授课内容第6章(1)一维组的应用

教学目的数组的基本概念;

和要求一维数组定义、初始化、引用;最大值、冒泡排序、选择排序算法。

重点重点:一维数组定义、初始化、引用;求最大值、冒泡排序、选择排序算法;矩阵操作

难点难点:冒泡排序、选择排序算法

引言

基本数据类型一构造类型的数据一数组

数组、数组元素、数组的下标、数组的维数

例如:inta[10];一维数组可以看作一个数列,向量。

例如:floatb[3][3];二维数组可以看作一个矩阵。

讲授

一、定义和引用一维数组

1、一维数组的定义类型说明数组名[整型常量表达式]

2、一维数组定义说明下标从0开始

3、数组元素的引用

教例6.1利用数组输出1-10

学(1)循环语句(2)数组下标越界

安4、一维数组的初始化的几种形式

排(1)定义时赋初值(2)部分赋初值

(3)数组元素全部置0(4)数组元素如全部赋值可不指定长度

5、给数组元素赋初值和给数组集合赋初值的异同

(1)给数组元素赋初值inttemp[l]=9;

⑵给数组集合赋初值inilemp[IO]=(1,2,3);

二、一维数组的应用例子

例6-2:用数组来处理斐波那契数列

例6-3:采用“冒泡法”对任意输入的10个整数按由小到大的顺序排序。

例6-4:采用“选择法”对任意输入的10个整数按由大到小的顺序排序。

三、动态内存分配法实现不定长一维数组

某些情境需要定义•个数组,但数组的长度不定,因为这个长度是根据某些其他条件确

定的,这时我们需要定义一个长度不定的数组。如读取不同声音的语音数据序列Q

课后自我

总结分析

备注

《C语言程序设计》教案

第23-24课时

授课内容第6章(2)二维数组和多维数组的应用

教学目的

二维数组定义、初始化、引用;多维数组

和要求

重点重点:二维数组定义、初始化、;双重for循环读取二维数组;二维数组1维和2维的分辨;

难点难点:双重Qr循环读取二维数组、二维数组1维和2维的分辨

二、二维数组(注意:类比一维数组)

1、二维数组的应用场景

2、二维数组的定义

3、二维数组元素的内存分布

二、二维数组元素的引用

例6-5:二维数组元素的引用的例子(自学)-构造、打印单位矩阵。

思考:下标是从1开始使用的,哪些元素在此例子中未使用?它们的值是多少?(随机值)

三、二维数组的初始化的几种形式

(1)分行给二维数组赋值

(2)将所有数组写在一个花括号内

(3)对部分元素赋值

教(4)对全部元素赋初值,二维数组的1维长度可以省略,2维长度不能省略

学四、双重for循环法读取二维数组

安比较抽象,图解较直观

排五、二维数组应用举例

例6-4:将二维数组的行和列互换,存到另一个数组里。

例6-5:找出矩阵所有元素中的最大值。

例6-附加分别计算矩阵的两条对角线(主、辅右角线)上的元素之和。

六、多维数组的应用

1、多维数组的定义

2、多维数组元素的引用

3、多维数组的初始化

七、不定长二维数组的实现

某些情境需要定义一个二维数组,但二维数组的长度不定,因为这个长度是根据某些其他条

件确定的,这时我们需要定义一个长度不定的一维数组。如读取不同尺寸图像点的像素值。

八、上机演示及学生操作

在讲课的同时切换软件界面调试代码

课后自我

总结分析

备注

《C语言程序设计》教案

第25-26课时

授课内容第6章(3)字符数组

教学目的

字符数组定义、初始化、引用;字符串与字符数组;字符串处理函数;字符数组应用

和要求

重点重点:字符串与字符数组;字符串处理函数

难点难点:字符串与字符数组;字符串处理函数

引言

复习数组概念,数组定义、初始化、元素引用方法。引入字符数组(元素为字符)。

讲授

一、字符数组

1、字符数组的定义

2、字符数组的初始化

3、字符数组的引用

4、二维字符数组的应用举例

二、字符和字符串结束标志

1、字符串与字符数组的区别2、字符串结束标记志

系统对字符串常量也自动加一个'\0'作为结束符。例如"CProgram”共有9个字符,但在内存

教中占10个字节,最后一个字节‘'0'是系统自动加上的。(通过sizeofO函数可验证)

学三、字符数组的输入和输出

安(1)逐个字符输入输出

排(2)将整个字符串输出

(3)利用字符串的结束符批量输出

四、字符串概述

1、字符串的输出

(1)格式符

(2)print语句的输出项参数用字符数组名,而非数组元素名

2、字符串的引用

五、由字符数组来构造字符串

根据定义,可由字符数组添加一个‘\()'符形成字符串。

六、二维字符数组

1、一维字符数组的定义

2、二维字符数组的初始化

3、二维字符数组的引用

课后自我

总结分析

备注

《C语言程序设计》教案

第27-28课时

授课内容第6章(4)字符串函数的应用

教学目的

字符数组定义、初始化、引用;字符串与字符数组;字符串处理函数:字符数组应用

和要求

重点重点:字符串与字符数组;字符串处理函数

难点难点:字符串与字符数组;字符串处理函数

讲授

一、使用字符串处理函数

1、puts函数

2^gets函数

3、strcat函数:字符串截取函数

4、strcopy和strncopy函数:字符串复制函数

5、slrcmp函数:字符串比较函数

6、strlen测试字符串长度函数

7、strlwr函数:转换为小写的函数

8、strupr函数:转换为大写的函数

二、字符数组应用举例

例6.8:由键盘任意输入一个字符串和一个字符,要求从该字符串中删除所指定的字符。

例6.9:由键盘输入三个字符串,找出其中的最大串。(字符串库函数的应用)

三、学会阅读C标准函数手册

附录FC库函数

1、引用预编译头文件include(包含头文件)

2、学会阅读函数库函数的函数类型和参数

四、字符数组函数的综合练习

1、打印杨辉三角形

2、有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。

3、魔方阵,要求输出1〜/

4、找出二维数组的鞍点,即该位置上的元素在该行上最在、在该列上最小,也可能没有鞍

点。

5、编一程序,将两个字符串连接起来,不要用strcat函数。

四、上机演示及学实践操作

在讲课的同时切换软件界面调试代码

课后自我

总结分析

备注

《C语言程序设计》教案

第29-30课时

授课内容第7章(1)函数及函数的调用

教学目的

掌握函数定义、调用、声明;函数参数传递方式;了解函数递归调用

和要求

重点重点:函数定义、调用、声明:函数参数传递方式

难点难点:函数参数传递方式一传址(尚未学习指针,用数组举例)

讲授

一、函数概述

1、C语言的函数。C语言的函数是子程序的总称,包括函数和过程。

C语言函数可以分为库函数、用户自定义函数

2、C语言的程序由函数组成,函数是C语言程序的基本单位,程序的总体功能通过函数的

调用来实现。其中,main起点(图)

3、函数的一些概念:主函数、其它函数:主调函数、被调函数;库函数、用户自定义函数:

无参函数、有参函数;无返回值函数、有返1可值函数

二、函数的一般形式一函数应当先定义,后调用。

函数定义的一般形式及说明(1)(2)

例7-1:输入三个整数,求三个整数中的最大值,打印。思考问题。

教三、函数的参数和返回值

学1、形式参数2、实际参数3、参数的传递。

安2、函数返回值。return语句及说明。

排四、函数的调用

1、函数调用的一般形式及说明(单独语句/表达式中、参数相容)

例7-3:以表达式的形式进行函数的调用。(自学)

2、函数调用时数据的传递-参数传递、函数的返回值、全局变量

例7-4:求学生平均成绩。P110.(注意参数传递的是数组的地址)

3、函数的声明

例7-5:函数声明例子。P112.

五、函数的嵌套调用和递归调用

函数允许嵌套调用和递归调用。递归调用是嵌套调用的特例。

(1)函数的嵌套调用

例7-6:计算两整数的最小公倍数。P113.

(2)函数的递归调用

例7-7:用递归法求n!(P.114)

课后自我

总结分析

备注

《C语言程序设计》教案

第31-32课时

授课内容第7章(2)函数变量的作用域和生命周期

教学目的掌握变量作用域、生命期

和要求掌握插入排序

重点重点:变量作用域、生命期;插入排序

难点难点:变量作用域、生命期;插入排序

讲授

六、变量的作用域(有效范围、可见性)

变量的作用域:变量的有效范围或者变量的可见性。变量定义的位置决定了变量的作用域。

变量从作用域(变量的有效范围,可见性)的角度可以分为:局部变量,全局变量。

1、局部变量(函数体内变量、形参变量、复:合语句内变量)一互不干预、动态分配

例7-8:各函数局部变量同名的应用示例。P116-117.

2、全局变量(所有函数之外一文件作用域、程序作用域)

全局变量可以和局部变量同名一坐井观天

例7-9:全局变量、局部变量同名的应用示例。P:18。

例7T0:全局变量、局部变量的应用示例。P118。

教七、变量的存储类别(生存期、生命期)

学变显从空间上分为局部变量、全局变量。

安从变量存在的时间的长短(即变量生存期)来划分,变量还可以分为:动态存储变量、静态

排存储变量。变量的存储方式决定了变量的生存期。

C语言变量的存储方式可以分为:动态存储方式、静态存储方式。

全局变量全部是静态的:局部变量可以是静态,乜可以是动态(auto,register)。

例7-11:寄存器局部变量的应用.P12的(完成n+(n-l)+(n-2)+...+l)

例7-12:静态局部变量的应用示例。P121.

八、内部函数和外部函数

默认是外部函数

九、函数应用举例

例7-14:字符串逆序。P124.

例7-15:求矩阵最大元素。P124-125.

例7-16:利用插入法将10个字符从小到大进行排序。P125726.

课后自我

总结分析

备注

《C语言程序设计》教案

第33-34课时

授课内容第8章(1)指针概述及指针作为函数参数

教学目的指针的基本概念,变量访问方式;指针变量定义、赋值、引用。

和要求指针作为函数参数。

重点重点:指针的基本概念:指针变量定义、赋值、引用;指针作为函数参数

难点难点:指针的基本概念

讲授一指针基础

一、指针变量的定义(变量先定义后使用)

1、定义格式:

2、说明:(1)指针变量基类型-指针变量指向数据的类型

(2)指针变量存放地址值,本身占用空间2字节

二、指针变量的赋值(使用未赋值指针等同于向一个随机的内存中写入数据)

1>将地址直接赋值给指针变量。例如,float*f=malloc(4);

2、将变量地址赋值给指针变量。例如:floata,*p;p=&a;

三、指针变量的引用

1、&运算符(取地址运算符)2、*运算符(指针运算符、间接访问运算符)

例9-1,P137.指针变量定义、赋值、引用例子。

四、指针变量作为函数的参数

变量可以作为函数参数,指针变量同样可以作为函数参数。使用指针作为函数参数,可

以在函数中对指针所指向变量的值进行处理(修改)。

指针作为函数参数,本质上同样是单向传值,但是由于传递的是地址值,所以可以通过

地址值间接修改形参、实参共同指向的变量。

例9-2:输入a,b两个数交换后输出。

在swap函数中使用两个指针作为函数参数,对两个指针所指向变量值进行交换,

结论:

1、要在被调用函数中,修改主调函数的变量值应当:

(1)将主调函数变量的地址传递给被调用函数,就是说函数应当传递的是变量的地址。

(2)被调用函数的形参应当使用指针变量接受主调函数的地址值。

(3)在被调用函数中通过形参指针变量间接访问,修改实参、形参地址所共同指向的变量。

本例的操作是交换两个指针变量所指向的变量。

2、函数使用指针作为参数,可以增加主调函数与被调函数之间数据沟通的渠道,

课后自我

总结分析

备注

《C语言程序设计》教案

第35-36课时

授课内容第8章(2)通过指针引用数组

教学目的通过指针引用数组元素:数组的指针变量”作为函数参数:通过指针指向多维数组

和要求

重点重点:数组的指针变量”作为函数参数;通过指针指向多维数组

难点难点:数组的指针变量”作为函数参数:通过指针指向多维数组

讲授

一、数组元素的指针

每个数组元素都在内存中占有存储单元,它们都有相应的地址,所谓数组元素的指针就是数

组元素的地址。

二、在引用指针元素时指针的运算

1、在一定条件下允许对指针进行加和减的运算。

2、在指针指向数组元素时,可以对指针进行加和自加,减和自减运算。

三、通过指针引用数组元素

1、下标法

2、指针法

教例8.7通过指针变量输出整型数组a的10个元素。

学四、用数组名和“数组的指针变量”作为函数参数

安例8.8将数组a中n个整数按相反顺序存放。

排例8.9将例8.8写成指针变量作实参

例8.10用指针法对10个整数按从大到小顺序排序

五、通过指针指向多维数组

1、多维数组的地址

2、指向多维数组元素的指针

(1)指向数组元素的指针变量

例8.12有一个3X4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值。

(2)指向由m个元素组成的一维数组的指针变量

3、用指向数组的指针作函数参数

例8.14有一个班,3个学生,各学4门课程,计算总平均分数以及第n个学生的成绩。

例8.15在例8.14的基础上,查找有1门以上课程不及格的学生,输出他们全部课程的成

绩。

课后自我

总结分析

备注

《C语言程序设计》教案

第37-38课时

授课内容第8章(3)通过指针引用字符串

教学目的

掌握字符指针作为函数参数;理解使用字符指针变量和字符数组的异同

和要求

重点重点:字符指针作为函数参数;理解使用字符指针变量和字符数组的异同

难点难点:字符指针作为函数参数;理解使用字符指针变量和字符数组的异同

讲授

一、字符串的引用方式

1、可通过字符数组名和下标引用字符串中的一个字符。

2、也可以通过数组名和格式声明%5输出该字符串

例8.16定义一个字符数组,在其中存放字符串“IloveChina!”,输出该字符串和第8个

字符。

C语言中只有字符变量,没有字符串变量。

例8.18将字符串a复制为字符串b,然后输出字符串bo

例8.19例8.18改用指针变量来处理

二、字符指针作为函数参数

例8.20用函数调用实现字符串的复制

(1)用字符数组名作为函数的参数

(2)用字符指针变量作为函数的参数

其实编译系统把字符数组名按指针变量处理的,只是表示形式不同。

三、使用字符指针变量和字符数组的比较

1、字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址。

2、赋值方式。可以对字符指针变量赋值,但不能对数组名赋值

3、初始化含义

4、存储单元内容

5、指针变量的值是可以改变的,而数组名代表一个固定的值

6、字符数组中各元素的值是可以改变的。

7、引用数组元素

四、随堂练习

写一函数,实现两个字符串的比较。intstrcmp(char*pl,char*p2)

五、上机演示及学实践操作

在讲课的同时切换到编译器界面调试代码

课后自我

总结分析

备注

《C语言程序设计》教案

第39-40课时

授课内容第8章(4)动态内存管理与指向它的指针变量

教学目的

掌握用函数指针变量调用函数;掌握用指向函数的指针作函数参数

和要求

重点重点:用函数指针变量调用函数;用指向函数的指针作函数参数

难点难点:用函数指针变量调用函数;用指向函数的指针作函数参数

讲授

一、指向函数的指针

编译系统为函数代码分配一段存储空间,这段存储空间的起始地址,称为这个函数的指针

二、用函数指针变量调用函数

例8.22求两个整数的最大值

讲解通过函数名调用函数与通过指针变量访问它所指向的函数的异同。

三、怎样定义和使用指向函数的指针变量

类型名(材旨针变量名)(函数参数表列)

例8.23讲解

四、用指向函数的指针作函数参数

教指向函数指针变量的一个重要用途是把函数的地址作为参数传递到其它函数。

学例8.24讲解

安五、返回指针值的函数

排一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针型的数据,即地址。

定义返回指针值函数的一般形式为:

类型名*函数名(参数表列)

例8.25讲解

六、指针数组和多重指针

1、什么是指针数组

2、指向指针数据的指针

例8.28讲解

3、指针数组作主函数的形参

七、上机演示及学实践操作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论