《C++基础》教案.docx
C+基础教案电子工程学院C+基础授课教案讲序第1讲授课学时2学时教材章节:1.1,1.2J.4-1.6课程内容绪论授课方式:多媒体教学目的和要求:1. 了解程序设计语言概况和分类;2. 了解C+语言发展历史;3. 理解C+语言特点;4. 了解C+语言程序构成及书写形式;5. 掌握集成开发环境下+程序的编写、编译、链接和执行的过程。授课主要内容:一1. 程序设计语言概况和分类;2. 从C到C+,C+语言发展历史;3. C+语言特点;4. C+语言构成及书写形式;5. C+语言程序的编写和实践;6. C+集成开发环境和上机实践。重点、难点及学生易犯错误的地方:一、重点内容1. C+程序的构成和书写形式;2. C+程序的编辑、编译、链接和运行的过程。二、难点内容1.程序编辑、编译、连接和运行的含义。三、学生易犯的错误1 .用VC建立工程和文件时,常没有正确选择项目或文件类型;2 .程序中出现两个及以上main函数。教学策略和方法:1.感性认识计算1至U100的累加和,现场编写、调试、演示运行,让未曾有编程经验的学生感性认识程序的魅力;并通过用户输入参数n,实现1到任意数n的累加和,让学生理解程序的通用性。2 .程序演示老师演示用ViSUalSIUdi。开发C+程序的过程;然后找一位同学操作演示一遍,老师在旁边指导,尤其对可能出现的共性错误予以提醒。3 .适度提问养成学生勤于思考的学习习惯。4 .比较与比喻.提高学生的学习兴趣。5 .逐步深入讲解通过几个不同类型难度有所递进的例子,让学生体会C+语法特点。教学过程:1 .提问:知道目前流行的编程语言吗?简述主流的编程语言。2 .设问求1-10()累加和如何完成?演示程序实现。并通过改写程序,通过输入n实现1到任意数n的累加和,让学生理解程序的通用性。3 .依次简要讲解C+的发展历史、地位、特点,引出面向对象和面向过程编程,让学生有所了解。4 .讲解几个小例子,难度有所递增,让学生了解C+语言的特点、构成和书写形式,体会语法。5 .演示讲解课程实验开发平台VC6.01)结合下图,讲解程序编写、编译、链接、执行的过程、各阶段作用和生成的文件;2)用VC6.0演示编写、编译、链接、执行的过程和在相应目录下产生的东西;以及定位错误、程序的方法;3)让某位同学给全班演示,实际操作,老师在旁边指导,说明容易犯的错误。小结:1. 程序语言有机器语言、汇编语言、高级语言之分。C+是高级语言。2. 有面向过程和面向对象两种程序设计方法;C+是面向对象语言,但既可以面向过程编程,也可以实现面向对象编程。3. C+程序实现经过编写、编译、链接、执行的过程;作业:1)输出“Ilovec+”2)输入ab求a-b的值3)模仿例1-12,求两数中的最小数C+基础授课教案讲序第2讲授课学时2学时教材章节:2.1-2.3课程内容字符集与词汇、数据类型、常量与变量授课方式:多媒体教学目的和要求:1 .熟悉C+中的标识符命名规则、关键字、分隔符和注释符;2 .掌握整型、字符型、枚举型、实型等基本数据类型;3 .熟练掌握上述类型的常量表示方式及使用;4 .熟练掌握基本数据类型变量的定义和使用;5 .掌握符号常量和常变量的定义,了解它们的异同。授课主要内容:1.字符集和词汇1)关键字2)标识符3)分隔符4)注释符2. C+的数据类型1)数据类型分类,各种基本数据类型及存储字节数2)类型标识符3)无符号整型和有符号整型3,常量与变量1)不同类型常量的几种表示形式(1)整形常量(10进制形式,8进制形式,16进制形式)(2)实型常量(十进制小数形式,科学计数法即指数形式)2)字面常量和符号常量4.变量1)变量的三要素(变量名、变量地址、变量值)2)常变量3)引用重点、难点及学生易犯错误的地方:一、重点内容1.C+的基本数据类型及其使用方法;2 .标识符的命名规则3 .变量的定义和使用二、难点内容1 .符合常量、常变量2 .转义字符的特点三、学生易犯错误的地方1 .特殊字符、转义字符的使用2 .注释的使用教学策略和方法:1 .本将语法点较多,所以在教学中结合多个小程序,在练习中掌握各个知识点2 .通过实例操作,体会语法点,由教师和学生共同总结教学过程:6 .讲解C+语言字符集与词汇,重点是标识符命名规则。黑板上写若干个词汇,提问学生那些事正确的标识符、那些不是?为什么?7 .列表和图形展示C+各种数据类型,说明它们的区别;基本整型(signedint)短整型(ShomintD,整型长整型(longmt)J无符号整型(unsgnedmt)一单精度实型(float)(基本类型J实组-双精度实型(double)L长双精度实型QongdoUbIe)字符型(ChM、布尔型(bool)数据类型C数担类型窗¾峰型(SttUCt)构造类型<类类组(ChSS)共用体类型(UmOn)、收本类型(&皿)空类型(Void)V指针类型翘字节敌伯范围整型signed统4-21474836482147483647短整型short词2-3276832767长整型IOngim4-21474836482147483647无符号整型unsigned减40-4294967295无符号短整型unsignedshort265535无符号长整型三sgnedlong就40-4294967295字符型char1S255里精度理float43.4X10-383.4×IO38双麒三三double81.7×1O308-1.7×1O308长双飕理8 .依次通过若干PI9 .通过例子讲解变longdouble式小例子讲解常占量的特点和3要素a12003t(38分类和;E量名、变直变看变行1.7×1O-308-1.7×1O3所示方法;值、地址)打直1地址小结:4. 定义变量、符号常量、函数名、类名等都要遵循标识符命名规则,即标识符由数字、字母、下划线所组成并且数字不能作为开头;5. 常量分为字面常量和符号常量,字面常量又可以按数据类型分类(整型、实型、布尔型、字符型、字符串等);6. 变量名、地址、值是变量3要素;7. 定义变量前加COnSt关键词,变量成为常变量。作业:P49一、1-13C+基础授课教案讲序第3讲授课学时2学时教材章节:2.4,2.5课程内容运算符与表达式授课方式:多媒体教学目的和要求:1 .掌握算数运算符的使用和算数表达式的求值;2 .掌握关系运算符的使用和关系表达式的求值;3 .掌握逻辑运算符的使用和逻辑表达式的求值;4 .熟悉运算符的优先级和结合性,掌握表达式的构造方法;5 .熟悉条件运算符、逗号运算符及其表达式;6. r解数据类型转化。授课主要内容:1.C+的运算符分类,运算符优先级和结合性;2 .算术运算符与算术表达式;3 .赋值运算符与赋值表达式;4 .条件运算符、逗号运算符及其表达式;5 关系和逻辑运算符及表达式;6 .数据类型转化一一(隐式转换,强制类型转换、赋值转换)重点、难点及学生易犯错误的地方:一、重点内容1.C+的几种基本运算符(算数、关系、逻辑、赋值)。7 .表达式的构建。二、难点内容1 .自增自减运算符2 .复杂表达式的构造3 .亚杂混合运算的优先级和结合性三、学生易犯错误的地方1 .除运算符与求余运算符的混淆。2 .求余运算符要求参与运算的是整数。3 .自增自减运算符的分析和使用。教学策略和方法,1 .本将语法点较多,所以在教学中结合多个小程序,在练习中掌握各个知识点。2 .通过实例操作,体会语法点,由教师和学生共同总结教学过程:10 .讲解运算符的分类(单目运算符、双目运算符、三目运算符);11 .结合实例讲解运算符的优先级和结合性,与数学式子对比:12 .结合实例讲解算数运算符和表达式,强调和数学符号的不同(*是乘,/是除,是求余);思考:=i+j;运算符的结合性。13 .结合实例讲解关系运算符和关系表达式,强调和数学符号的不同(大于等于=,小于等于二,相等二,不等于!二);14 .结合实例讲解逻辑运算符和逻辑表达式;15 .结合实例讲解赋值运算符和赋值表达式,注意复合赋值运算符的使用;16 .结合实例讲解其他运算符和表达式;17 .3种数据类型转换一一隐式转换(结合下图),强制类型转换、赋值转换。doublefloat高Ilongtunsigned低iniVchar,short小结:8. C+运算符按操作数多少分为单目、双目、三目运算符,?:是唯一的三目运算符;9. 优先级和结合性决定运算次序;10. 逻辑非!优先级高于关系运算符(=,>,>=,=,!=);关系运算优先级高于逻辑运算优先级(&&,II);11. +(一)符号放变量前是先自增(自减)后使用,若放变量后面是先使用后自增(自减);12. 逻辑运算中,非。表示真,0表示假(0);13. 不同类型的数参与同一运算时,系统将会自动将它们转换为相同类型。作业:p51二:8,9C+基础授课教案讲序第4讲授课学时2学时教材章节:课程内容算法、面向过程、C+程序和语句授课方式:多媒体教学目的和要求:1 .理解面向过程程序开发2 .理解算法的概念和特点3 .熟悉算法的流程图表示4 .熟悉C+语句的分类授课主要内容:1 .面向过程程序设计(结构化编程)的总体思想、特征、优缺点2 .算法的概念14. 法的特点15. 统流程图和N-S流程图16. C+语句的分类和使用;重点、难点及学生易犯错误的地方:一、重点内容1 .算法及其特点的理解2 .流程图3 .C+语句及其分类二、难点内容1 .绘制流程图2 .面向过程的思想三、学生易犯错误的地方1 .用错流程图的图符2 .混淆空语句和语句结束“;”,尤其在循环和选择结构中教学策略和方法:1 .比喻教学算法用菜谱比喻,原料是数据、步骤是算法;通过飞机的起飞和飞行到降落的多个过程说明面向过程的特点。2 .趣味教学通过芝诺悖论讲解算法的有穷性和无穷性问题。3 .实例教学通过黑板演示阶乘等问题流程图画法。4 .比较法教学传统流程图与NS流程图对比。教学过程:18 .通过求三角形求面积,引入算法概念。总体分为三部分:输入、计算,输出;19 .算法用做菜菜谱比喻,原料是数据、步骤是算法;20 .进一步讲述算法的作用和特点,通过芝诺悖论讲解算法的有穷性和无穷性;芝诺:“一个人从A点走到B点,要先走完路程的1/2,再走完剩下总路程的1/2,再走完剩下的1/2”如此循环下去,永远不能到终点。21 .进一步讲解算法的表示,举例说明自然语言描述的缺点(二义性),引入传统流程图;黑板上和学生共同绘制求n!流程图。22 .针对传统流程图的缺点,引入N-S流程图,黑板上和学生共同绘制求n!N-S流程图,并与传统流程图进行比较说明;23 .明确算法步骤通过语言实现就成为程序,接着说明语言的分类。小结:1 .主流的程序设计方法分为面向过程的程序设计和面向对象的程序设计;2 .结构化程序设计又称为面向过程的程序设计,它的总体思想是采用模块化结构,自顶而下,逐步求精;3 .程序=数据结构+算法;4 .算法是求解问题的过程和步骤,一般用流程图来描述;5 .算法的3种基本结构是顺序结构、选择结构、循环结构;6 .语句用“;”结尾,是程序中最小的可执行单元;7 .语句分为表达式语句、控制语句、符合语句、空语句。作业:p26五、2C+基础授课教案讲序第5讲授课学时2学时教材章节:课程内容顺序结构、输入与输出授课方式:多媒体教学目的和要求:1 .理解输入输出流;2 .掌握使用流对象Cin和COUt进行标准输入输出;3 .掌握使用getchar()和PUtChar()输入输出字符;4 .熟悉输入输出流的常用格式控制;5 .能够根据需要进行顺序结构程序编写;授课主要内容:1.输入输出流;2 .流对象cin和CoUt及提取符“>>”和插入符;3 .getchar()和PUtChar()函数;4 .输入输出格式控制;1)不同进制输出2)设置值的输出宽度3)设置输出数据对齐方式4)浮点数的精度和小数位数输出设置5 .顺序结构程序编写方法及实例(输入、处理、输出);重点、难点及学生易犯错误的地方:一、重点内容1.流对象Cin和CoUt的使用,''和的使用2 .getchar()和putchar()函数的使用3 .设置输出宽度、精度等常用格式控制二、难点内容1.输出浮点数格式控制三、学生易犯错误的地方1. >>,和的方向写反2. 输入多项值或输出多项值不加入多个>>'和,<<"如写成cin>>a,b,c或COU>>a,b,c3. getchar()里面写上参数,如getchar(c)教学策略和方法:1 .比较与比喻教学方式,提高学生的学习兴趣2 .适度提问,养成学生勤于思考的学习习惯3 .通过实例操作,体会语法点,由教师和学生共同总结教学过程:24 .从计算三角形面积开始,说明程序从输入到计算再到输出的整体顺序性;25 .引入输入输出流概念及流对象Cin和CoUt;26 .设问可能需要的设置:输出若干个数如何对齐;如何设置输出小数位数;引入格式控制及头文件iomanip;27 .通过例子讲解各种格式控制。小结:14. 程序从总体上而言,都是顺序结构;15. C+输入输出通过流(Slream)来实现,Cin和CoUI是流对象;16. 进行输入输出格式控制要引入头文件iomanipo作业:p64三、1,2,3C+基础授课教案讲序第6讲授课学时2学时教材章节:课程内容选择结构、if语句三种形式I授课方式:多媒体教学目的和要求:1 .熟悉选择结构的形式;2 .掌握if语句:3 .掌握if-else语句;4 .掌握if-elseif-else语句;5 .能够在程序中实现多分支控制。授课主要内容:1 .选择结构的形式;2 .if语句的三种形式(if,if-else,if-elseif-else);3 .多分支程序编写;重点、难点及学生易犯错误的地方:一、重点内容1 .if语句的三种形式2 .多分支选择结构二、难点内容1 .条件表达式的判断2 .复杂多分支程序三、学生易犯错误的地方1. if或else内嵌语句超过1条忘了加2. if后的条件不用()括起来3. 条件表达式的()后加4. if、else匹配出错5. elseif写成elseif教学策略和方法:1 .实例引导通过输出2数的大者问题引入选择结构;2,逐步推进引入和改造实例,不断扩展和增加难度,引导学生加深理解和记忆;3.比较法、讨论法,正确和错误的例子对比,促使学生讨论,加深学生印象。教学过程:28 .任意输入两个数,求最大值并输出?(依此为例引入选择结构和基本的1。1£飞心形式),然后讲解更多的例子如输出偶数和奇数29 .根据前面的例子,说明else和if的配对原则,并故意写出一个错误配对实例让学生分析讨论;30 .通过分段函数,引入多分支if-elseif-else形式:31 .依次讲解价格计算、成绩输出的实例。小结:(以问题和讨论形式给出)32 .为什么需要选择结构33 .如何表示条件表达式;34 .如何判断条件表达式成立;35 .3中形式if语句的执行过程是怎样的?作业:p88三、1,2,3C+基础授课教案讲序第7讲授课学时2学时教材章节:4.2,5.1-53课程内容SWitCh和多分支、循环结构(一)授课方式:多媒体教学目的和要求:1 .理解分支语句嵌套;2 .掌握SWitCh语句的使用及多分支程序编写;3 .熟练掌握WhiIe,do.whiIe循环语句的结构和执行过程。授课主要内容:1 .分支语句嵌套;2 .SWitCh结构;3 .多分支程序编写;4 .while,do.while循环。重点、难点及学生易犯错误的地方:一、重点内容1.switch结构及执行流程2.while,do.while循环二、难点内容1 .分支语句的嵌套2 .循环的执行流程三、学生易犯错的地方1.switch的条件表达式类型及case常量写成实型3 .循环语句的执行次数分析不准确4 .写循环语句时不知道怎样选取循环变量5 .在while条件表达式括号外写上“;”教学策略和方法:1 .比较法比较if-elseif-else实现多分支程序和switch的不同。2 .问题引导如何求l100累加和?引入循环,讲解循环程序的算法和结构,再更改程序分别用while,do-while实现,介绍2种循环的异同。3 .实例演示统计从键盘输入一行的字符个数编程和学生共同完成。4 .课堂讨论while,do-while两种循环的异同和学生讨论并总结教学过程:32 .复习选择结构的三种if语句;33 .由if-elseif-else多分支引入switch多分支程序编写;34 .设问如何求1-100累加和?35 .以LlOO累加和为例讲解循环结构1)先用While实现1100累加程序(演示),然后讲更多While循环实例;2)更改为用do-while实现1-100累加程序(演示,提出循环的3要素:循环变量的初值,循环条件和循环变量的增量),然后讲更多do-while循环实例。作业:p88,三、5;pll9,三、1,2C+基础授课教案讲序第8讲授课学时2学时教材章节:5.4-5.6课程内容循环结构(二)授课方式:多媒体教学目的和要求:1 .掌握for循环的结构和执行流程;2 .理解循环嵌套;3 .掌握通过break,continue控制程序流程:4 .掌握循环结构程序设计。授课主要内容:1 .for循环的结构和执行流程;2 .循环嵌套;3 .break,continue语句;4 .各类型循环问题实例讲解。重点、难点及学生易犯错误的地方:一、重点内容1. for循环的结构和执行流程2. break,continue语句二、难点内容1 .循环嵌套2 .复杂循环的执行流程三、学生易犯错的地方1 .for的3个表达式和循环体的执行次序搞错2 .写循环时不考虑循环结束,导致死循环3 .写循环语句时不知道怎样选取循环变量4 .省略for中的某部分连都丢掉教学策略和方法:1 .问题引导求l100累加和?将前讲用WhiIe,do-while实现的程序,改造为for循环实现,导入for循环。2 .实例演示打印100-200中能被3整除的数,和学生共同完成;演示循环嵌套的变量控制、break和continue的执行效果。4 .逐步推进讲解难度不断递增的实例,让学生加深理解。5 .课堂讨论for和WhiIe,do-while循环的异同与学生讨论并总结。教学过程:36 .复习While,do-while循环。37 .续前讲,由求l100累加和引入for循环编写。38 .依次讲解水仙花数、FibOnaCCi数列、1!+2!+n!例子,由for循环写出。39 .用110累加和为例,在i=4时执行Continue;i=6时执行break,输出执行效果,讲解CoIItilIlIe和break的作用。然后讲解更多的例子巩固break和COntinue。40 .讲解循环结构嵌套1)先用九九乘法表的输出讲解嵌套2)将1!+2!+n!更改为用嵌套方式实现3)总结循环嵌套的规律和分析方法小结:21 .三种循环都可以用来处理同一类问题,一般情况下可以互相代替。如果已给出了循环次数,首选foro22 .写循环程序必须明确循环3要素:循环变量的初值,循环条件和循甲变量的增量。23 .必须明确几种循环的执行流程。24 .break是跳出循环,而COntinUe是终止本次循环,进行下次循环。作业:pl19三、6,13,15C+基础授课教案讲序第9讲授课学时2学时教材章节:6.1课程内容一维数组授课方式:多媒体教学目的和要求:1 .掌握数组的概念,理解数组在内存中的存储;2 .掌握一维数组的定义和初始化;3 .掌握一-维数组的使用;4 .熟悉一维数组与循环结构的配合编程。授课主要内容:1. 数组的概念和特点2. 一维数组的定义格式3. 一维数组的初始化方式4 .一维数组的元素引用5 .利用一维数组处理批量数据6 .基于数组的最值求解、数值排序重点、难点及学生易犯错误的地方:一、重点内容1 .数组的概念2 .一维数组的定义和使用二、难点内容1 .数组元素排序法(选择法)2 .数组中插入元素、删除元素并移动三、学生易犯错的地方1 .数组引用下标越界2 .用变量定义数组长度3 .企图通过数组名整体输入或输出数组教学策略和方法:1 .问题引导从几个变量不能解决的批量数据处理问题入手,引入数组的概念。2 .递进驱动讲解难度不断递增的实例,让学生加深理解。3 .实例演示求菲波那契数列的前20个数,和学生共同完成;演示排序法等实例。4 .课堂讨论与定义若干普通变量处理数据比较,数组有什么优点。教学过程:41 .复习(提问)前讲循环三要素、控制流程。42 .求菲波那契数列的前20个数,并保存:D通过类似的批量数据处理,引入数组概念、定义和使用。2)编程演示数组实现程序,同时复习for循环以及循环与数组的配合。3)通过该例说明数组的越界问题,即访问1120以后。43 .讲解求若干数最小值,配合PPT动画演示。44 .讲解选择排序法:1)求若干数中最小值,和第一个数交换位置;第一个数排好。2)在剩下的数里进行同样的过程,即1)。3)图形列表展示选择法原理。小结:25. 数组用来处理批量数据,如数列的问题。26. 数组中所有元素类型一样。27. 数组下标从O开始。28. 数组不能整体引用。29. 定义数组时不能用变量定义大小。30. 数组元素具有和单个变量一样的属性和使用场合。作业:p142三、1,2C+基础授课教案讲序第10讲授课学时2学时教材章节:6.2课程内容二维数组授课方式:多媒体教学目的和要求,1 .掌握二维数组的概念,理解二维数组在内存中的存储;2 .掌握二维数组的定义和初始化;3 .掌握二维数组的使用;4 .熟悉二维数组与循环结构的配合编程。授课主要内容:1 .二数组的概念和特点2 .二维数组的定义格式3 .二维数组的初始化方式4 .二维数组的元素引用5 .利用二维数组处理批量数据6 .基于二维数组的应用重点、难点及学生易犯错误的地方:一、重点内容1 .二维数组的定义2 .二维数组的使用二、难点内容1 .二维数组的行列变化2 .二维数组和双重循环的配合三、学生易犯错的地方1.二维数组元素引用下标越界3 .二维数组配合循环时行列的确定教学策略和方法:1 .问题引导从矩阵处理出发,引入二维数组的概念。2 .比较法通过与一维数组的定义、输入输出、初始化的操作的对比,引入二维数组的定义、输入输出、初始化。3 .递进驱动讲解难度不断递增的实例,让学生加深理解。4 .实例演示输出九九乘法表,和学生共同完成。教学过程:45 .复习一维数组46 .引入:输入一个3*3矩阵,按3行3列格式输出,将此问题转化为二维数组处理。1)定义一个二维数组a33,从键盘输入再输出到屏幕,以此引入二维数组的定义,行下标、列下标,数组方式引用,输入输出方式,存储等2) 一维数组(一个长度)和二维数组(二个长度,行,列)比较。47 .演示九九乘法表的输出,和学生共同完成。48 .讲解杨辉三角的输出。小结:31. 二维数组在内存中是按行存放。32. 数组每一维下标从O开始。33. 数值型数组不能整体引用。34. 可以把二维数组看作是一个特殊的一维数组,其元素是一个一维数组(一行)。35. 二维数组元素具有和单个变量一样的属性和使用场合作业:p142三、4补充:求n*n矩阵对角线之和C+基础授课教案讲序第11讲授课学时2学时教材章节:6.3,8.1课程内容字符数组、函数定义和调用授课方式:多媒体教学目的和要求:1 .掌握字符数组的定义和初始化;2 .掌握字符数组和字符串的输入输出;3 .熟悉字符串处理函数;4 .了解字符串类(String)及其操作;5 .掌握函数的定义和使用。授课主要内容:1 .字符数组的定义和初始化2 .字符数组和字符串的几种输入输出方式(Cir1,cout,gets(),puts(),cin.getline()等)3,字符串处理函数(复制、比较,连接等)4 .基于string定义字符串5 .String字符串操作6 .函数的定义格式7 .函数的调用方式重点、难点及学生易犯错误的地方:一、重点内容1 .字符数组的定义2 .字符串输入输出及操作3 .函数定义及使用二、难点内容1 .字符数组字符串的复制、连接等操作2 .字符串的多种输入、输出方式三、学生易犯错的地方1 .混淆字符和字符串2 .将字符串赋给字符类型变量教学策略和方法:3 .比较法通过与维数组的定义、输入输出、初始化操作的对比,引入字符数组的定义、输入输出、初始化。4 .递进驱动讲解难度不断递增的实例,让学生加深理解。5 .实例演示,通过程序改造,将程序中的功能模块独立出来改造为函数。6 .课堂讨论字符串结束标记有什么用?为什么要使用函数?教学过程:49 .复习一维、二维数组。50 .定义整型一维数组a10,输入输出;将a数组改造成字符数组,输入输出,引入字符数组的定义和元素的逐个输入输出方式51 .通过数值型数组初始化引入字符数组初始化。doublea5=l,2,3A5);charc6=,Happy,;Chare6="Happyw;或charc=nHappyw52 .与数值型数组比,字符数组可以整体输入输出:inta10;cin>>a;cout>>a;错,数值型数组不能整体输入输出。chara10;cin»a;cout>>a;一次性输入输出一个字符串,但Cin输入的字符串不能包含空格。53 .针对Cin输入的字符串不能包含空格的缺点介绍儿个输入输出方法gets。,puts。,cin.getline()等。54 .介绍几个字符串处理函数:StrIen(),Strcpy(),Strcmp(),strcat()o55 .通过下面的例子,说明函数的定义和使用doublecylinder(double/,doubleh)doubleresult;resit=3.141592(*r*r*h;returnresult;,Iintmain(void)doubleheight,radiu>,volumecout<<"Ertrradiusandheigtt:"cin>>radus>>height;volume=cylinder(radius,height);cout<<"Volume="<<volume;return0;小结:36. 字符数组可以存储和处理字符串。37. 字符数组可以整体性输入输出38. 输入字符串可以用cin,gets(),puts(),cin.getline()等多种形式。39. 函数必须先定义后使用。40. 一个C+语言程序由一个或多个函数组成作业:p142,二、9,10三、3C+基础授课教案讲序第12讲授课学时2学时教材章节:8.1-8.3,8.7,8.11课程内容函数的调用和参数传递、变量作用域及存储类别授课方式:多媒体教学目的和要求:1 .掌握有参函数、无参函数的定义、声明及调用;2 .掌握有返回值、无返回值的函数调用:3 .熟悉函数参数的传递过程;4 .理解函数的值传递、地址传递和引用传递;5 .熟悉变量的仓储类别;6 .熟悉变量的作用范围;7 .掌握程序静态局部变量的分析。授课主要内容:1 .函数的基本概念;2 .有参函数、无参函数的定义形式和声明;3 .函数的参数及返回值;4 .函数的几种调用形式(函数表达式、函数语句和函数实参),有参函数、无参函数的调用;5 .参数传递的几种方式(值传递、地址传递、引用传递);6 .变量的作用域(全局变量,局部变量);7 .变量的存储类别(auto变量、用StatiC声明变量、register变量、extern外部变量)。重点、难点及学生易犯错误的地方:一、重点内容1.函数的定义、声明、调用及参数传递方法。2,变量的作用域及其生存期。二、难点内容1 .函数的递归调用。2 .参数传递机制。三、学生易犯错的地方1.静态局部变量的使用。2 .函数的定义和原型声明的区别。3 .对无返回值函数的调用错误使用复制语句。4 .定义函数时参数括号后错误地加分号。5 .实参和形参类型不匹配。教学策略和方法:1 .实例演示演示求1!+2!+10!,和学生共同完成:2 .递进驱动通过改造现有程序,在现有的基础上进行任务推动;讲解难度不断递增的实例,让学生不断加深理解;4 .讨论式教学采用断点调试程序和思维实验,分析和讨论程序的作用范围和存储类别。教学过程:56 .通过杨辉三角的输出复习数组和循环配合。57 .编程序输入两个数,求两个数的大数(不用函数)。3 .将以上的比较部分封装为函数(说明函数的定义、调用、参数传递)。4 .将上例中在函数里面的形参值加2,分别输出实参和形参,发现实参未变(值传递,形参改变不影响实参,在黑板上画图表明形参和实参变化情况及调用流程人5 .演示讲解更多的例子,加深学生认识和理解。6和学生讨论分析以下程序的全局和局部变量inta,b;定义全局变量voidfl(intp)定义函数fl(intq,r;定义局部变量)floatx,y;定义全局变量intfz()函数fz(inti,j;intmain()/主函数(intm,n;17.采用断点调试程序和思维实验,进一步分析和讨论程序的作用范围和存储类别小结:41 .函数分为有参函数和无参函数。42 .调用的函数必须存在(系统函数或自定义函数):函数调用才能执行。43 .函数的声明和函数定义的区别(前者告诉编译系统关于函数的信息:函数名、参数个数和类型;后者确立函数首部和函数功能体)。44 .有返回值的函数调用能够作为参数或参与表达式运算。45 .值传递方式实参影响形参,但形参不能影响实参。46 .局部变量和全局变量的区别(函数之内定义的变量时局部变量,函数之外定义的变量时全局变量)47 .静态局部变量不释放内存,属于静态存储方式。作业:P213三、4,6,9C+基础授课教案讲序第13讲授课学时2学时教材章节:8.4,8.5,8.7,8.12课程内容嵌套调用、递归调用,数组参数,预处理指令授课方式:多媒体教学目的和要求:1 .掌握嵌套调用;2 .掌握递归调用;3 .理解数组作为函数参数的情况;4 .了解预处理指令的分类和作用;5 .熟悉宏定义及使用;6 .理解函数编程思想,掌握函数封装方法。授课主要内容:1 .数组作为参数的两种情况(数组元素和数组名);2 .函数嵌套调用;3 .递归调用的思想和实现;4 .预处理指令(文件包含,宏定义,条件编译)及作用;5 .函数编程实例(通过实例讲解函数编程思想)。重点、难点及学生易犯错误的地方:一、重点内容1 .嵌套调用的方法。2 .递归调用的实现。二、难点内容1 .数组名作为参数时的分析。2 .递归思想的理解。三、学生易犯错的地方1 .混淆数组名和数组元素作为参数。2 .递归函数的自调用位置和参数传递。3 .宏替换时人为的加上括号。教学策略和方法:1 .实例演示演示递归法求阶乘,和学生共同完成;与常规方法作比较。2 .讨论式教学采用断点调试程序和思维实验,分析和讨论递归过程。3 .递进驱动通过改造现有程序,在现有的基础上进行任务推动;讲解难度不断递增的实例,让学生不断加深理解;教学过程:58 .通过最大公约数问题复习函数编写;59 .举例:选择排序法封装为函数,需传递数组参数,通过实例及内存图示讲解数组作为参数;60 通过阶乘的求解引入自己调用自己的思想:设求m的阶乘函数为jiech(m),则求jiech(n)=jiech(n-1)*n,jiech(n-1)=jiech(n-2)*(n-l),直到参数为1,再反推回来。实际是对jiech的不断调用,参数改变,直到边界值。61 采用断点调试程序和思维实验,进一步分析递归过程。62 演示讲解更多的例子,加深学生认识和理解。63 通过几个实例,介绍几种预处理指令。特别要注意宏的替换规则。小结:48. 数组名作为参数,形参数组和实参数组重合;49. 函数可以嵌套调用,但不能嵌套定义;50. 递归调