C++语言程序设计(上)ppt.ppt_第1页
C++语言程序设计(上)ppt.ppt_第2页
C++语言程序设计(上)ppt.ppt_第3页
C++语言程序设计(上)ppt.ppt_第4页
C++语言程序设计(上)ppt.ppt_第5页
已阅读5页,还剩236页未读 继续免费阅读

下载本文档

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

文档简介

C 语言程序设计 上 第1章计算机与程序设计第2章数据类型 运算符与表达式第3章输入和输出第04章控制结构第5章函数第6章数组第7章指针第9章链表第10章面向对象程序设计基本概念第11章类与对象第12章类和对象的使用第13章运算符重载第14章继承第15章多态性第16章文件和流第17章异常第18章模板 第1章计算机与程序设计 讲授内容 计算机系统的基本组成 工作原理程序设计的基本过程和方法程序设计语言基本概念及其发展历史结构化程序设计和面向对象程序设计方法典型的C 编程环境 开发过程和程序结构程序设计风格 1 1计算机系统概述 1 4 计算机系统机器系统能接收和存储信息能对数据进行处理和计算能输出结果计算机系统由硬件系统和软件系统组成硬件系统包括CPU 显示器 内存 硬盘 键盘等软件系统包括各种程序和文档 1 1计算机系统概述 2 4 计算机硬件 是软件实现的基础运算器 对数据进行算术运算和逻辑运算主存储器 存储二进制信息 与运算器 控制器等直接交换信息控制器 按程序的要求 控制计算机各功能部件协调一致地动作控制器 运算器 中央处理器中央处理器 主存储器 处理机 1 1计算机系统概述 3 4 计算机硬件 是软件实现的基础输入设备 将用户信息 数据 程序等 变换为计算机能识别和处理的信息形式输出设备 将计算机中二进制信息变换为用户所需要并能识别的信息形式辅助存储器 存储主存储器难以容纳 又为程序执行所需要的大量文件信息 1 1计算机系统概述 4 4 计算机软件 计算机系统中的指挥者系统软件 最靠近硬件 如编译程序和操作系统等支撑软件 支撑其它软件的开发和维护 如各种数据库管理系统 接口软件和工具组应用软件 用于特定应用领域 如财务管理系统上述分类是交叉和变化的一个软件可以在一个系统中是系统软件 在另一个系统中是支撑软件在同一系统中 一个软件可以既是系统软件 也是支撑软件 1 2程序设计基本概念 1 6 问题求解过程步骤问题定义 明确要解决的问题算法设计 把要求解的问题转化为计算机的解题步骤程序编码 对设计出来的算法实现进行编程实现测试和调试 发现和纠正程序中的错误 1 2程序设计基本概念 2 6 算法与程序算法 由有限个步骤组成的求解问题的方法算法的特点有穷性 执行有穷个步骤后必须终止确定性 每一个步骤必须是无二义的能行性 每一个步骤都可以在有限时间内做完输入 一般有输入信息输出 一般有一个或多个输出信息 1 2程序设计基本概念 3 6 算法的描述方式文字描述自然语言图形描述流程图 盒图 PAD图等程序语言描述计算机程序 如C 1 2程序设计基本概念 4 6 程序的组成数据数据结构 程序处理的数据操作处理数据的操作步骤 即算法程序 数据结构 算法 1 2程序设计基本概念 5 6 程序设计和程序编码先设计 后编码设计是基础 是编码的依据设计的好坏影响代码的质量 1 2程序设计基本概念 6 6 程序设计语言描述数据和对数据的操作机器语言用机器基本指令编码 二进制形式汇编语言使用一组助记符编码 需要汇编才能运行高级语言表示方法更接近于待解问题的表示方法 需要编译才能运行 1 3程序设计方法 1 4 结构化程序设计任何程序逻辑都可以用顺序 选择和循环三种基本结构表示 1 3程序设计方法 2 4 结构化程序设计自顶向下 逐步求精描述问题 分析问题 分解问题成相对独立的子问题 反复进行 逐步分解 描述子问题的数据和操作模块化原则尽量采用典型基本控制结构 顺序 选择 循环缺点 对于大型软件开发 稳定性低 可修改性和可重用性差 1 3程序设计方法 3 4 面向对象程序设计面向问题现实世界是由对象组成的问题由哪些对象组成 对象之间如何相互作用 结构化程序由函数组成 面向对象程序由对象组成易于扩展 可维护性好 1 3程序设计方法 4 4 面向对象分析和设计步骤找出问题中的对象和类确定每个对象应具备的属性和功能确定类 对象之间关系 相互作用的方式用程序代码实现这些对象和类 1 4C与C 1 3 C语言的历史起源于Algol60在Algol60的基础上发展出CPL语言1967年发展为BCPL 用于编写操作系统和编译器1970年贝尔实验室将BCPL改良成B 并用B语言实现了第一个UNIX操作系统1972年左右 DennisRitchie和KenThompson在贝尔实验室设计UNIX系统时 开发出了C语言之后 C语言发展出很多版本1988年 美国国家标准化协会 ANSI 制定了C的标准 ANSIC 1 4C与C 2 3 C语言的特点数据类型丰富运算符丰富 共34个运算符支持结构化程序设计方便 灵活 结合了高级语言的基本结构 语句和低级语言的实用性程序生成代码质量高 程序执行效率高可移植性好 可用于UNIX AIX WINDOWS等操作系统 1 4C与C 3 3 C 语言在C语言中引入了面向对象的思想是一种混合型的语言 同时支持结构化程序设计和面向对象程序设计方法兼容C语言 可不加修改地使用C语言代码允许数据抽象 支持封装 继承和多态等特征 1 5C 编程简介 使用IDE开发C 程序编辑 edit 预处理 preprocess 编译 compile 连接 link 装入 load 执行 execute 例子1 C 程序 输入一个人的姓名 然后输出 HELLO ex1 2 cpp 输入姓名 然后在屏幕输出问候信息 includeintmain charname 20 输出提示信息cout name 输入姓名 输出信息 并使用 n换行cout HELLO name n return0 指示程序运行 1 6程序设计风格 1 2 用好的设计方法编写结构好的程序提高程序的可读性 可理解性和可修改性 以利于程序查错 测试及维护程序员要养成良好的程序设计风格 1 6程序设计风格 2 2 注意点以简洁明了的方式编写C 程序缩排规则标识符命名规则注释输出信息直观清晰 布局合理 学习目的检测 了解计算机系统 程序设计语言 程序设计的基本概念掌握简单C 程序的结构明确程序设计风格的意义 作业 1 21 31 71 9 第2章数据类型 运算符与表达式 讲授内容 C 语言的基本元素 字符集和关键字基本的数据类型的表示方法常量和变量类型转换各种运算符与表达式 2 1C 的字符集和关键字 1 2 字符集由52个字母 10个数字 27个特殊字符组成所有C 程序 忽略换行符和字符串常量中的内容 都由字符集中的字符按一定规则构成 2 1C 的字符集和关键字 2 2 C 标识符是满足如下条件的一串字符由字母 a z A Z 或下划线 开头 其它部分可以由字母 下划线或数字 0 9 组成 只有前32个字符有效 C 的63个关键字也是标识符 但不能作其它用 保留字 2 2基本数据类型 1 5 C 程序中的每个数据对象 如2 x1 x1 2 都有确定的数据类型C 的数据类型包括基本数据类型和复合数据类型基本数据类型有整型 浮点型 字符型 布尔型不同数据类型有自己的取值范围和所允许的操作 2 2基本数据类型 2 5 整型signedshortint 简写为short signedint 简写为int signedlongint 简写为long unsignedshortint 简写为unsignedshort unsignedint 简写为unsigned unsignedlongint 简写为unsignedlong 2 2基本数据类型 3 5 浮点型float 浮点型 double 双精度型 longdouble 长双精度型 均有符号不允许的操作 取余 位运算等 2 2基本数据类型 4 5 字符型charsignedcharunsignedchar实质是占一个字节的整型数 小整数 允许的操作 和整型相同 2 2基本数据类型 5 5 布尔型bool值为true和false可以当作整数用 true一般为1 false为0 把其它类型的值转换为布尔值时 非零值转换为true 零值转换为false 2 3变量与常量 1 9 函数体说明语句类型名 变量 常量表达式执行语句表达式变量 常量 运算符 2 3变量与常量 2 9 扩充的巴克斯范式表示语法 全书统一 不涉及语义 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F u U l L 0 2 3变量与常量 3 9 扩充的巴克斯范式 0 0 0 x 0X 0 1 2 3 4 5 6 7 8 9 2 3变量与常量 4 9 扩充的巴克斯范式 e E f l F L 2 3变量与常量 5 9 扩充的巴克斯范式 字符集中除单引号 反斜线 外的任意字符 a b f n r t v x 2 3变量与常量 6 9 扩充的巴克斯范式 字符集中除双引号 反斜线 外的任意字符 其它可显示字符 2 3变量与常量 7 9 变量四要素 变量名 类型 存储空间 值必须先声明后使用 一般声明形式为 auto register static extern 2 3变量与常量 8 9 符号常量符号常量是经过定义的代表常量的标识符C 定义符号常量的格式如下 define define是C 的预处理指令 说明程序中的都代表了 2 3变量与常量 9 9 例子 definePRICE30 includemain intnum total num 10 total num PRICE cout total total endl return0 2 4类型转换 1 4 举例 int 3 14将3 14转换成整数3 double 3将3转换成双精度浮点数3 0double 3 将3转换成双精度浮点数3 0 2 4类型转换 2 4 提升规则将数值转换成较低的类型 如从float到int必须显式地使用类型转换 如 int 3 14 将数值转换成较高的类型可以通过隐式的类型转换 如3 14 2 2 4类型转换 3 4 隐式类型转换表达式中运算符的操作数类型与要求不符时 要进行隐式类型转换 使之符合要求隐式类型转换规则 1 表达式中如有char short和enum类型的数据时 自动将它们转换成int类型 2 把表达式中不同类型的数据转换成精度最高 占用内存最多的那个数据的类型在赋值表达式中 自动将赋值运算符右边表达式的值的类型转换成左边变量的类型 2 4类型转换 4 4 强制类型转换 显式类型转换 形式为 或 例如 double 3 2或double 3 2 double 3 2 或double 3 2 2 5运算符和表达式 1 11 运算符的优先级和结合性运算符包括 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符根据组成表达式的运算符的不同 表达式可以分为算术表达式 关系表达式 逻辑表达式 位运算表达式 逗号表达式和赋值表达式 2 5运算符和表达式 2 11 算术运算之一 一元算术运算 正 运算结果同操作数 负 运算结果为操作数的负数 自增运算符 操作数的位置 自减运算符 2 5运算符和表达式 3 11 算术运算之一 基本算术运算 二元 加法 运算结果为两个操作数的和 减法 运算结果为左操作数减去右操作数的差 乘法 运算结果为两个操作数的乘积 除法 运算结果为左操作数除以右操作数的商 求余 运算结果为左操作数除以右操作数的余数 只用于整型数据 其结果也是整型 2 5运算符和表达式 4 11 算术运算之一 基本算术运算两个整数作 运算 其结果为整数具体结果依赖于具体机器 一般为直接截去小数部分两个整数求余 如果两数都是正数 结果为正否则结果与左操作数的符号一致 MicrosoftC 2 5运算符和表达式 5 11 算术表达式 2 5运算符和表达式 6 11 关系运算 2 5运算符和表达式 7 11 逻辑运算 的优先级和结合性逻辑表达式的 短路计算法 慎用自增 自减 2 5运算符和表达式 8 11 位运算 操作数只能是整型或字符型数据 结果亦然符号位参加运算向右移位运算 但左操作数是负数时 高位填0或1 2 5运算符和表达式 9 11 逗号运算 二元运算 左结合先左后右计算表达式的值 取右表达式的值为运算结果逗号的左 右表达式作为逗号运算符的操作数 类型可以不同 2 5运算符和表达式 10 11 赋值运算 可以是由标识符表示的变量 也可以是数组元素或指针指向的存储空间 左值性质 赋值运算可用于变量初始化 运算符右边的表达式需编译时可计算 2 5运算符和表达式 11 11 条件运算符 三元运算运算符的操作数类型可以不同 学习目的检测 理解字符集 标识符和关键字的意义掌握基本数据类型的定义及不同数据类型之间的转换机制掌握各种常量的性质和定义掌握变量的声明方法熟练运用各种运算符与表达式 作业 2 8 2 10 2 11 2 12 2 14 2 15 2 16 2 18 2 19 第3章输入和输出 讲授内容 标准输入输出函数格式化输入输出函数通过流进行输入输出 3 1C 的输入和输出 两种I O方式保留自C的 通过标准的I O函数实现面向对象的 类型安全的 编译器对输入输出操作做严格的类型检查建议尽量使用面向对象的I O方式 3 2标准输入与输出函数 字符输入函数getcharintgetchar void 字符输出函数putcharintputchar intc 例子1 字符输入输出 ex3 1 cpp includeintmain chara a b b c c getchar putchar a putchar b putchar c putchar c putchar putchar 0101 putchar n return0 程序运行如果 sabcs A 3 3格式化输入输出 1 12 格式化输入函数scanf输入各种类型的数据 并存入相应的参数中读取输入流中的指定的字符跳过输入流中的指定的字符 3 3格式化输入输出 2 12 格式化输入函数scanfscanf 描述输入数据遵循的格式 可以包含3种类型的字符 格式指示符 空白字符 空格 Tab键和回车键 和非空白字符 普通字符 是存放数据的地址的列表 参数之间用 分隔 参数列表是一个地址列表scanf d f d 1234 5678 3 3格式化输入输出 3 12 scanf函数的格式指示符 是格式指示符的前导符 赋值抑制符 表示该格式指示符对应的数据读入后 不赋给相应的变量scanf d d d d 输入123456789 3 3格式化输入输出 4 12 scanf函数的格式指示符 宽度是任选项 为一整数n 指明了该输入数据长度为n 如果有多余的部分将被舍弃scanf 3c 3c ch1和ch2均为字符型变量 输入为 abcdefg 3 3格式化输入输出 5 12 scanf函数的格式指示符 转换说明符 3 3格式化输入输出 6 12 格式化输出函数printf指定浮点值保留的小数位数浮点值小数点对齐输出数据的右对齐和左对齐将直接字符插入到输出数据中将浮点数按照指数形式输出将整数按照八进制或十六进制形式输出按指定的域宽和精度输出数据 3 3格式化输入输出 7 12 格式化输出函数printfprintf 描述了输出数据的格式 可以包含3种类型的字符格式指示符 则被参数列表中相应的数据替换转义字符 按其含义输出相应的特殊符号普通字符 按照原样输出 3 3格式化输入输出 8 12 格式化输出函数printfprintf 存放输出数据的表达式列表 格式指示符的数量 顺序与输出参数相对应 printf函数执行时 从左到右依次处理格式控制串 遇到格式控制字符 先计算相应的输出参数表达式 然后将该参数的计算结果按照格式指示符指定的方式输出 3 3格式化输入输出 9 12 格式化输出函数printfprintf 中的格式指示符 其中 和可选 3 3格式化输入输出 10 12 格式化输出函数printf中的格式指示符 共五种不同的标志 3 3格式化输入输出 11 12 格式化输出函数printf中的格式指示符 域宽 指明了数据打印的宽度 如果数据实际长度小于域宽 则数据输出右对齐 如果数据实际长度大于域宽 系统自动突破域宽限制 按数据的实际长度输出 3 3格式化输入输出 12 12 中的格式指示符精度 对于整数 表示至少要打印的数字个数 如果数据长度小于精度 则左边补齐0 如果数据实际长度大于精度 则按数据实际长度输出 对于浮点数 如果转换说明符为e E和f 精度表示小数点后的有效位数 如果数据小数部分的长度小于精度 则在右边补齐0 否则按精度对数据进行舍入输出 如果浮点数的转换说明符为g和G 精度表示打印数据的最大的长度 对于字符串 精度表示字符串输出的最大长度 如果输出字符串长度小于精度 则按照字符串的实际长度输出 否则按精度截取输出字符串开头的n个字符 假设精度为n 输出 例子2 格式化输入输出例子 1 2 ex3 2 cpp 基本格式化输入和输出 includeintmain intnum1 floatnum2 charch2 intna nb nc nd ne nf ng doubleda db dc printf Basicinputandoutput n printf Inputachar aintandafloat scanf c d f 例子2 格式化输入输出例子 2 2 printf Pleaseentersevenintegers scanf d i i i o u x 3 4用流进行输入输出 1 3 通过I O流对象实现输入输出功能将实现数据传送操作的设备抽象成对象将 流 作为设备 如键盘 显示器等 和程序之间通讯的通道C 预定义的四个输入输出对象cout 标准输出设备 即显示器cin 标准输入设备 即键盘cerr和clog代表标准错误流对象 3 4用流进行输入输出 2 3 通过cout流输出数据cout cout cout WelcometoC n cout 123 456 123 456 endl 3 4用流进行输入输出 3 3 通过cin流输入数据cin cin 例子3 流输入输出例子 ex3 5 cpp includeintmain charc inti floatx y cout i x y c i cout c c ti i cout tx x ty y n return0 3 5流操纵算子 1 4 流操纵算子 为流输入输出提供格式化输入输出的功能常用的流操纵算子 3 5流操纵算子 2 4 设置整数基数将整数按十进制 八进制和十六进制等形式输出流操纵算子oct 将整数输出形式设置为八进制流操纵算子hex 将整数输出形式设置为十六进制流操纵算子dec 将整数输出形式设置为十进制 例子4 使用设置整数基数的流操纵算子 include includeintmain intn cout n cout n inhexadecimalis hex n endl dec n inoctalis oct n endl return0 3 5流操纵算子 3 4 设置浮点数精度流操纵算子setprecision和函数precision都可控制浮点数小数点后面的位数 例子5 使用设置浮点数精度的流操纵算子 ex3 7 cpp 设置浮点数精度的流操纵算子的使用 include include includeintmain doublelog2 log 2 0 intplaces cout log 2 withprecisions0 9 n Precisionsetbythe precisionmemberfunction endl for places 0 places 9 places cout precision places cout log2 n 例子5 使用设置浮点数精度的流操纵算子 cout nPrecisionsetbythe setprecisionmanipulator n 使用setprecision算子for places 0 places 9 places cout setprecision places log2 n return0 3 5流操纵算子 4 4 设置域宽函数width可以设置当前域宽 输入输出的字符数 如果输出的数据所需的宽度比设置的域宽小 空位用填充字符 省缺为空格 填充如果输出的数据所需的宽度比设置的域宽大 系统输出所有位流操纵算子setw也可以设置域宽 例子6 使用设置域宽的流操纵算子 ex3 8 cpp 设置域宽的流操纵算子的使用 include defineWIDTH5intmain intw 4 charstring WIDTH 1 cout string cout width w cout string endl cin width WIDTH return0 学习目的检测 掌握各种输入输出函数掌握通过I O流进行输入输出的方法 作业 3 83 13 第04章控制结构 讲授内容 顺序结构 表达式语句和复合语句选择结构 if语句 if else语句和switch语句循环结构 while语句 do while语句 for语句控制转移语句 continue语句 break语句及goto语句 4 1程序的基本控制结构 顺序结构 包括表达式语句和复合语句等选择结构 if语句 if else语句 switch语句循环结构 while语句 do while语句 for语句 其它 空语句 continue语句 break语句 goto语句 return语句 4 2顺序结构 1 3 表达式语句表达式 表达式语句示例 a a 3 赋值语句x y z 0 多重赋值语句t 2 t x a 逗号表达式语句z i j x x y 条件表达式语句f1 函数调用语句x1 exp x 函数表达式语句 计算exx2 pow x y 函数表达式语句 计算xy 4 2顺序结构 2 3 空语句空语句的形式如下 表达式语句和空语句示例 a a 3 赋值语句 空语句 4 2顺序结构 3 3 复合语句复合语句的语法 复合语句示例 a a 3 赋值语句x y z 0 多重赋值语句t 2 t x a 逗号表达式语句z i j x x y 条件表达式语句 例子1 计算圆的周长和面积 include include definePI3 14intmain doubleradius area radius 3 0 doubleperimeter perimeter PI 2 radius cout Perimeteris perimeter n area PI radius radius cout Areaofthecircleis area n return0 4 3选择结构 1 7 if语句if 可以是任意表达式 一般为逻辑表达式 if语句示例 if grade 60 cout passed n 4 3选择结构 2 7 if else语句if elseif else语句示例 if grade 60 cout Passed n elsecout Failed n 错 elsecout Failed n 4 3选择结构 3 7 if else语句if或if else的嵌套 if或if else中嵌套if或if elseif grade 90 printf A elseif grade 80 printf B elseif grade 70 printf C elseif grade 60 printf D elseprintf F 注意else和if的匹配 在if语句后面若直接跟else 则把if语句 else和其后的语句一起作为if else语句 4 3选择结构 4 7 if else语句if或if else的嵌套 if或if else中嵌套if或if elseif grade 60 if grade 100 printf AAA elseif grade 0 printf FFF 不等价于if grade 60 if grade 100 printf AAA elseif grade 0 printf FFF 4 3选择结构 5 7 if else语句复合语句应用示例if grade 60 printf Passed n else printf Failed n printf Doyoutakethiscourseagain y n cin answer 4 3选择结构 6 7 switch语句switch case case case default 多个case分支和可选的default分支的值为整数类型 int char 每个的最后一个语句一般为break语句 每个也可以为空 4 3选择结构 7 7 switch语句流程 例子2 用switch语句实现成绩转换 includeintmain intscore scorePhrase cout score if score 0 cout Thescoreisillegal return1 scorePhrase score 10 switch scorePhrase case9 cout Gradeis A endl break 例子2 用switch语句实现成绩转换 case8 cout Gradeis B endl break case7 cout Gradeis C endl break case6 cout Gradeis D endl break case0 case1 case2 case3 case4 case5 cout Gradeis E endl break default cout Thescoreisillegal endl return0 4 4循环结构 1 13 while语句while 4 4循环结构 2 13 while语句intproduct 2 while product 1000 product 2 product 例子3 while语句和switch语句的应用 计算各级成绩的人数 includeintmain intgrade intaCount 0 bCount 0 cCount 0 dCount 0 fCount 0 printf Enterthelettergrades n printf EnterEOFtoend n while grade getchar EOF switch grade case A case a aCount break 例子3 while语句和switch语句的应用 case B case b bCount break case C case c cCount break case D case d dCount break case F case f fCount break case n case break 例子3 while语句和switch语句的应用 default printf Incorrectlettergradeentered printf Enteranewgrade n break printf nTotalsforeachgradeare n printf A d n aCount printf B d n bCount printf C d n cCount printf D d n dCount printf F d n fCount return0 程序运行结果 Enterthelettergrades EnterEOFtoend ABCCADFCEIncorrectlettergradeentered Enteranewgrade DABTotalsforeachlettergradeare A 3B 2C 3D 2F 1 4 4循环结构 3 13 while语句典型应用1 计数控制循环循环反复执行 直到计数器达到特定的值 是定数循环 即循环次数是已知的 示例 计算10个学生的平均成绩 例子4 计算10个学生的平均成绩 includeintmain intcounter grade total average total 0 counter 1 while counter 10 printf Entergrade scanf d 程序运行结果 Entergrade 98Entergrade 76Entergrade 71Entergrade 87Entergrade 83Entergrade 90Entergrade 57Entergrade 79Entergrade 82Entergrade 94Classaverageis81 4 4循环结构 4 13 while语句典型应用2 条件控制循环问题能计算任意个数学生的平均成绩学生人数未知 是不定数循环程序如何结束 使用条件控制当用户输入信号量 标记值 时 循环结束信号量不能和一般数据混淆 特殊数据 例子5 计算N个学生的平均成绩 includeintmain floataverage intcounter grade total total 0 counter 0 printf Entergrade 1toend scanf d 例子5 计算N个学生的平均成绩 terminationphase if counter 0 average float total counter printf Classaverageis 2f average elseprintf Nogradeswereentered n return0 程序运行结果 Entergrade 1toend 75Entergrade 1toend 94Entergrade 1toend 97Entergrade 1toend 88Entergrade 1toend 70Entergrade 1toend 64Entergrade 1toend 83Entergrade 1toend 89Entergrade 1toend 1Classaverageis82 50 4 4循环结构 5 13 do while语句dowhile 4 4循环结构 6 13 do while语句示例1intcounter 1 doprintf d n counter while counter 10 打印整数1到10 4 4循环结构 7 13 do while语句示例2intcounter 1 sum 0 dosum sum counter while counter 100 counter sum 4 4循环结构 8 13 计数控制的循环举例intcounter 1 初始化while counter 10 重复条件printf d n counter counter 递增 或intcounter 0 初始化while counter 10 printf d n counter 4 4循环结构 9 13 for语句for 4 4循环结构 10 13 for语句例子1intcounter for counter 1 counter 10 counter printf d n counter 4 4循环结构 11 13 for语句例子2intcounter for counter 1 counter 10 counter printf d n counter 打印整数1到10 4 4循环结构 12 13 for语句例子3inti j for i 0 j 0 j i 10 j i printf d n j i 4 4循环结构 13 13 for语句和while语句的关系若中不含continue语句 则for 等价于 while 例子6 2到100的偶数求和 for循环求和 includeintmain intsum 0 number for number 2 number 100 number 2 sum number printf Sumis d n sum return0 4 5控制转移语句 1 4 break语句break 只能用于循环体或switch语句中 使程序控制退出while for do while或switch结构程序执行这些语句的后继语句break语句的用途提早退出循环跳出switch结构 4 5控制转移语句 2 4 continue语句continue 只能用于循环体中 跳过while for或do while循环体中的剩余语句程序开始执行下一次循环while和do whilecontinue语句执行后 马上测试循环条件for语句continue语句执行后 计算递增表达式 然后测试循环条件 例子7 在for循环结构中使用break语句 includeintmain intx for x 1 x 10 x if x 5 break printf d x printf nBrokeoutofloopatx d n x return0 例子8 在for循环结构中使用continue语句 includeintmain intx for x 1 x 10 x if x 5 continue printf d x printf nUsedcontinuetoskipprintingthevalue5 n return0 4 5控制转移语句 3 4 goto语句goto 使程序控制转移到前面带有 的语句继续执行是一个非关键字标识符 和goto 必须出现在同一个函数体中 不能重复出现 4 5控制转移语句 4 4 return语句return 或return 在主函数体中执行return语句 使整个程序结束在其它函数体中执行return语句 返回到调用函数的相应位置继续执行 学习目的检测 掌握利用复合机制编写较复杂类的方法理解this指针的作用 原理 了解类和对象的实现机制掌握使用this指针编写能连续调用的成员函数的方法掌握const对象和const成员函数的定义和使用方法掌握编写友元函数的方法掌握友元类的用法 作业 4 64 74 84 114 12 第5章函数 讲授内容 函数的定义和函数原型函数调用和参数传递机制函数重载存储类别和作用域递归函数设计和函数的递归调用类的复合预处理指令 5 1模块化程序设计 1 3 复杂问题一般可以分解为若干稍简单的问题每个问题的解决对应一个模块的求解解决复杂问题的系统一般由逐级抽象的诸模块组成每个模块是一个类或函数 5 1模块化程序设计 2 3 函数是C 程序构成的基础任何C 程序至少包含一个函数 main 函数函数也是类的方法的实现手段函数的作用实现系统中按功能分解的各小任务实现类对象的方法C 程序的设计最终都落实到一个个函数的设计上 5 1模块化程序设计 3 3 函数是C 源程序的基本模块C 中的函数包括两类 预定义函数 C 提供了丰富的库函数 程序员可以在自己的程序中直接使用用户自定义函数 用户根据需要编写的函数一个C 程序可包含多个文件 一个文件可包含多个函数 5 2预定义函数的使用 1 2 C 提供了丰富的库函数 这些库函数的声明都放在相应的头文件中要使用这些库函数 必须先包括相应的头文件 然后直接使用例如 数学运算函数的声明包含在math h中 要使用这些函数 程序中必须加上代码 include 5 2预定义函数的使用 2 2 函数调用的一般过程先计算实参表达式的值然后将计算的结果交给被调用函数再执行被调用函数的代码 直至返回语句return或到函数尾最后程序控制返回到函数的调用处 继续执行printf 2f sqrt 900 0 的执行过程以900 0为参数调用sqrt函数 得到返回结果30 0以 2f 和30 0为参数调用printf函数 实现格式化输出 5 3函数定义与函数原型 函数模块化所有在函数体中说明的变量都是局部变量仅在定义的函数中有效参数函数间传递信息局部变量 5 3函数定义与函数原型 函数的优点分而治之有利于程序开发避免代码重复软件重用重用已有的函数来构造新的程序抽象 隐蔽内部的细节 例子1 函数举例 includeintmaximum int int int functionprototype intmain inta b c printf Enterthreeintegers scanf d d d 例子2 函数举例 includeintmaximum int int int intmain inta b c max printf Enterthreeintegers scanf d d d 例子3 函数举例 includeintmaximum intx inty intz intmax x if y max max y if z max max z returnmax intmain inta b c max printf Enterthreeintegers scanf d d d 例子4 函数举例 includevoidmaximum int int int intmain inta b c max printf Enterthreeintegers scanf d d d isnotnecessary 例子5 函数举例 includevoidmaximum intx inty intz intmax x if y max max y if z max max z printf Maximumis d n max return isnotnecessary intmain inta b c max printf Enterthreeintegers scanf d d d 例子6 函数举例 includeintmaximum intx inty intz intmax x if y max max y if z max max z printf Maximumis d n max return0 necessary intmain inta b c max printf Enterthreeintegers scanf d d d 例子7 函数举例 includevoidmaximum int isnotnecessary 例子8 函数举例 includevoidmaximum int isnotnecessary 例子9 函数举例 includevoidmaximum int int int intmain inta b c max printf Enterthreeintegers scanf d d d isnotnecessary 例子10 函数举例 includevoidswap intx inty inttemp temp x x y y temp main intx 10 y 20 swap x y cout x x y y endl return0 例子11 函数举例 includevoidswap int 例子12 函数举例 includeinlinevoidmaximum intx inty intz intmax x if y max max y if z max max z printf Maximumis d n max return isnotnecessary intmain inta b c max printf Enterthreeintegers scanf d d d 例子13 函数举例 includevoidmaximum intx inty 0 intz 0 intmax x if y max max y if z max max z printf Maximumis d n max return isnotnecessary intmain inta b c max printf Enterthreeintegers scanf d d d 例子14 函数举例 错误 includevoidmaximum intx inty 0 intz 0 intmax x if y max max y if z max max z printf Maximumis d n max return isnotnecessary voidmaximum intx inty intmain inta b c max printf Enterthreeintegers scanf d d d 例子15 函数举例 includeintsquare char longsquare int doublesquare double intmain charc 127 inti 1000 doubled 3 1415926 cout Thesquareofcharinteger int c is square c endl cout Thesquareofinteger i is square i endl cout Thesquareofdouble d is square d endl return0 intsquare charx returnx x longsquare intx returnx x doublesquare doublex returnx x 5 3函数定义与函数原型 函数定义格式返回值类型说明函数名标识符 形式参数定义 语句序列 0 n个语句 返回值类型说明 省缺是intvoid 函数没有返回值形式参数定义 用逗号分隔的参数说明列表说明了每个形式参数的名字 类型以及函数调用时的参数传递方式 无参数则为空或void 语句序列 构成函数体语句序列中的return语句用于从函数中返回 5 3函数定义与函数原型 函数原型函数名参数类型 函数的各形式参数类型 所带参数名被忽略可定义默认参数返回值类型 函数返回值的数据类型 省缺是int 原型仅在函数先调用后定义时用 向前引用 5 4函数的调用 1 3 调用函数时一般要传递参数传值和传引用传值把实在参数的值传递给函数的形式参数函数的执行对实在参数没有影响函数不需要修改实在参数时 用传值方式避免意外改变 5 4函数的调用 2 3 传引用把实在参数的地址传递给函数的形式参数函数的执行可以改变实在参数函数确实需要修改实在参数时 用传引用方式要求实在参数有 左值性质 5 4函数的调用 3 3 默认参数 例子13 例子14 内联函数 例子12 5 5函数重载 例子15 C 允许定义多个同名函数表示类似的操作 函数重载这些函数必须有不同的参数 参数的个数 类型或顺序不同 调用重载函数时 编译器通过检查实在参数的个数 类型和顺序来确定相应的被调用函数intabs inti longabs longl doubleabs doubled 5 6存储类别和作用域 1 9 auto register extern static存储期 在内存中的存在期作用域 在程序中可以引用该变量的区域连接 变量在哪些源文件中能够被识别 最近嵌套原则 5 6存储类别和作用域 2 9 自动存储在定义的块中建立 存在和撤销auto 局部变量 包括形式参数 的省缺说明符autodoublex y register 为变量分配高速寄存器只能用于auto变量registerintcounter 1 5 6存储类别和作用域 3 9 静态存储变量在整个程序运行期间都存在省缺值为0sta

温馨提示

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

评论

0/150

提交评论