C++程序设计教学教案_第1页
C++程序设计教学教案_第2页
C++程序设计教学教案_第3页
C++程序设计教学教案_第4页
C++程序设计教学教案_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

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

文档简介

PAGEPAGE1C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第1章C++概述1.1C++起源1.2C++特点1.3简单C++程序第2章数据类型与表达式2.1数据类型1.教学内容(1)C++的发展史与特点;(2)C++程序简介与程序结构特点;(3)C++中数据类型。2.教学目的与要求通过本节学习(1)了解C++语言的起源及其特点;(2)掌握C++程序的基本结构,会编写极简单的C++程序;(3)理解C++中数据类型的概念,掌握基本数据类型的分类、字节数、取值范围。教学重点教学难点1.重点(1)C++程序的基本结构;(2)基本数据类型的分类、字节数、取值范围。2.难点(1)C++程序的基本结构;(2)编写简单C++程序;(3)数据类型的分类、字节数、取值范围。使用教具多媒体教室课外作业作业:习题11.5、1.6、1.7备注授课主要内容或板书设计课程教学目标:(5分钟)1.学习c++面向过程的程序设计语言;2.为后续课程打下基础第1章C++概述1.1C++的起源(1)1967年,BCPL语言(2)1970年,B语言(3)1972年,C语言(编UNIX操作系统)(4)1980~1983年,C++(CPlusPlus)1.2C++的特点(1)全面兼容C语言(2)支持面向对象1.3简单C++程序(1)源程序文件扩展名为.c时,则为C程序;(2)源程序文件扩展名为.cpp时,则为C++程序。【例1.1】文本的原样输出。文件名为example1_1.cpp。【例1.2】求两个整数的和。【例1.3】输入两个整数a和b,输出其中较大的一个数。通过以上例题,可以看出C++程序的结构有以下特点:(1)C++程序由一个或多个函数组成(即函数是C++程序的基本构成单位)(2)C++函数组成①函数说明部分:函数名、函数类型、函数参数(形式参数)及其类型②函数体{}:变量定义和执行语句两部分。(3)语句和数据说明以分号结束(4)程序书写规则(5)C++输入/输出通过流cin和cout来实现的(6)严格区分字母的大小写(7)注释(8)编译预处理命令第2章数据类型与表达式2.1数据类型1.定义变量的目的(1)为变量分配存储空间(2)规定变量可适用的运算2.数据类型数据类型分为基本类型与导出类型二种。(1)基本类型:是C++中预定义的数据类型①字符型(char):存放字符ASCII码或存放8位二进制数;②整型(int):存放整数,有短整型、整型、长整型三种类型(a)短整型(shortint或short)、(b)整型(int)(c)长整型(longint或long)③实型:存放实数,分为单精度与双精度二种。(2)导出类型:是用户自定义的数据类型。分为数组、指针、结构体、共同体与类。本节小结:(3分钟)简单C++程序的组成C++中的数据类型C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第2章数据类型与表达式2.2常量与变量2.2.1常量2.2.2变量2.3运算符与表达式2.3.1算术运算符与算术表达式1.教学内容(1)整型、实型、字符、字符串常量的表示方法;(2)变量的概念、定义格式、赋初值,标识符与关键字;(3)算术、赋值运算符与表达式2.教学目的与要求:通过本节学习,(1)初步掌握整型、实型、字符、字符串常量的表示方法;(2)了解变量的概念,掌握变量的定义与赋初值;(3)初步掌握算术的符号表示、优先级、结合性,能理解相应的表达式的含义,计算出表达式值。教学重点教学难点1.重点(1)常量的表示方法;(2)使用数据类型定义不同的变量;(3)算术运算符的作用、运算方法、运算结果;(4)表达式的书写。2.难点(1)字符常量中转义字符的使用;(2)优先级与结合性;(3)数据类型转换;;使用教具多媒体教室课外作业作业:习题22.1、2.4、2.6备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.C++中的数据类型第2章数据类型与表达式2.2常量和变量2.2.1常量1.整型常量(整数)(1)十进制整数(2)八进制整数(3)十六进制整数(4)长整数(5)无符号整数(6)无符号长整数2.实型常量(实数或浮点数)(1)小数(定点数)(2)指数(浮点数、科学记数法)3.字符常量:用单引号括起来的单个字符称为字符型常量。①普通字符②转义字符:以“\”开头后跟ASCII码或控制字符4.字符串常量:用双引号括起来的若干个字符称字符串常量(简称字符串)。5.符号常量:符号常量就是用标识符(符号)来表示常量。2.2.2变量1.变量定义格式〔存储类型〕<数据类型><变量名1>〔,<变量名2>,…,<变量名n>〕;2.标识符3.关键字4.变量赋初值2.3运算符和表达式2.3.1算术运算符和算术表达式1.算术运算符:+、-、*、/、%求余运算符(求模运算符)2.算术表达式:用算术运算符和括号将常量、变量或函数等连接起来的式子为算术表达式。(1)算术运算符的优先级和结合性①优先级从高到低:正(+)负(-)值运算符→“*”、“/”、“%”→“+”、“-”。②算术运算符的结合性:左结合性、右结合性(2)混合运算时的数据类型转换①自动的类型转换②强制类型转换本节小结:(3分钟)不同类型常量的区分算术运算符的使用C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第2章数据类型与表达式2.3运算符与表达式2.3.2赋值运算符与赋值表达式2.3.3自增、自减运算符2.3.3关系运算符与关系表达式教学内容(1)赋值、自增自减运算符与表达式(2)关系运算符与关系表达式的运算方法;2.教学目的与要求:通过本节学习(1)初步掌握赋值运算符的符号表示、优先级、结合性,能理解相应的表达式的含义,计算出表达式值。(2)掌握自增自减运算符的使用(2)掌握关系运算符的概念,掌握逗号表达式的计算方法;教学重点教学难点重点(1)赋值、自增自减运算符的作用、运算方法、运算结果;(2)关系运算符的优先级;2.难点(1)自增自减运算符的运算使用教具多媒体教室课外作业作业:习题22.7、2.10备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.已学运算符的优先级回顾第2章数据类型与表达式2.3运算符和表达式2.3.2赋值运算符和赋值表达式1.赋值运算符“=”2.赋值表达式:<变量>=<表达式>3.赋值运算时数据类型的转换2.3.3.自增、自减运算符(1)自增++(单目):使变量值加1;(2)自减--(单目):使变量值减1。(3)前置运算:先自加(减)后引用;(4)后置运算:先引用后自加(减)。例题讲解2.3.3关系运算符和关系表达式1.关系运算符(1)关系运算符:>、>=、<、<=、==(等于)、!=(≠),双目运算符。(2)作用:用于比较两个运算对象的大小,结果为逻辑值“真”或“假”。(3)逻辑值:用1表示“真”,用0表示“假”。(4)优先级:算术运算符→>、>=、<、<=→==、!=→赋值(=)2.关系表达式:用关系运算符将两个操作对象连接起来的式子,称为关系表达式。(2)格式:sizeof(<类型>),或sizeof(<表达式>)本节小结:(3分钟)赋值运算符的优先级自增、自减运算符的使用方法C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第2章数据类型与表达式2.3运算符与表达式2.3.4逻辑运算符与逻辑表达式2.3.5逗号运算符与逗号表达式2.3.7复合赋值运算符2.4简单输入/输出教学内容(1)逻辑运算符与表达式(2)逗号运算符与逗号表达式的运算方法;(3)复合赋值运算符与数据类型长度运算符的作用与使用方法;(4)数据输出/输入流cout/cin的格式与使用方法,I/O格式控制。2.教学目的与要求:通过本节学习(1)初步掌握关系、逻辑运算符的符号表示、优先级、结合性,能理解相应的表达式的含义,计算出表达式值。(2)理解逗号运算符的概念,掌握逗号表达式的计算方法;(3)理解复合赋值运算符的运算规则,能计算数据类型长度。(4)学会数据输入输出流cin与cout的使用方法。教学重点教学难点重点(1)关系、逻辑运算符的作用、运算方法、运算结果;(2)逗号表达式的计算方法;(3)输入输出流cin与cout的使用方法。2.难点(2)复合赋值运算符的运算规则;(3)混合型表达式的计算。使用教具多媒体教室课外作业作业:习题22.7、2.10备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.已学运算符的优先级回顾第2章数据类型与表达式2.3.4逻辑运算符和逻辑表达式1.逻辑运算符:&&(与)、||(或)、!(非)、优先级、结合性2.逻辑表达式:用逻辑运算符将运算对象连接起来的式子称为逻辑表达式2.3.5逗号运算符和逗号表达式(1)逗号运算符“,”(2)逗号表达式格式:<表达式1>,<表达式2>,…,<表达式n>(2)求解过程:从左到右依次求各表达式值,最后一个表达式值作为逗号表达式的值。(3)逗号运算符的优先级是最低的。2.3.7复合赋值运算符(1)复合赋值运算符+=(加等) -=(减等) *=(乘等)/=(除等) %=(求余等)<<=(左移等)>>=(右移等) &=(按位与等) |=(按位或等)^=(按位异或等)(2)赋值表达式也可以包含复合赋值运算符。2.3.8数据类型长度运算符(sizeof运算符)(1)作用:计算某种类型的运算对象所占内存字节数;(2)格式:sizeof(<类型>),或sizeof(<表达式>)2.4简单的输入和输出2.4.1数据输出cout(1)作用:将数据输出到外设(如屏幕);(2)格式:cout<<表达式1〔<<表达式2<<表达式3…<<表达式n〕;2.4.2数据输入cin(1)作用:从外设(键盘)输入数据到变量(2)格式:cin>>变量名1〔>>变量名2>>变量名3…>>变量名n〕;2.4.3简单的输入/输出格式控制本节小结:(3分钟)运算符的优先级顺序运算符的综合运用C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第1章C++上机过程第2章数据类型与表达式实验1数据类型与表达式实验1.实验内容:(1)设计一个C++程序,输出以下信息:***************Hello!***************(2)设计一个C++程序,输入三个学生的成绩,求其总成绩。(3)设计一个C++程序,输入a、b二个整数,输出其中的最小数。(4)设计一个程序,从键盘输入一个圆的半径,求其周长和面积。(5)设计一个程序,从键盘输入一个小写字母,将它转换成大写字母。(6)设计一个程序,输入一个华氏温度值,要求输出其对应的摄氏温度值。温度转换公式为:c=(f-32)*5/9。(7)从键盘输入一个三位整数n=abc,从左到右用a、b、c表示各位的数字,现要求依次输出从右到左的各位数字,即输出另一个三位数m=cba,例如:输入123,输出321,试设计程序;(8)编写程序输出表2.1中各种数据类型的长度。教学重点教学难点重点:(1)用VC++集成开发环境编辑源程序方法;(2)在VC++集成开发环境中编译、调试与运行程序的方法;难点:(1)实验(5);(2)实验(7)。使用教具计算机实验室课外作业备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.c++程序的组成2、数据类型、运算符的回顾第1章C++上机过程第2章数据类型与表达式实验11.实验内容:(1)设计一个C++程序,输出以下信息:***************Hello!***************(2)设计一个C++程序,输入三个学生的成绩,求其总成绩。(3)设计一个C++程序,输入a、b二个整数,输出其中的最小数。(4)设计一个程序,从键盘输入一个圆的半径,求其周长和面积。(提示:周长L=2*r*pi,面积S=r*r*pi)(5)设计一个程序,从键盘输入一个小写字母,将它转换成大写字母。(提示:小写字母ASCII=大写字母ASCII+0x20)(6)设计一个程序,输入一个华氏温度值,要求输出其对应的摄氏温度值。温度转换公式为:c=(f-32)*5/9。(7)从键盘输入一个三位整数n=abc,从左到右用a、b、c表示各位的数字,现要求依次输出从右到左的各位数字,即输出另一个三位数m=cba,例如:输入123,输出321,试设计程序。(提示:a=n/100,b=(n-a*100)/10,c=(n-a*100)%10,m=c*100+b*10+a)(8)编写程序输出表2.1中各种数据类型的长度。2.实验目的通过本次实验(1)掌握用VC++集成开发环境编辑源程序方法。(2)掌握在VC++集成开发环境中编译、调试与运行程序的方法。(3)理解数据类型、变量、运算符、表达式的概念。(4)学会使用cin进行数据输入操作。(5)学会用算术表达式、关系表达式、赋值表达式完成数据处理工作。(6)学会使用cout进行数据输出操作。3.实验要求(1)编写实验程序(2)在VC++运行环境中,输入源程序(3)编译运行源程序(4)写出运行结果本节小结:(3分钟)输入输出的设置实验过程中的问题回顾C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第3章程序结构与流程控制语句3.1程序的三种基本结构与语句类型3.1.1程序的三种基本结构3.1.2C++程序的组成3.1.3C++语句类型3.2分支语句1.教学内容:(1)顺序、分支、循环结构,C++程序的组成,C++语句类型(2)单选条件的if语句(3)两选条件的if语句2.教学目的与要求:通过本节学习(1)应理解程序的三种基本结构、C++程序的组成,了解C++语句类型;(2)掌握单选、两选条件的if语句的格式、执行过程及使用方法。教学重点教学难点重点(2)程序的三种基本结构;(3)C++程序的组成;(4)if语句格式、执行过程及使用方法。难点(1)两选条件的if语句的使用。使用教具多媒体教室课外作业备注授课主要内容或板书设计第2章数据类型与表达式第3章程序结构与流程控制语句图3.顺序结构图3.顺序结构1S2S1S2(b)(a)3.1.1程序的三种基本结构1.顺序结构2.分支结构(1)两路分支(2)多路分支3.循环结构(1)当型循环结构(2)直到型循环结构3.1.2C++程序的组成3.1.3C++的语句类型(1)说明语句(2)控制语句(3)函数调用语句(4)表达式语句(5)空语句(6)复合语句3.2分支语句3.2.1if语句(条件语句)1.if语句的三种形式(1)单选条件语句:if(<表达式>)<语句>【例3.1】输入两个整数a和b,输出其中较大的一个数。(2)两选条件语句:if(<表达式>)<语句1>else<语句2>【例3.2】输入两个整数a和b,输出其中较大的一个数。(3)多选条件语句:if(<表达式1>)<语句1>本节小结:(3分钟)程序的三种基本结构条件语句的使用方法C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第3章程序结构与流程控制语句3.2分支语句(续)1.教学内容:(1)if语句及嵌套if语句(2)switch语句(3)break语句2.教学目的与要求:通过本节学习(1)掌握if语句的格式、执行过程及使用方法;(2)初步掌握嵌套if语句的格式、执行过程与基本应用;(3)初步掌握switch语句、break语句的格式、执行过程与基本应用;。教学重点教学难点1.重点(1)if语句格式、执行过程及使用方法;(2)switch语句的格式、执行过程。2.难点(1)多路分支的if语句;(2)嵌套if语句;(3)switch语句。使用教具多媒体教室课外作业备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.条件语句的语法第3章程序结构与流程控制语句3.2分支语句(续)3.2.1if语句(条件语句)1.if语句的三种形式(1)单选条件语句:if(<表达式>)<语句>(2)两选条件语句:if(<表达式>)<语句1>else<语句2>【例3.2】输入两个整数a和b,输出其中较大的一个数。(3)多选条件语句:if(<表达式1>)<语句1>x2-50≤x<10y=x+1x<0x3x2-50≤x<10y=x+1x<0x3x≥10else<语句n>【例3.3】有下列分段函数:编一程序,输入x,输出y的值。2.if语句的嵌套【例3.5】求三个整数a、b、c中的最大者,a、b、c由键盘输入。3.条件运算符:?:(1)条件表达式:<表达式1>?<表达式2>:<表达式3>(2)执行过程:if(表达式1)条件表达式=表达式2else条件表达式=表达式3;(3)优先级3.2.3switch语句与break语句1.switch语句(开关语句)(1)作用:实现多路分支程序。(2)语句格式switch(<条件表达式>){case<常量表达式1>:〔<语句1>〕case<常量表达式2>:〔<语句2>〕case<常量表达式n-1>:〔<语句n-1>〕〔default:<语句n>〕}【例3.7】输入0~6的整数,将其转换成对应的星期几。2.break语句(1)作用:中止当前语句的执行,并跳转到下一条语句处执行。(2)语句格式:break;【例3.8】商店打折售货。购货金额数量越大,折扣越大。本节小结:(3分钟)分支语句的语法和使用switch语句的格式注意C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第3章程序结构与流程控制语句实验2分支程序设计实验1.实验内容:(1)演示单步执行程序的方法;(2)设计一个程序,判断从键盘输入的整数的正负性和奇偶性。(3)有下列函数:-x+2.5(x<2)y=2-1.5(x-3)2(2≤x<4)EQEQ\F(x,2)-1.5(x≥4)(4)*输入平面直角坐标系中一点的坐标值(x,y),判断该点是在那一个象限中或那一条坐标轴上。(5)*简单计算器。设计一个程序计算表达式:data1opdata2的值,其中data1、data2为两个实数,op为运算符(+、-、*、/),并且都由键盘输入。(提示:用switch语句)(6)奖金税率如下:(a代表奖金,r代表税率) a<500(元) r=0% 500≤a<1000 r=3% 1000≤a<2000 r=5% 2000≤a<5000 r=8% a≥5000 r=12%输入一个奖金数,求税率、应交税款及实得奖金数。教学重点教学难点重点:(1)VC++集成环境中的单步执行;(2)实验(3)(5)(6);难点:(1)实验(5);(2)实验(6)。使用教具计算机实验室课外作业备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.分支语句的使用方法回顾第3章程序结构与流程控制语句实验21.实验内容:(1)演示单步执行程序的方法;(2)设计一个程序,判断从键盘输入的整数的正负性和奇偶性。(3)有下列函数:-x+2.5(x<2)y=2-1.5(x-3)2(2≤x<4)EQEQ\F(x,2)-1.5(x≥4)设计一个程序,从键盘输入x的值,输出y的值。(4)输入平面直角坐标系中一点的坐标值(x,y),判断该点是在那一个象限中或那一条坐标轴上。(5)简单计算器。设计一个程序计算表达式:data1opdata2的值,其中data1、data2为两个实数,op为运算符(+、-、*、/),并且都由键盘输入。(6)奖金税率如下:(a代表奖金,r代表税率) a<500(元) r=0% 500≤a<1000 r=3% 1000≤a<2000 r=5% 2000≤a<5000 r=8% a≥5000 r=12%输入一个奖金数,求税率、应交税款及实得奖金数。2.实验目的通过本次实验(1)初步学会VC++开发环境中,单步执行程序的方法。(2)掌握if语句的格式与使用方法,学会二路分支程序设计方法;(3)掌握嵌套if语句的格式与用法,学会多路分支程序的设计方法。(4)掌握switch语句的格式与使用方法,学会编写多路分支程序。3.实验要求(1)编写实验程序(2)在VC++运行环境中,输入源程序(3)单步执行程序(4)编译运行源程序(5)写出运行结果本节小结:(3分钟)if与else配对问题实验中出现的问题C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第3章程序结构与流程控制语句3.3循环语句3.3.1while语句3.3.2do…while语句3.3.3for语句3.3.4三种循环语句的比较1.教学内容(1)while语句的作用、格式、执行过程与使用方法;(2)dowhile语句的作用、格式、执行过程与使用方法;(3)for语句的作用、格式、执行过程与使用方法;(4)三种循环语句的比较。2.教学目的与要求通过本节学习(1)理解while语句的作用、格式、执行过程,初步掌握其使用方法;(2)理解dowhile语句的作用、格式、执行过程,初步掌握其使用方法;(3)理解for语句的作用、格式、执行过程,初步掌握其使用方法;(4)了解三种循环语句的不同与使用场合。教学重点教学难点1.重点(1)while与for语句的格式、执行过程及使用方法。2.难点(1)for语句的执行过程。使用教具多媒体教室课外作业备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.分支语句的回顾3.3循环语句引例:求S=1+2+3+4+……+n3.3.1while语句(1)作用:实现“当型”循环结构。(2)格式:while(<表达式>)语句(3)执行过程:先计算表达式的值,当表达式的值为非0时,重复执行指定的语句;当表达式的值为0时,结束循环。【例3.9】用while语句计算:S=1+2+3+4+…+n。【例3.10】用while语句计算T=n!,即求连乘积:T=1×2×3×4…×n。课堂练习:习题3.183.3.2do…while语句(1)作用:实现“直到型”循环结构。(2)格式:do<语句>while(<表达式>);【例3.11】用do…while语句计算S=1+2+3+4+…+n。【例3.12】用do…while语句计算T=n!,即求T=1×2×3×4…×n。课堂练习:习题3.193.3.3for语句1.for语句格式for(<表达式1>;<表达式2>;<表达式3>)<语句>2.for语句的执行过程【例3.13】用for语句计算S=1+2+3+4+…+n。【例3.14】用for语句计算T=n!,即求T=1×2×3×4…×n。【例3.15】计算S=,即求:3.3.4三种循环语句的比较(1)while与for语句为先判断后执行(当型:可能一次也不执行循环体);do…while语句是先执行判断(直到型:循环体至少执行一次)。(2)三种语句都是循环条件为真时执行循环体,为假时结束循环。(3)在循环体至少执行一次的情况下,三种循环语句构成的循环结构可以相互转换。实际上,用得最多的是for语句,其次是while语句,而do…while语句相对于前两种语句则用得较少。本节小结:(3分钟)1.不同循环语句的适用场合C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第3章程序结构与流程控制语句3.3.5循环语句的嵌套3.4控制执行顺序的语句3.4.1break语句3.4.2continue语句3.4.3语句标号和goto语句3.4.4exit()和abort()函数3.5程序设计举例1.教学内容:(1)循环语句的嵌套;(2)break、continue、goto语句;(3)exit()和abort()函数;(4)程序设计举例。2.教学目的与要求:通过本节学习(1)理解循环语句的嵌套的概念,初步掌握其使用方法;(2)理解break、continue、goto语句的作用、执行过程及使用方法;(3)理解exit()、abort()函数的作用与执行过程;(4)学习C++基本结构程序设计方法。教学重点教学难点1.重点(1)循环语句的嵌套;(2)C++基本结构程序设计方法。2.难点(1)循环语句的嵌套的应用编程;(2)C++基本结构程序设计方法。使用教具多媒体教室课外作业备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.循环语句的格式3.3.5循环语句的嵌套循环语句中又包含有循环语句的结构称为循环语句的嵌套。【例3.16】用公式:,求e的近似值。课堂练习:3.27求,即求1!+2!+3!+4!+……+10!。用单循环完成。【例3.17】编写程序,按下列格式打印九九表。3.4控制执行顺序的语句3.4.1break语句(1)作用:①终止switch语句与单循环语句的执行;②对多重循环循环语句,可从内循环体跳到外循环体。(2)格式:break;【例3.18】输入一个正整数,判断该数是否是素数。3.4.2continue语句(1)作用:(2)格式:continue;【例3.19】输入10个整数,统计其中正数的和及正数的个数。3.4.3语句标号和goto语句1.语句标号(1)作用:指示语句在程序中的位置,常常作为转移语句(goto语句)的转移目标。(2)格式:<语句标号>:<语句>2.goto语句(1)作用:改变程序的流程,无条件地转移到指定语句标号的语句处去执行。(2)格式:goto<语句标号>;3.4.4exit()和abort()函数1.exit()函数(1)作用:无条件正常终止程序的执行,并将控制返回给操作系统。(2)格式:exit(<表达式>);2.abort()函数(1)作用:用于异常终止程序的执行。(2)格式:abort();3.5程序设计举例【例3.21】编写程序,求一元二次方程ax2+bx+c=0的解。【例3.22】输入某一年的年份和月份,计算该月的天数。本节小结:(3分钟)循环语句的嵌套执行过程break、continue的不同C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第3章程序结构与流程控制语句3.5程序设计举例习题课1.教学内容:(1)裴波那契数列的求解程序;(2)求100~200之间的所有素数的程序;(3)使用穷举法的双重循环程序;(4)绘制图案的程序;(5)本章小结。2.教学目的与要求:通过本节学习(1)学会数列求解程序的编写方法;(2)学会使用穷举法的双重循环程序的编写方法;(3)学会显示图案程序的编写方法;(4)提高学生综合编程的能力。教学重点教学难点1.重点(1)数列求解程序的编写方法;(2)穷举法的双重循环程序的编写方法。2.难点(1)数列求解程序的编写方法;(2)穷举法的双重循环程序的编写方法。(3)显示图案程序的编写方法。使用教具多媒体教室课外作业作业:习题33.26、3.29、3.30、3.31备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.循环语句的语法习题课【例3.23】裴波那契数列的前几个数为1,1,2,3,5,8,……,其规律为:F1=1 (n=1)F2=1 (n=2)Fn=Fn-1+Fn-2 (n≥3)编写程序求此数列的前面40个数。课堂练习题:3.26设有一个数列,它的前四项为0、0、2、5,以后每项分别是其前四项之和,编程求此数列的前20项。要求写出算术公式。【例3.24】求出100~200之间的所有素数,输出时一行打印五个素数。课堂练习题:求出1~599中能被3整除的偶数。作业提示:3.29求出1~599中能被3整除,且至少有一位数字为5的所有整数。如15、51、513均是满足条件的整数。(提示:参考习题2.18)【例3.25】有100个学生种100棵树,其中高中生每人种3棵树,初中生每人种2棵树,小学生每3人种1棵树,问高中生、初中生、小学生各有多少人?课堂练习题:3.30设用100元钱买100支笔,其中钢笔每支3元,圆珠笔每支2元,铅笔每支0.5元,问钢笔、圆珠笔和铅笔可以各买多少支(每种笔至少买1支)?要求列出二个算术方程式。【例3.26】编写能显示边长L、高H的平行四边形图形(图形“*”组成)的程序。*******************************************************本章小结本节小结:(3分钟)循环嵌套语句的使用方法常见算法的小结C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第3章程序结构与流程控制语句实验3循环与分支程序设计实验1.实验内容:(1)输入一行字符,分别统计出其中英文字母、空格、数字字符和其它字符的个数。(提示:大字母:0x41~0x5a,小字母:0x61~0x7a,数字:0x30~0x39,空格:0x20)(2)设有一个数列,它的前四项为0、0、2、5,以后每项分别是其前四项之和,编程求此数列的前20项。(提示:参考例3.23)(3)求π近似值的公式为:其中,n=1、2、3…设计一个程序,求出当n=1000时的π的近似值。(4)*求出1~599中能被3整除,且至少有一位数字为5的所有整数。如15、51、513均是满足条件的整数。(提示:参考例3.24与习题2.18)(5)*设用100元钱买100支笔,其中钢笔每支3元,圆珠笔每支2元,铅笔每支0.5元,问钢笔、圆珠笔和铅笔可以各买多少支(每种笔至少买1支)?(提示:参考例3.25)(6)*编程显示图形。2.实验要求(1)掌握三种循环语句的使用方法;(2)掌握分支与循环综合程序的编写方法;(2)学会常用级数与图形的编程方法。教学重点教学难点重点:(1)三种循环语句的使用方法;(2)分支与循环综合程序的编写方法;(3)常用级数与图形的编程方法。难点:(1)实验题(1)(2)实验题(4)(3)实验题(6)使用教具计算机实验机房课外作业备注打“*”题为选做题授课主要内容或板书设计上次课内容回顾:(3分钟)分支、循环语句的语法及注意点常见算法的回顾实验31.实验内容:(1)输入一行字符,分别统计出其中英文字母、空格、数字字符和其它字符的个数。(2)设有一个数列,它的前四项为0、0、2、5,以后每项分别是其前四项之和,编程求此数列的前20项。(3)求π近似值的公式为:其中,n=1、2、3…设计一个程序,求出当n=1000时的π的近似值。(4)求出1~599中能被3整除,且至少有一位数字为5的所有整数。如15、51、513均是满足条件的整数。(5)编程显示如下图形:2.实验目的通过本次实验(1)掌握while语句的格式与使用方法,学会当型循环程序设计方法;(2)掌握for语句的格式与用法,学会当型循环程序设计方法;(3)掌握dowhile语句的格式与使用方法,学会直到型循环程序设计方法;(4)学会求常用级数的编程方法;(5)学会输出图形的编程方法。3.实验要求(1)编写实验程序(2)在VC++运行环境中,输入源程序(3)编译运行源程序(4)写出运行结果本节小结:(3分钟)裴波那契数列的算法本次实验中的问题C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第4章数组4.1数组的定义与使用(一维数组的定义与使用)1.教学内容:(1)一维数组的定义、内存单元分配与初始化赋值;(2)一维数组的元素使用方法;(3)一维数组的应用举例(求一维数组的最大、小值,数组元素和与平均值,数组排序)。2.教学目的与要求:通过本节学习(1)了解一维数组的概念;(2)掌握一维数组的定义方法与初始化赋值;(3)掌握一维数组的元素使用方法;;(4)掌握求一维数组最大、小值的编程方法;(5)掌握求一维数组元素的平均值与总和的编程方法;(6)掌握一维数组冒泡法编程方法。教学重点教学难点1.重点(1)一维数组的定义、初始化赋值与元素使用;(2)一维数组求最大、小值、平均值编程方法;(3)一维数组冒泡排序法。2.难点(1)一维数组冒泡排序法。使用教具多媒体教室课外作业作业题:习题4.7、4.8(提示:a[i]=a[i-1]+a[i-2]+a[i-3]+a[i-4];)、4.9用冒泡法实现排序。备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.c++数据类型数组是若干同类数据的集合,分为一维数组、多维数组、字符数组。4.1数组的定义和引用4.1.1一维数组的定义和引用引例:A=[a0a1a2a3…a9],数组名为a,10元素分别为a[0]、a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]、a[9]。1.一维数组的定义与初始化赋值(1)定义格式:〔存储类型〕<类型><数组名>[<常量表达式>];说明:①存储类型的概念将在第5章中介绍;②类型定义了数组元素的数据类型,可以是基本类型或导出类型;③数组名应符合标识符的命名规则;④常量表达式规定了数组元素的个数,即数组长度。⑤数组元素的下标从0开始,且不能超出范围。(2)初始化赋值一维数组初始化赋值有三种方法:①给所有元素赋初值:{a0,a1,a2,…,an}②给部分元素赋初值{a0,a1,a2,…,ak}③数组定义为全局或静态变量时,所有数组元素初值均为0;数组定义为其他存储类型的局部变量时,数组元素没有确定的值。2.存储方式数组a[n]定义后,系统分配n*k个连续存储单元存放数组元素值(k=元素占用字节数)。3.一维数组元素的引用<数组名>[<下标表达式>]【例4.1】通过键盘将10个整数依次输入到一个数组中,然后按倒序输出。4.一维数组应用举例【例4.2】某小组有10个学生,进行了数学考试,求他们数学成绩的平均分、最高分和最低分。【例4.3】将一个数组的内容按颠倒的次序重新存放。例如数组中数组元素原来的值依次为:8、3、5、1、9、7、2,要求改为:2、7、9、1、5、3、8。【例4.4】某班有10个学生,进行了数学考试,现要求将数学成绩按由低到高的顺序排序。(1)冒泡法848588909296冒泡升序排序算法关键步骤:定义数组为a[N],数据输入到a[0]~a[N-1],用双循环:i=1toN-1,j=0toN-1-iifa[j]>a[j+1]则交换。本节小结:(3分钟)1.一维数组的定义和使用C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第4章数组4.1数组的定义与使用(续)(一维数组的定义与使用、二维数组的定义与使用)1.教学内容:(1)一维数组的应用举例(数组选择法排序)。(2)二维数组的定义、内存单元分配与初始化赋值;(3)二维数组的元素使用方法;2.教学目的与要求:通过本节学习掌握一维数组选择法排序编程方法。(2)了解二维数组的概念;(3)掌握二维数组的定义方法与初始化赋值;(4)掌握二维数组的元素使用方法;;教学重点教学难点1.重点(1)一维数组选择排序法。(2)二维数组的定义、初始化赋值与元素使用2.难点(1)一维数组选择排序法。(2)二维数组元素的内存分配使用教具多媒体教室课外作业作业题:习题4.104.11备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.一维数组的定义和使用2.冒泡排序发数组是若干同类数据的集合,分为一维数组、多维数组、字符数组。4.1数组的定义和引用4.1.1一维数组的定义和引用引例:A=[a0a1a2a3…a9],数组名为a,10元素分别为a[0]、a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]、a[9]。(2)选择法选择升序排序算法关键步骤:定义数组为a[N+1],数据输入到a[1]~a[N],用双循环:i=1toN-1,j=i+1toNifa[i]>a[j]则交换。思考题:若定义数组为a[N],数据输入到a[0]~a[N-1],循环变量i、j应如何取值。a11a12a11a12…a1na21a22…a2nA=…………am1am2…amn二维数组是一个m行n列矩阵。即:1.二维数组的定义与初始化赋值(1)定义格式:〔存储类型〕<类型><数组名>[<m>][<n>];其中:m、n为常量表达式,m=数组行数,n=数组列数。(2)初始化赋值二维数组初始化赋值的方法有:①所有元素赋初值方法一:每行一个花括号,花括号间用逗号分隔,全部初值再用一个花括号。方法二:所有初值放在一个花括号中,按数组排列的顺序给各元素赋初值。注意:若对所有元素都赋初值,则定义数组时行数可不指定,而列数必须指定。②部分元素赋初值按行赋初值的方法与一维数组相同2.存储方式按行存放二维数组各数组元素,即先存第一行元素,再存第二行元素,依次把各行元素存入一串连续的存储单元中。3.元素引用<数组名>[<下标表达式1>][<下标表达式2>]下标表达式1为元素行号,下标表达式2为元素的列号,行号与列号必须为整型。【例4.5】通过键盘给一个3行4列的二维数组输入整型数值,并按表格形式输出此数组的所有元素。本节小结:(3分钟)选择法排序二维数组的定义C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第4章数组4.1数组的定义与使用(续)(二维数组的定义与使用)习题课1.教学内容:(1)二维数组的应用举例(二维数组的输入输出、矩阵转置、学生成绩表统计)。(2)一维数组习题(折半查找法)2.教学目的与要求:通过本节学习(1)掌握二维数组数据输入与输出编程方法;(2)掌握二维矩阵转置编程方法;(3)掌握一维与二数组的混合应用编程方法。(4)掌握一维数组的折半查找编程方法教学重点教学难点1.重点(1)二维数组的应用编程。2.难点(1))学生成绩表统计的编程。(2)一维数组的折半查找法使用教具多媒体教室课外作业备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.二维数组的定义a11a12a11a12…a1na21a22…a2nA=…………am1am2…amn二维数组是一个m行n列矩阵。即:1.二维数组的定义与初始化赋值(2)初始化赋值2.存储方式按行存放二维数组各数组元素,即先存第一行元素,再存第二行元素,依次把各行元素存入一串连续的存储单元中。3.元素引用<数组名>[<下标表达式1>][<下标表达式2>]下标表达式1为元素行号,下标表达式2为元素的列号,行号与列号必须为整型。【例4.5】通过键盘给一个3行4列的二维数组输入整型数值,并按表格形式输出此数组的所有元素。多维数组的定义和使用方法与二维数组类似。4.二维数组应用举例【例4.6】将一个二维数组的行和列元素互换,形成另一个二维数组,即数组的转置运算。【例4.7】某小组有5个学生,考了3门课程,他们的学号及成绩如表4.1所示,试编程求每个学生的平均成绩,并按表格形式输出每个学生的学号、3门课程成绩和平均成绩。【例4.8】一维数组习题(折半查找法)本节小结:(3分钟)二维数组的输入输出二维数组应用C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第4章数组4.1数组的定义与使用实验4数值型数组程序设计实验1.实验内容:(1)某班有10个学生,进行了数学考试,编写程序将考试成绩输入一维数组,并求数学的平均成绩及不及格学生的人数。(2)某班有10个学生,进行了数学考试,编写程序将考试成绩输入一维数组,并将数学成绩按由高到低的顺序排序后输出。(用二种方法)(3)输入一个5行5列的二维数组,编程实现:1)求出其中的最大值和最小值及其对应的行列位置;2)求出对角线上各元素之和。(提示参考例4.2)(4)设A、B、C为m行n列矩阵。设计矩阵加法程序,能完成C=A+B的操作。m与n用define定义为常量,其值由用户自定义。2.实验要求(1)掌握一维数组的定义、初始化赋值、数组元素的引用方法;(2)掌握二维数组的定义、初始化赋值、数组元素的引用方法;(3)学会求数组元素中的最大、小值、平均值的方法;(4)学会数组元素排序的二种编程方法。教学重点教学难点重点:(1)求数组元素中的最大、小值、平均值的编程方法;(2)数组元素排序的二种编程方法;难点:(1)实验题(2)(2)实验题(3)(3)实验题(4)使用教具计算机实验机房课外作业备注打“*”题为选做题授课主要内容或板书设计上次课内容回顾:(3分钟)一维数组的使用二维数组的使用实验41.实验内容:(1)某班有10个学生,进行了数学考试,编写程序将考试成绩输入一维数组,并求数学的平均成绩及不及格学生的人数。(2)某班有10个学生,进行了数学考试,编写程序将考试成绩输入一维数组,并将数学成绩按由高到低的顺序排序后输出。(3)输入一个5行5列的二维数组,编程实现:1)求出其中的最大值和最小值及其对应的行列位置;2)求出对角线上各元素之和。(提示参考例4.2)(4)设A、B、C为m行n列矩阵。设计矩阵加法程序,能完成C=A+B的操作。并输出C的元素值。m与n用define定义为常量,取值3、3。A、B矩阵的元素值如下:321B=654321B=654987123A=4567892.实验目的通过本次实验(1)掌握一维数组的定义、初始化赋值、数组元素的引用方法;(2)掌握二维数组的定义、初始化赋值、数组元素的引用方法;(3)学会求数组元素中的最大、小值、平均值的方法;(4)学会数组元素排序的二种编程方法。3.实验要求(1)编写实验程序(2)在VC++运行环境中,输入源程序(3)编译运行源程序(4)写出运行结果本节小结:(3分钟)常见排序方法二维数组实现成绩表C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第4章数组4.2字符数组的定义和引用4.2.1字符串4.2.2字符串处理函数4.2.3字符数组应用举例1.教学内容:(1)字符串的概念;(2)字符数组的定义、初始化赋值;(3)字符数组的输入/输出;(4)字符串处理函数的格式与功能;(5)字符数组应用举例。2.教学目的与要求:通过本节学习(1)理解字符串的概念;掌握字符串常量与字符常量的区别;(2)掌握字符数组的定义格式、存储方式与初始化赋值;(3)掌握字符数组的输入/输出;(4)掌握字符串处理函数的格式与功能;(5)初步学会字符数组的应用编程。教学重点教学难点1.重点(1)字符串常量与字符常量的区别;(2)字符数组的定义、初始化赋值与输入/输出;(3)字符串处理函数的格式、功能与简单应用。2.难点(1)字符串常量的存储方式;(2)字符数组的应用编程。使用教具多媒体教室课外作业备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.c++数据类型和常量的分类4.2字符数组的定义和引用4.2.1字符串与字符数组1.字符串(字符串常量):是用一对双引号括起来的字符序列说明:(1)字符串中字符为显示或转义字符,如回车换行符"\n";(2)以'\0'为字符串结束标志;(3)串常量和字符常量的区别2.字符数组(1)定义格式:〔存储类型〕char<数组名>[<常量表达式>];(2)初始化赋值①各元素逐个赋初值②指定字符串初值(3)存储方式3.字符数组的输入与输出(1)字符数组元素逐个输入/输出【例4.8】将从键盘输入的10个字符依次送给数组str中的各个元素,并将数组str中的元素按倒序输出。(2)字符数组作为字符串进行整体的输入/输出【例4.9】将两个字符串分别输入到两个字符数组中,并把这两个数组中的字符串输出。4.2.2字符串处理函数1.求字符串长度函数strlen()格式:strlen(<str>)功能:求字符串str的长度。2.字符串复制函数strcpy()格式:strcpy(<str1>,<str2>)功能:将字符串str2复制到字符数组str1中。3.字符串连接函数strcat()格式:strcat(<str1>,<str2>)功能:将串str2连接到数组str1中的字符串后,结果存放在数组str1中。4.字符串比较函数strcmp()格式:strcmp(<str1>,<str2>)功能:将两个串从左到右逐个字符的ASCII码进行比较,直到出现不同的字符或遇到'\0'为止。5.字符串中大写字母变换成小写字母函数strlwr()格式:strlwr(<str>)功能:将字符数组str中大写字母换成小写字母。6.字符串中小写字母变换成大写字母函数strupr()格式:strupr(<str>)功能:将字符数组str中小写字母换成大写字母。4.2.3字符数组应用举例【例4.10】从键盘输入两个字符串,将它们连接成一个字符串。方法一:使用字符串连接函数strcat连接两个字符串。本节小结:(3分钟)1.字符数组的定义及使用C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第4章数组4.2字符数组的定义和引用(续)习题课1.教学内容:(1)一维有序数组中数据的插入与删除;(2)二维数组的最值问题、求均值问题;(3)二维数组的排序;(4)杨辉三角形问题;(5)字符串的复制、连接、比较问题(5)本章小结。2.教学目的与要求:通过本节学习(1)学会一维有序数组中数据的插入与删除编程方法;(2)学会二维数组的最值问题、求均值问题编程方法;(3)学会二维数组的排序程序编写方法;(4)学会字符串的复制、连接、比较问题的编程方法;(5)提高学生综合编程的能力。教学重点教学难点1.重点(1)二维数组的最值问题、求均值问题编程方法;(2)一维有序数组中数据的插入与删除编程方法。2.难点(1)二维数组的排序程序编写方法;(2)字符串的复制、连接、比较问题的编程方法。使用教具多媒体教室课外作业备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.数值型数组的定义和引用2.字符型数组的定义和引用4.2字符数组的定义和引用(续)习题课与本章小结1.一维数组(1)定义格式〔存储类型〕<类型><数组名>[<常量表达式>];在定义一维数组的同时,可以对数组元素赋初值。当定义了一个一维数组后,系统就在内存中开辟一串连续的存储单元,来依次存放各个数组元素。(2)数组元素引用:<数组名>[<下标表达式>]例1(4.10)已有一按从小到大次序排序好的数组,现输入一数,要求按原来排序的规律将它插入到数组中。(习题课内容,提示:先定位、向后移,再插入)课堂练习题:课堂练习:从有序数组中删除指定元素值。2.二维数组(1)定义格式:〔存储类型〕<类型><数组名>[<常量表达式1>][<常量表达式2>];(2)数组元素的引用:<数组名>[<下标表达式1>][<下标表达式2>]例2(4.14)设计一个程序,打印杨辉三角形。方法一课堂练习题:方法二:打印杨辉三角形。例3(4.22)某小组有5个学生,考了3门课程,他们的学号及成绩如表4.2所示,试编程求每个学生的总成绩及每门课的平均成绩,并按表格形式输出每个学生的学号、3门课程成绩、总成绩及各门课程的平均成绩。要求用一个6行5列的数组完成上述操作。对学生成绩表按总成绩排序后输出。课堂练习:在上例中求每个学生的平均成绩及每门课的最高分与最低分,对学生成绩表按平均成绩排序后输出。3.字符数组和字符串(1)字符串(2)字符数组定义格式:〔存储类型〕char<数组名>[<常量表达式>];(3)字符串处理函数C++提供的字符串处理函数包含在头文件string.h中。常用的字符串处理函数有:求字符串长度函数strlen()、字符串复制函数strcpy()、字符串连接函数strcat()、字符串比较函数strcmp()。例4【例4.11】从键盘输入三个字符串,找出其中的最大者。课堂练习:4.18从键盘输入三个字符串,将其合并成一个字符串,并求出合并后字符串的长度。本节小结:(3分钟)三种排序法的区别字符数组的注意点C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第4章数组实验5数值与字符型数组的程序设计实验1.实验内容:(1)已有一按从小到大次序排序好的数组,现输入一数,要求用折半查找法找出该数在数组中的位置。(2)编写程序,实现str=str1+str2的操作,此处运算符“+”表示将二个字符串str1、str2连接成一个字符串str。用键盘将二个字符串输入字符数组str1与str2中,连接后的字符串存放在字符数组str中,并输出连接后的字符串str。1)用C++提供的字符串处理函数完成上述要求。2)不用C++提供的字符串处理函数完成上述要求。(3)设计一个程序,打印杨辉三角形。(方法二)(4)在表4.2中求每个学生的平均成绩及每门课的最高分与最低分,对学生成绩表按平均成绩排序后输出。2.实验要求(1)初步掌握有序数组的查找、增加、删除的编程方法;(2)初步掌握字符数组的定义、赋值与字符串处理函数的使用方法;(3)初步掌握字符串复制、连接、测长等程序的编写方法;(4)学会打印杨辉三角图形的编程方法;(5)学会二维数据表的排序编程方法。教学重点教学难点重点:(1)有序数组的查找、增加、删除的编程方法;(2)字符串复制、连接、测长等程序的编写方法;(3)二维数据表的排序编程方法。难点:(1)实验题(1)(2)实验题(4)使用教具计算机实验机房课外作业备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.数组的应用实验51.实验内容:(1)已有一按从小到大次序排序好的数组,现输入一数,要求用折半查找法找出该数在数组中的位置。(2)编写程序,实现str=str1+str2的操作,此处运算符“+”表示将二个字符串str1、str2连接成一个字符串str。用键盘将二个字符串输入字符数组str1与str2中,连接后的字符串存放在字符数组str中,并输出连接后的字符串str。1)用C++提供的字符串处理函数完成上述要求。2)不用C++提供的字符串处理函数完成上述要求。(3)设计一个程序,打印杨辉三角形。(方法二)(4)在表4.2中求每个学生的平均成绩及每门课的最高分与最低分,对学生成绩表按平均成绩排序后输出。表4.2学生成绩情况表学号数学语文外语平均成绩10019080851002707580100365707510048550601005809070最高分最低分2.实验目的通过本次实验(1)初步掌握有序数组的查找、增加、删除的编程方法;(2)初步掌握字符数组的定义、赋值与字符串处理函数的使用方法;(3)初步掌握字符串复制、连接、测长等程序的编写方法;(4)学会打印杨辉三角图形的编程方法;(5)学会二维数据表的排序编程方法。3.实验要求(1)编写实验程序(2)在VC++运行环境中,输入源程序;(3)编译运行源程序;(4)输入测试数据进行程序测试;(5)写出运行结果。本节小结:(3分钟)二维数组实现成绩表本次实验中的问题C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第5章函数5.1函数的定义和调用5.1.1函数定义5.1.2函数的调用5.1.3实参与形参数据传送1.教学内容:(1)函数的定义格式、空函数与无参函数;(2)函数调用格式;(3)函数的三种调用方式;(4)实参与形参数据传送,函数值传送的调用过程;(5)返回函数值的return语句。2.教学目的与要求:通过本节学习(1)理解C++中有关函数的概念;掌握自定义函数的定义格式;(2)初步掌握函数的三种调用方式;(3)理解函数调用中有关形参与实参的概念;(4)理解函数值传送的过程;(5)初步学会retuen语句的使用方法。教学重点教学难点1.重点(1)函数的定义格式与三种调用方式。(2)函数值传送的过程。2.难点(1)函数值传送的过程。使用教具多媒体教室课外作业备注授课主要内容或板书设计导入:(3分钟)1.c++程序的组成第5章函数5.1函数的定义和调用引例:f(x)=5x2+3x+1,由自变量x(=1)可求出函数值f(x)=f(1)=9。5.1.1函数定义定义格式:〔类型〕<函数名>(<形参表>){<语句序列>}(1)类型(2)函数名(3)形参表:<类型><形参1>,<类型><形参2>…无参函数的定义格式为:〔类型〕<函数名>(void){<语句序列>}【例5.1】无参函数的实例。(4)函数体{}:由一系列语句组成。空函数的定义格式为:〔类型〕<函数名>(void){}5.1.2函数的调用【例5.2】在主函数中调用标准函数sin(x)与自定义函数f(x)。函数调用格式为:<函数名>(<实参表>)实参表:实参1,实参2,…(1)说明:①实参为能求值的表达式②实参和形参的类型应兼容(2)函数执行次序:主函数→被调用函数→主函数(3)函数的调用关系(4)库函数(标准函数)(5)三种函数调用方式 ①函数调用语句:函数调用作为一个语句使用②函数表达式:函数调用出现在一个表达式中③函数参数:函数调用作为另一个函数的实参【例5.3】用自定义函数求三个整数的最大值。【例5.4】求任一整数n的阶乘。5.1.3实参与形参数据传送1.值传送(1)调用函数时,先为形参分配存储单元,后将实参值传递给形参;(2)函数执行过程中均为形参参与运算;(3)函数调用后,形参所对应的存储单元被释放,实参保持原来的值不变。【例5.5】定义变量交换函数swap(),将两个整型变量交换数据后输出。2.返回语句return(1)语句格式:return<表达式>;(2)作用:返回表达式的值,结束函数执行,并将控制转移到调用函数的地方继续执行。3.函数的原型说明(1)函数原型说明格式:<类型><函数名>(<形参表>);或<类型><函数名>(<形参类型说明表>);(2)作用:告诉编译程序,函数返回值的类型、参数个数和各参数类型。本节小结:(3分钟)函数的定义函数的调用及参数传递C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第5章函数5.2函数的嵌套调用和递归调用5.2.1函数的嵌套调用5.2.2函数的递归调用1.教学内容:(1)函数嵌套的概念;(2)函数嵌套调用的方法;(3)函数递归的概念;(4)函数直接递归种调用方式;(5)函数间接递归种调用方式;2.教学目的与要求:通过本节学习(1)理解函数嵌套的概念;(2)初步掌握函数的嵌套调用的使用方法;(3)初步理解函数递归调用的概念;(4)学会用递归方法解决简单递归问题;教学重点教学难点1.重点:(1)函数嵌套调用的方法;(2)函数递归种调用方法。2.难点:(1)函数递归种调用的概念;(2)汉诺塔问题的求解。使用教具多媒体教室课外作业思考题:5.5、5.13作业题:5.23、5.24、实验五(2)备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.函数的定义及调用2.值传递的特点5.2函数的嵌套调用和递归调用5.2.1函数的嵌套调用(1)函数不允许嵌套定义:即不允许在函数内再定义函数。(2)函数可以嵌套调用:即在被调用函数体内又调用另一个函数。【例5.7】编写C++程序,求组合数的值。5.2.2函数的递归调用定义:在函数体中出现直接或间接地调用该函数本身的调用关系称为函数的递归调用。1.直接递归直接递归:在函数f的定义过程中出现调用函数f。如图5.3所示。2.间接递归间接递归:在函数f1的定义过程中调用函数f2,而在函数f2的定义过程中又调用了f1函数。【例5.8】用递归法求n!。分析:用递归方法求n!的公式为: 1n=0n!= 1n=1 n*(n-1)!n>1在利用递归求值时,必须注意三点:(1)递归公式:n*(n-1)!(2)递归结束条件:n=0或1(3)递归约束条件:n≥03.递归两个阶段(1)递归阶段:将原问题不断分解为新的子问题,逐渐从未知向已知推进,最终达到已知的条件,即递归结束条件,此时递归阶段结束。(2)回推阶段:从已知的条件出发,按照递归的逆方向,逐一求值回推,最后达到递归的开始处,结束回推阶段,从而完成整个递回调用过程。【例5.9】用递归法求裴波那契数列的前20个数,要求每行输出4个数。分析:在利用递归求值时,首先应分析清楚递归公式、递归结束条件及递归约束条件:(1)裴波那契数列的递归公式为:1;n=1fib(n)=1;n=2fib(n-1)+fib(n-2);n>2(2)递归结束条件:n=1(3)递归约束条件:n≥1【例5.10】汉诺塔问题。有三根柱子A、B、C。设A柱上有n个盘,大盘在下小盘在上。将A柱的n个盘移到C上,每次移一个盘。在移动中,可以借助于任一根柱子,但必须保证三根柱子上的盘子都是大盘在下小盘在上。编程打印出移动盘子的步骤。本节小结:(3分钟)递归的三要素递归程序的编写C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第5章函数5.3数组作为函数参数5.3.1数组元素作函数实参5.3.2数组名作函数参数1.教学内容:(1)数组元素作函数实参;(2)数组名作函数参数及参数传送过程;(3)用自定义函数求一维数组的平均值;(4)用自定义函数求二维数组的最大值;(5)用自定义函数对数组排序。2.教学目的与要求:通过本节学习(1)理解数组元素作函数实参为值传送;(2)理解数组名作函数实参为传地址;(3)初步学会用自定义函数求解平均值、最大值与排序问题。教学重点教学难点1.重点(1)数组名作函数参数及参数传送过程。(2)用自定义函数求数组的平均值、最大值与排序问题。2.难点(1)数组名作函数参数及参数传送过程;(2)用自定义函数对数组排序问题使用教具多媒体教室课外作业作业题:5.14、5.26、5.27备注授课主要内容或板书设计上次课内容回顾:(3分钟)1.函数调用及参数传递5.3数组作为函数参数5.3.1数组元素作函数实参传送方式:值传送。【例5.11】定义显示变量值函数print(),用数组元素作函数实参,输出数组元素值。5.3.2数组名作函数参数(1)实参与形参:数组名(2)传送方式:传地址实参数组的首地址传送给形参数组,使形参数组与实参数组共用同一数组空间。数组名作函数参数时,实参和形参都应为数组名,此时,实参与形参的传送为“传地址”,所谓传地址是指在调用函数时,系统并没有给形参数组分配新的存储空间,而只是将实参数组的首地址传送给形参数组,使形参数组与实参数组共用同一数组空间。因此,函数中对形参数组的修改,就是对实参数组的修改。下面举例说明。【例5.12】编写求10个学生的平均成绩的函数,用数组名作为函数参数。在主函数中定义学生成绩数组,并输出10个学生成绩,调用函数求10个学生的平均成绩。说明:(1)用数组名作函数参数时,应该在主调函数和被调函数中分别定义数组;实参数组和形参数组的类型应一致;实参数组和形参数组的大小可以一致也可以不一致。(2)形参数组可不指定大小,在定义形参数组时,在数组名后面跟一个空的方括号,为了在被调函数中处理数组元素的需要,可以另设一个参数,传递数组元素的个数。(3)二维数组用作函数的参数时,可指定其行数和列数,或只指定列数不指定行数。【例5.13】找出3行4列的二维数组中的最大值。(4)应当注意,用数组名作函数参数时,不是把实参数组的值传递给形参数组,即不是“值传送”;而是把实参数组的起始地址传递给形参数组,这样两个数组就共同占用同一段内存空间,即“传地址”。这时,在执行函数时,形参数组中各元素的值如发生变化会使实参数组元素的值同时发生变化。在C++中,数组名就代表了数组的起始地址。【例5.14】用选择法对数组中的n个元素按升序排列,并输出结果。用选择法对n个数按从小到大的次序进行排序的方法是:先将n个数中最小的数与第1个数交换;再将n-1个数中最小的数与第2个数交换;……;如此重复n-1次,就完成了将所有的数按从小到大的次序排列。参数组array与实参数组a占用相同的内存空间,因此,在sort排序函数中,对形参array数组的排序就是对实参数组a的排序。本节小结:(3分钟)数组作为参数的参数传递方式数组排序C++程序设计教案教师姓名授课形式授课时数2授课日期授课班级授课章节名称及教学内容、目的、要求第5章函数实验6函数的程序设计实验1.实验内容:(1)分别用冒泡法(升序)、选择法(降序)、擂台法(升序)编写三个对一维数组进行排序的函数。再定义一个输出数组元素值的函数print()。在主

温馨提示

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

评论

0/150

提交评论