C语言与程序设计大学教程(上)ppt.ppt

上传人:za****8 文档编号:20689380 上传时间:2021-04-13 格式:PPT 页数:296 大小:1.50MB
收藏 版权申诉 举报 下载
C语言与程序设计大学教程(上)ppt.ppt_第1页
第1页 / 共296页
C语言与程序设计大学教程(上)ppt.ppt_第2页
第2页 / 共296页
C语言与程序设计大学教程(上)ppt.ppt_第3页
第3页 / 共296页
资源描述:

《C语言与程序设计大学教程(上)ppt.ppt》由会员分享,可在线阅读,更多相关《C语言与程序设计大学教程(上)ppt.ppt(296页珍藏版)》请在装配图网上搜索。

1、太原工业学院计算机工程系 2021/1/27 1 C语言与程序设计大学教程 (上 ) 太原工业学院计算机工程系 2021/1/27 2 第 1章 面向对象程序概述 第 2章 对象属性的数据描述 第 3章 预处理与语句 第 4章 数组 太原工业学院计算机工程系 2021/1/27 3 第 1章 面向对象程序概述 教学主要内容 面向对象程序设计的基本思想 C+程序的结构特征 VC+的上机过程( C+程序的实现) 重点与难点 C+程序的结构特征 C+程序的实现 太原工业学院计算机工程系 2021/1/27 4 第 1章 C+语言概述 教学目标 掌握简单 C+程序的构成 熟练掌握 C+的书写格式 了解

2、面向对象的程序设计的概念 熟悉 VC+的上机过程 太原工业学院计算机工程系 2021/1/27 5 第 1章 C+语言概述 1.1 程序设计方法的发展历程 1.2 面向对象的基本思想 1.3 C+程序的特点 1.4 C+程序的结构特征 1.5 C+程序的实现 太原工业学院计算机工程系 2021/1/27 6 1.1 程序设计方法的发展历程 面向过程的结构化程序设计 采用模块分解与功能抽象,自顶向下,分而治 之。以服务(功能)为中心。 优缺点:复杂的任务分解成子任务 ;可重用性 差。 面向对象的程序设计 以数据为中心,数据相对于功能而言,具有更 强的稳定性 。代码重用。 太原工业学院计算机工程系

3、 2021/1/27 7 C+与 C语言的关系 与 C语言兼容 C+对 C语言作了很多改进 增加了新的运算符 增加了引用的概念,引用做参数很方便 允许函数重载 引进内联函数,提高了效率 对变量的说明更灵活 C+与 C的本质差别(类与对象) 太原工业学院计算机工程系 2021/1/27 8 1.2 面向对象程序设计的基本思想 面向对象方法是开发计算机软件的一种方法。 这种方法比面向过程的方法可提高可用性,适用 于图形界面的使用,减少模块间的依赖关系,有 利用程序的调试和修改。该方法是一种采用了类、 对象、继承和多态等新概念的新方法。 将数据及对数据的操作方法封装在一起,作为 一个相互依存、不可分

4、离的整体 对象。对同 类型对象抽象出其共性,形成类。 太原工业学院计算机工程系 2021/1/27 9 1.2 面向对象程序设计的基本思想 1.对象 对象是包含现实世界物体特征的抽象实体, 它反映了系统为之保存信息和(或)与它交互的 能力。它是一些属性及服务的一个封装体。 对象 =数据 +作用于这些数据上的操作 对象一般可以表示为: 属性 +行为 。 太原工业学院计算机工程系 2021/1/27 10 1.2 面向对象程序设计的基本思想 现实世界中的对象一般具有以下特性: ( 1)每一个对象必须有一个名字以区别于其他对 象。 ( 2)用属性来描述对象的某些特征。 ( 3)有一组操作,每个操作决

5、定对象的一种行为。 对象是描述客观事物的一种实体。它可以是 有形的(比如一辆汽车),也可以是无形的(比 如一项计划)。是构成世界的一个独立单位。 太原工业学院计算机工程系 2021/1/27 11 1.2 面向对象程序设计的基本思想 2.类 类是具有相同操作功能和相同的数据格式(属 性)的对象的集合。 在面向对象程序设计中,类是具有相同属性数 据和操作的对象的集合,它是对一类对象的抽象 描述。类是创建对象的模板,它包含着所创建对 象的状态描述和方法的定义,一般是先声明类, 再由类创建其对象。按照这个模板创建的一个个 具体的实例,就是对象。 太原工业学院计算机工程系 2021/1/27 12 1

6、.2 面向对象程序设计的基本思想 3.封装 封装是指将对象的属性和行为结合成为一个独 立的封装体。把对象的属性和服务结合成一个独立 的系统单位。 封装是一种数据隐藏技术,在面向对象程序设 计中可以把数据和与数据有关的操作集中在一起形 成类,将类的一部分属性和操作隐藏起来,不让用 户访问,另一部分作为类的外部接口,用户可以访 问。类通过接口与外部发生联系,用户只能通过类 的外部接口使用类提供的服务,而内部的具体实现 细节则被隐藏起来,对外是不可见的。 太原工业学院计算机工程系 2021/1/27 13 1.2 面向对象程序设计的基本思想 4.继承 继承反映了一般类和特殊类之间的关系,它是 面向对

7、象方法的重要特性。继承对于软件复用有着 重要意义,是面向对象技术能够提高软件开发效率 的重要原因之一。 在面向对象程序设计中,继承是指新建的类从 已有的类那里获得已有的属性和操作。已有的类称 为基类或父类,继承基类而产生的新建类称为基类 的子类或派生类。由父类产生子类的过程称为类的 派生。 太原工业学院计算机工程系 2021/1/27 14 1.2 面向对象程序设计的基本思想 5.多态性 多态性是指相同的函数名可以有多个不同的函 数体,即一个函数名可以对应多个不同的实现部分。 在调用同一函数时,由于环境的不同,可能引发不 同的行为,导致不同的动作。 例如: 数的加法 实数的加法 复数的加法 太

8、原工业学院计算机工程系 2021/1/27 15 1.4 C+程序的结构特征 1.4.1 C+程序实例 【 实例 1-1】 #include /包含头文件 iostream int main() cout“welcome to C+!n” ;/流插入运算符 return 0; /退出函数的方式之一 太原工业学院计算机工程系 2021/1/27 16 1.4.1 C+程序实例 【 实例 1-2】 已知一个圆的半径 r,求圆的面积。 /ex1_2.cpp /源程序文件名称 #include /包含头文件 iostream void main() float r,area; cout“input r

9、=” ; /r; /流提取操作符,输入半径 r area=3.1415926*r*r; /计算圆面积 cout“area=“areaendl; /输出圆面积 太原工业学院计算机工程系 2021/1/27 17 1.4.1 C+程序实例 【 实例 1-3】 已知一个圆的半径 r,求圆的面积。 #include float area(float ); #define PI 3.14159 void main() float r,s; float area(float r); cinr; s=area(r); cout“s=”sendl ; float area(float r) float s1;

10、 s1=PI*r*r; return s1; 太原工业学院计算机工程系 2021/1/27 18 1.4.1 C+程序实例 【 实例 1-4】 定义一个学生类,输出学号和成绩。 #include / 预处理命令 class Student / 声明一个类 Student private: / 以下为类中的私有部分 int num; int score; public: / 以下为类中的公用部分 void setdata( ) / 定义公用函数 cinnum; cinscore; / 定义公用函数 display void display( ) coutnumendl; coutscore是 C

11、+的流提取操作符, 是 C+的 流插入操作符。 太原工业学院计算机工程系 2021/1/27 23 1.4.3 C+程序的书写规则 1. 对齐规则 同一层次的语句应该从同一列开始书写; 2. 缩进规则 不同层次的语句应该从不同列开始书写,形成缩进 格式; 3. 严格区分字母的大小写。 4. 有足够的注释。 太原工业学院计算机工程系 2021/1/27 24 1.5 C+程序的实现 开发过程: 1. 用户需求分析 2. 算法设计 3. 编写代码( C+程序 .cpp) 4. 编译源程序,生成目标程序 .obj 5. 连接成可执行文件 .exe 6. 调试运行 7. 分析结果 太原工业学院计算机工

12、程系 2021/1/27 25 开 发 过 程 太原工业学院计算机工程系 2021/1/27 26 VC+程序的上机过程 1. 熟悉 VC+的 IDE 2. 掌握创建一个 C+程序的过程 例 1: 已知一个圆的半径 r,求圆的面积。 例 2:已知,三角形的三边长,求三角形的面积。 太原工业学院计算机工程系 2021/1/27 27 小结 1. 熟练掌握 C+的程序构成及其书写规则 2. 熟悉 VC+的 IDE界面 作业 P13 1、 2 预习第 2章 太原工业学院计算机工程系 2021/1/27 28 第 2章 对象属性的数据描述 教学主要内容 标识符的命名规则 基本数据类型( int flo

13、at double char) 常量、 变量的概念 运算符与表达式 太原工业学院计算机工程系 2021/1/27 29 第 2章 对象属性的数据描述 重点、难点 基本数据类型 基本运算符的运算规则和运算符的优先级、 结合性 表达式求值 太原工业学院计算机工程系 2021/1/27 30 第 2章 对象属性的数据描述 教学目标 熟练掌握标识符、关键字的概念 熟练熟练掌握 C+基本数据类型 熟练掌握变量的概念 掌握基本运算符及其优先级和结合性 掌握表达式求值运算 太原工业学院计算机工程系 2021/1/27 31 第 2章 对象属性的数据描述 2.1 C+语言字符集 2.2 数据类型 2.3 常量

14、变量 2.4 运算符及表达式的计算 2.5 表达式中数据类型的转换 太原工业学院计算机工程系 2021/1/27 32 2.1 C+语言的字符集 2.1.1 C+语言的字符集 ( 1)大小写的英文字母: A Z, a z ( 2)数字字符: 0 9 ( 3)特殊字符:空格 ! # % . , () 太原工业学院计算机工程系 2021/1/27 33 2.1 C+语言的字符集 2.1.2 C+语言的词法记号 1.关键字 ( keyword) 关键字又称为保留字,它是系统预先定义 的、具有特定含义的标识符。例如: int main 2.标识符 标识符是由若干个字符组成的字符序列, 用来命名程序中的

15、一些实体。例如:常量、变量、 函数、类、对象等。 太原工业学院计算机工程系 2021/1/27 34 ( 1) 标识符由字母 ( a z, A Z) 、 数字 ( 0 9) 或 下划线 ( _) 组成 。 ( 2) 第一个字符必须是字母或下划线 。 例如 , eg1, Birthday, My_Message, _Mychar, thistime是合法的标 识符; 8key, b-milk, -home是非法的标识符; ( 3) 理论上标识符的长度可以任意长 , 但实际应用中有 效长度与 C+编译器有关 。 ( 4) C+标识符对大小写字母是敏感的 , 即大小写字母 被认为是两个不同的标识符

16、。 例如 , book和 Book被认为 是两个不同的标识符 。 ( 5) 关键字不能作为新的标识符在程序中使用 , 但标识 符中可以包含关键字 。 例如 , intx, myclass 是合法的标 识符 。 太原工业学院计算机工程系 2021/1/27 35 3. 标点符号 ( 具有语法意义 ) ( 1) 空格符:单词之间的分隔符 。 ( 2) , 数据之间的分隔符 。 ( 3) ;语句结束符号 。 ( 4) :语句标号 ( 5) 字符常量 ( 6) “ 字符串常量 ( 7) ( ) ( 8) 语句块标记 太原工业学院计算机工程系 2021/1/27 36 2.2 数据类型 2.2.1 数据

17、类型概述 C+语言的数据类型非常丰富。 空 类型 (void) 基本数据类型 派生类型 指针类型 引用类型 太原工业学院计算机工程系 2021/1/27 37 短整型 (short int) 整型 (int) 长整型 (long int) 字符型 (char) 单精度型 (float) 双精度型 (double) 长双精度型 (long double) 布尔型 (bool) 枚举类型 (enum) 数组类型 结构体类型 (struct) 共用体类型 (union) 类类型 (class) 数 据 类 型 基 本 类 型 整 数 类 型 浮 点 型 构 造 类 型 指针类型 引用类型 空类型(

18、void) 太原工业学院计算机工程系 2021/1/27 38 浮点类型( float(6位 ), double(15 位 )) 整数类型 ( int) 字符类型( char) 2.2.2 基本数据类型 太原工业学院计算机工程系 2021/1/27 39 修饰符 ( 允许在整数 、 字符或浮点类型前面 加 ) : short, 表示短类型 long, 表示长类型 signed, 表示有符号类型 unsigned, 表示无符号类型 例如: long int 太原工业学院计算机工程系 2021/1/27 40 整数类型 存储空间 /字节 取值范围 short int 2 -3276832767 s

19、igned short int 2 -3276832767 unsigned short int 2 065535 int 4 -21474836482147483647 signed int 4 -21474836482147483647 unsigned int 4 04294967295 long int 4 -21474836482147483647 signed long int 4 -21474836482147483647 unsigned long int 4 04294967295 1. 整 数 类 型int 太原工业学院计算机工程系 2021/1/27 41 太原工业学院计

20、算机工程系 2021/1/27 42 字符类型 存储空间 /字节 取值范围 char 1 -128127 signed char 1 -128127 unsigned char 1 0255 2. 字符类型( char) 太原工业学院计算机工程系 2021/1/27 43 3. 浮点类型( float、 double) 浮点类型 存储空间 /字节 取值范围 有效数字 /位 float 4 -3.4 10383.4 1038 6 double 8 -1.7 103081.7 10308 15 long double 8 -1.7 103081.7 10308 15 太原工业学院计算机工程系 20

21、21/1/27 44 4. 空类型 ( void) void类型描述了有关值的空集 。 变量不 能声明为 void类型 。 它主要用于声明没有返回 值的函数 , 以及声明未确定类型或指向任意 数据类型的指针 。 太原工业学院计算机工程系 2021/1/27 45 2.3 常量和变量 2.3.1 常量 常量是指在程序运行的整个过程中始终保持 不变的量。 太原工业学院计算机工程系 2021/1/27 46 常量 1. 整型常量 例: 126, 0126(八进制), 0 x126(十六进制) 2. 浮点型常量 定点数表示法 : 2.71828f 2.36 指数表示法 : 3.6E2 1e-10 3.

22、 字符型常量: a, A 转义字符常量 太原工业学院计算机工程系 2021/1/27 47 转义字符类型 转义字符序列 ASCII码表示 描述 控制字符 a BEL 响呤,报警 b BS 退格 f FF 换页 n NL 换行 r CR 回车 t HT 横向制表 v VT 纵向制表 字符符号 单引号 “ “ 双引号 ? ? 问号 反斜杠 ooo ooo 八进制数 xhh hh 十六进制数 0 NUL 空字符 太原工业学院计算机工程系 2021/1/27 48 常量 字符数据在内存中的存储形式及其使用方法 太原工业学院计算机工程系 2021/1/27 49 常量 【例 2.1 】将字符赋给整型变量

23、。 #include void main( ) int i,j; /i和 j是整型变量 i=A; /将一个字符常量赋给整型变量 i j=B; /将一个字符常量赋给整型变量 j couti,jn; /输出整型变量 i和 j的值, 太原工业学院计算机工程系 2021/1/27 50 常量 【例 2.2 】字符数据与整数进行算术运算。 #include int main( ) char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; coutc1 c2endl; return 0; 太原工业学院计算机工程系 2021/1/27 51 常量 4. 字符串常量 例: Thi

24、s is a C+ Program.n T T0 T T 字符串 字符 字符 字符串 存 储 方 式 太原工业学院计算机工程系 2021/1/27 52 常量 【例 2.3 】 字符串常量示例。 #include void main( ) char c1,c2; c1=C; c2=+; coutc1c2+endl; coutC+ Program!endl; 太原工业学院计算机工程系 2021/1/27 53 5. 符号常量 为了编程和阅读的方便,在 C+程序设计中 ,常用一个符号名代表一个常量,称为符号常 量,即以标识符形式出现的常量。 【例 2.4 】 #include #define PR

25、ICE 30 /注意这不是语句,末尾不要加分号 void main ( ) int num,total; num=10; total=num * PRICE; couttotal=totalendl; 太原工业学院计算机工程系 2021/1/27 54 2.3.2 变量 变量是指在程序运行过程中可以修改的量。 常量与变量的区别: ( 1) 常量不在内存中占有编译空间; ( 2)常量的值不能修改。 太原工业学院计算机工程系 2021/1/27 55 变量 1.变量的声明(定义) 【格式】 ; int number1, number2, number3; float total,sum; 【 说明

26、 】 变量可以在引用之前的任何地方声明 。 变量声明后 , 系统会根据变量的类型为其分配相 应大小的存储空间 。 太原工业学院计算机工程系 2021/1/27 56 变量 2. 变量的初始化 float x=1.26; char ch1=a; int count=6; 太原工业学院计算机工程系 2021/1/27 57 变量 3. const型变量 ( 常变量 ) const double pi=3.1415926; /声明一个双精度型变量 const float e=2.71828f; /声明一个单精度型变量 const int n=2*10; /声明一个整型变量 const float x

27、=sin(3.14/3); /出错,表达式中用了函数 /const型变量用于不需要修改变量内容的场合。下面的声 明语句是错误的。 const double pi; pi=3.1415926; 太原工业学院计算机工程系 2021/1/27 58 short unsigned short 2字节 int、 unsigned int 4字节 Long unsigned long 4字节 整型变量 【例 2.5】 整型数据示例。 整型变量定义 #include void main(void) const int PRICE=30; int num,total; float v ,r,h; num=10

28、; total=num*PRICE; couttotal endl; r=2.5; h=3.2; v=3.14159*r*r*h; coutv endl; const常量 太原工业学院计算机工程系 2021/1/27 59 #include void main(void) const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; couttotalendl; r=2.5; h=3.2; v=3.14159*r*r*h; coutvendl; 实型常量 float 4字节 3.4 10 38 6位有效数字

29、double 8字节 1.7 10 308 15位有效数字 long double 8字节 1.7 10 308 15位有效数字 缺省为 double型 后缀 F( 或 f) 为 float型 后缀 L( 或 l) 为 long double 型 【例 2.6 】 实型数据示例。 实型变量 太原工业学院计算机工程系 2021/1/27 60 【例 2.7 】 不同类型数据应用实例。 #include void main() const int n=6; float x=5.26f; char ch1=m; int count; count=n; coutn=nendl; coutx=xendl

30、; coutch1=ch1endl; coutcount=countendl; 结果 n=6 x=5.26 ch1=m count=6 太原工业学院计算机工程系 2021/1/27 61 运算符也称为操作符 。 C+语言定义了丰富的运算符 。 这些运算符按所要求的操作数的多少 , 可分为单目运算符 、 双目运算符和三目运算符 。 按运算符的运算性质又可分为 算术运算符 、 关系运算符 、 逻辑运算符等 。 可以从以下几个方面来学习和理解 C+的运算符: ( 1) 运算符的功能 ; ( 2) 运算对象; ( 3) 运算符的优先级; ( 4) 运算符结合性 。 2.4 运算符与表达式的计算 太原工

31、业学院计算机工程系 2021/1/27 62 2.4.1 算术运算符与 算术表达式 算术运算符 功能 结合性 目 + 正号 右结合 单目 - 负号 右结合 单目 * 乘法 左结合 双目 / 除法 左结合 双目 % 模运算 左结合 双目 + 加法 左结合 双目 - 减法 左结合 双目 太原工业学院计算机工程系 2021/1/27 63 算术表达式 由算术运算符 、 位操作运算符和操作对象 组成的序列称为算术表达式 , 算术表达式返回 整型或浮点型值 。 当除法运算符 ( /) 作用于两个整型操作 对象时 , 表达式返回一个整数 , 否则返回一个 浮点数;模运算符 ( %) 要求两个操作对象必 须

32、是整数 。 太原工业学院计算机工程系 2021/1/27 64 算术表达式示例 (1+x)/(3*x) (2*x-3)*x+2)*x)-5 3.14*sqrt(r) b*b-4.0*a*c 26/3 /结果为 8 26/3.0 /结果 8.666667 26%3 /结果为 2 太原工业学院计算机工程系 2021/1/27 65 【例 2.8 】 算术表达式示例 #include void main() int number=56,nut=-3; float rear=-3.0f,r1,r2,r3; r1= number/nut; r2= number/rear; r3= number%nut;

33、 coutr1r2r3endl; 结果 56/-3=-18 56/ - 3 . 0 = - 18.6667 56%-3=2 太原工业学院计算机工程系 2021/1/27 66 自增、自减运算符 自增、自 减运算符 功能 结合性 目 + 自加 1 右结合 单目 - 自减 1 右结合 单目 太原工业学院计算机工程系 2021/1/27 67 自增、自减运算符 设: n 6 ( 1) +n:先使 n的值增加 1,然后将其加 1后的 值 7作为表达式的值 ; ( 2) n+:表达式的值为没有修改前 n的值 6, 然后使 n的值增加 1,即 n=7; ( 3) n-:表达式的值为没有修改前 n的值 6,

34、然 后使 n的值减 1,即 n =5; ( 4) -n:先使 n的值减 1,然后将其减 1后的值 5 作为表达式的值 ; 太原工业学院计算机工程系 2021/1/27 68 【例 2.9 】 自增、自减运算符示例 #include void main() int count,result1,result2,result3,result4; count=9; result1=+count; result2=count+; result3=-count; result4=count-; coutresult1countendl; coutresult2count endl; coutresult3

35、count endl; coutresult4count endl; 太原工业学院计算机工程系 2021/1/27 69 自增、自减运算符 【 注意 】 自增 、 自减运算符要求操作对象必须是 左值 。 前缀增量或减量表达式返回的值为操作对 象修改后的值 , 因此返回的仍然是一个左值 , 而 后缀增量或减量表达式返回的是原先操作对象的 值 , 所以不是左值 。 int amt=63, nut=96; /声明两个变量 +amt; /相当于 +(+amt), 结果为 65 +nut-; /相当于 +(nut-), nut-不是左 值 , 所以产生语法错误 太原工业学院计算机工程系 2021/1/2

36、7 70 【例 2.10 】 自增、自减运算符示例 #include void main() int a=9,n=11,b=8,c=5,m,k; a%=n%=2; couta=a n=nendl; b+=b-=b*b; a=5+(c=6); coutb=ba=a c=cendl; n=a+; couta=a n=nendl; m=+a;coutm=m a=aendl; k=a+c; coutk=k a=aendl; 太原工业学院计算机工程系 2021/1/27 71 【例 2.10 】 自增、自减运算符示例 结果 结果: a=0 n=1 b=-112 a=11 c=6 a=12 n=11 m=

37、14 a=14 k=20 a=15 太原工业学院计算机工程系 2021/1/27 72 2.4.2 赋值运算符与赋值表达式 赋值运算符 功能 结合性 目 = 赋值 右结合 双目 += 加赋值 右结合 双目 -= 减赋值 右结合 双目 *= 乘赋值 右结合 双目 /= 除赋值 右结合 双目 %= 模赋值 右结合 双目 太原工业学院计算机工程系 2021/1/27 73 赋值表达式 由赋值运算符和操作对象组成的序列称为赋 值表达式。 【说明】 尽管赋值运算符( =)与数学上的 等号( =)在书写上是一样的,但其含义却 完全不同。 例: x=6 6=x x=x+3 太原工业学院计算机工程系 2021

38、/1/27 74 赋值表达式示例 a+=6; /相当于 a=a+6 a*=6; /相当于 a=a*6 x+=3*6 /相当于 x=x+(3*6) hign=low=0 /相当于 low=0,high=low 太原工业学院计算机工程系 2021/1/27 75 【例 2.11】 赋值表达式示例 #include void main() int m,n,a,b,number; a=b=3; number=237; m=number/5; n=number%5; coutm=mendl; coutn=nendl; a+=m; b*=n; couta=aendl; coutb=b 大于 左结合 双目

39、= 大于等于 左结合 双目 小于 左结合 双目 b /a大于 b成立,结果为 1 a=b /a小于等于 b不成立,结果为 0 a=b / a等于 b不成立,结果为 0 b!=c /b不等于 c成立,结果为 1 太原工业学院计算机工程系 2021/1/27 79 关系运算符和关系表达式 【说明】 =和 = =是两个完全不同含义的运算符, 注意不要误写。 () if(x=168) /如果 x等于 168 / ( 2) if(x=168) /x取 168, 条件永远为真 / 太原工业学院计算机工程系 2021/1/27 80 2.4.5 条件运算符 与条件表达式 条件运算符 ? : 条件运算符是 C

40、+中唯一的三目运算符。 【条件表达式格式】 ? : 【功能】 它要求有三个操作对象。当 非 0时,返回 的值,否则返回 的值。 太原工业学院计算机工程系 2021/1/27 81 条件运算符和条件表达式 例如: x=3;y=5; xy ? x : y; 【说明】 ( 1)条件运算符的结合性为从右向左; ( 2)条件表达式可以作为左值。 太原工业学院计算机工程系 2021/1/27 82 2.4.6 逻辑运算符和逻辑表达式 逻辑运算符 功能 结合性 目 ! 逻辑非 右结合 单目 逻辑与 左结合 双目 逻辑或 左结合 双目 太原工业学院计算机工程系 2021/1/27 83 2.4.6 逻辑运算符

41、和逻辑表达式 由逻辑运算符和操作对象组成的序列称为逻 辑表达式。 a b !a a a=x if(n%4=0) else coutn is not leap year!endl; 太原工业学院计算机工程系 2021/1/27 86 【例 2.13】 逻辑表达式示例 #include using namespace std; void main() int x=20,y=10,z=30,p,q; p=!x q=x20; coutp=pendl; coutq=q算术运算符 关系运算符 逻辑运算符 赋值运算符 逗号运算符 【说明】 加括号,改变运算顺序 太原工业学院计算机工程系 2021/1/27

42、88 【例 2.14】 程序示例 #include main() int a=15,n=15,b=12,c=5; a%=n%=2; couta=aendl; coutn=nendl; b+=b-=b*b; a=5+(c=6); coutb=bendl; couta=aendl; coutc=cint int long int double float double 上述转换规则是将低类型的数据转换 为高类型的数据,因此数据精度一般不会损 失。 太原工业学院计算机工程系 2021/1/27 91 自动转换转换示例 例: int i=6; char ch=b; float f=8.36f; dou

43、ble df=9.63; ch*i+f*2.0-df ( 1) 将 ch转换为 int型 , 计算 ch*i=98*6=588; ( 2) 将 f转换为 double型 , 计算 f*2.0=8.36*2=16.72; ( 3) 将 ch*i转换为 double型 , 计 算 588+16.72=604.72; ( 4 ) 计算 604. 72- df=604.72- 9.63=595.09。 太原工业学院计算机工程系 2021/1/27 92 2. 强制转换 【 格式 1】 ( ) ; 【 格式 2】 ( ) ; 例: ( 1) (float)5/3 ( 2) float(5/3)/2 (

44、1)将整数 5强制转换为 float型,然后再除以 3, 结果为 1.66667 ( 2)先计算 5/3=1,然后将 1强制转换为 float型, 再除以 2,结果为 0.5 太原工业学院计算机工程系 2021/1/27 93 强制转换带来的问题 ( 1) 强制转换是一种不安全的转换 。 当将高类 型的数据转换为低类型的数据时 , 数据精度会 受到损失 。 例如: float x=3.8f; int n; n=(int)x; /n的值为 3, 精度受到损失 太原工业学院计算机工程系 2021/1/27 94 强制转换带来的问题 ( 2) 类型强制转换是一种暂时的行为 , 即转换 过后操作对象本

45、身的类型并不会改变 。 例如: double w=2.36,h=5.5; double a2;int a1; a1=int(w)*int(h) / a1的值为 10 a2=w*h / a2的值为 12.98 太原工业学院计算机工程系 2021/1/27 95 3.赋值时的类型转换 在赋值表达式中 , 当左值表达式的类型与 右值表达式的类型不同时 , 先计算出右值表达式 的值 , 然后将其转换为左值的类型赋给左值 。 例如: int m; float x=6.23f; m=x*3 先计算 x*3=6.23*3=18.69, 然后取整数部分 18赋给左值 m 太原工业学院计算机工程系 2021/1

46、/27 96 【例 2.15】 赋值时的类型转换示例 ( 1) #include void main() int i=3; couti+20.5endl; ( 2) #include main() int i=3; i=20.5+i; coutiendl; 结果 (1)23.5 (2) 23 太原工业学院计算机工程系 2021/1/27 97 2.5.2 赋值类型转换时的副作用 赋值表达式中,当左边变量的类型与右 边表达式的类型不同时,要将右边表达式的 类型转换为左边变量的类型。这种转换会产 生一些预想不到的结果即副作用。 太原工业学院计算机工程系 2021/1/27 98 【例 2.16】

47、赋值类型转换的副作用 #include void main() int i=32,j=6; double df; df=i/j+2.3; coutdf=dfendl; i=df/3; couti=iendl; 结果: df=7.3 i=2 / i/j=32/6=5, 而 不是 5.33333 太原工业学院计算机工程系 2021/1/27 99 2.5.3 逻辑表达式优化时的副作用 在逻辑表达式 e1 x=ab /因为 a不大于 b,所以 -b不被执行 y=c | d+; / 因为 c非 0,所以 d+没有被执行 couta=aendl; coutb=bendl; coutc=cendl; co

48、utd=dendl; 太原工业学院计算机工程系 2021/1/27 101 【例 2.17】 逻辑表达式优化时的副作用 运行结果 a=8 b=26 c=6 d=-3 太原工业学院计算机工程系 2021/1/27 102 小结 重点掌握运算符的功能 、 表达式的计算 作业: P41-42 3、 4、 5、 6、 7 太原工业学院计算机工程系 2021/1/27 103 第 3章 预处理与语句 教学内容 算法设计 C+的标准输入 /输出 流对象 cin/cout C+程序的构成 顺序结构 选择结构 循环结构 太原工业学院计算机工程系 2021/1/27 104 第 3章 预处理与语句 重点、难点

49、算法设计 顺序结构 选择结构 循环结构 太原工业学院计算机工程系 2021/1/27 105 第 3章 预处理与语句 教学目标 掌握算法设计 了解预处理 熟练掌握 C+的标准输入输出流对象 熟练掌握 C+程序的构成 熟练掌握 C+的 3种基本结构 会用 C+解决实际问题 太原工业学院计算机工程系 2021/1/27 106 第 3章 预处理与语句 3.1 预处理 3.2 程序的三种基本结构及流程图 3.3 顺序结构及语句实现 3.4 分支结构及语句实现 3.5 循环结构及语句实现 3.6 辅助控制语句 3.7 程序实例 太原工业学院计算机工程系 2021/1/27 107 3.1 预处理 预处

50、理命令不是 C+语言本身的组成部分,不 能直接对它们进行编译,他们是在程序被正常编 译之前执行的,故称为预处理命令。预处理命令 都是以“ #”开头,末尾不加分号的命令行。 C+提供了 3种预处理命令: ( ) 宏定义 ( ) 文件包含 ( ) 条件编译 太原工业学院计算机工程系 2021/1/27 108 3.1.1 宏定义 1. 不带参数宏定义 【 格式 】 #define 标识符 字符序列 功能:用指定标识符(宏名)代替字符序列(宏 体) 在编译预处理时,将宏名用字符串替换。宏名通 常用大写以区别于变量名。 例如: #define PI 3.1415926 太原工业学院计算机工程系 202

51、1/1/27 109 #include #define PI 3.1415926 #define R 2.8 #define AREA PI*R*R #define PROMPT “面积为: #define CHAR ! void main() coutPROMPTAREACHARendl; 无参宏示例 【例 3-1】 求圆面积。 太原工业学院计算机工程系 2021/1/27 110 2. 有参宏 在编译预处理时,将宏名用字符串中与参数表相同的 字符序列替换。 【 实例 3-2】 求圆面积。 【格式】 #define ( ) #define PI 3.1415926 #define AREA(

52、r) r*r*PI #include void main() float r=2; coutAREA(r); 太原工业学院计算机工程系 2021/1/27 111 ( 1)带参数的宏只给出参数名,不能指定参数的类型;与 函数的区别; ( 2)要注意宏替换所代来的副作用;解决的方法:加() #define PI 3.1415926 #define AREA(a,b) a*b 改为: (a)*(b) #include void main() float c; c=AREA(2+3,3+10); coutcendl; ( 3)宏名与()之间不能有空格;函数可以有。 有参宏【说明】 太原工业学院计算机

53、工程系 2021/1/27 112 ( 1)定义形式不一样。带参数的宏只给出参数名, 不能指定参数的类型; ( 2)处理程序不一样。宏:编译预处理程序处理; 函数:编译程序处理; ( 3)处理方式不一样。宏:不进行语法检查;函数: 检查语法检查; ( 4)函数可以有返回值,宏没有返回值的概念; ( 5)多次调用同一个宏,会增加程序的长度;函数 调用不会增加程序的长度。 宏与函数的区别 太原工业学院计算机工程系 2021/1/27 113 3.1.2 文件包含 所谓“文件包含”处理是指一个源文件可以将 另外一个源文件的全部内容包含进来,即将另外的 文件包含到本文件之中。 #include“fil

54、e2.c” A file1.c A file1.c B file2.c B 图 3-1-1 文件包含 太原工业学院计算机工程系 2021/1/27 114 3.1.2 文件包含 在 C+中被包含文件可以是: 源文件 (*.cpp) 头文件 (*.h) 【格式】 #include /只在系统的 include子目录下搜索文件 #include “文件名” /先在当前目录下搜索文件,然后在系统 的 include子目录下搜索 太原工业学院计算机工程系 2021/1/27 115 3.1.2 文件包含 所谓“头文件”是指存放与标准函数有关的信息, 或存放符号常量、类型定义、类定义及其与程序环境 相关

55、的信息的文件。头文件一般包含以下几类内容: ( 1)对类型的声明。 ( 2)函数声明。 ( 3)内置 (inline)函数的定义。 ( 4)宏定义。用 #define定义的符号常量和用 const声明 的常变量。 ( 5)全局变量定义。 ( 6)外部变量声明。如 entern int a; ( 7)还可以根据需要包含其他头文件。 太原工业学院计算机工程系 2021/1/27 116 【实例 3-3】 阅读程序。 /* powers.h */ #define sqr(x) (x)*(x) #define cube(x) (x)*(x)*(x) #define quad(x) (x)*(x)*(x

56、)*(x) 文件包含示例 /*eg3_3.cpp*/ #include #include powers.h #define POWER 5 void main() int n; coutnumbertexp(2)t exp(3)texp(4)en dl; for(n=1;n=POWER;n+) coutntsqr(n)t cube(n)tquad(n)e ndl; 太原工业学院计算机工程系 2021/1/27 117 3.1.3 条件编译 当标识符已被定义过时,编译程序段 1,否则编译程序段 2。 1.宏名作为编译条件 【格式 1】 #ifdef #else #endif 太原工业学院计算机工

57、程系 2021/1/27 118 当标识符未被定义过时,编译程序段 1,否则编译程序段 2。 条件编译 【格式 2】 #ifndef #else #endif 太原工业学院计算机工程系 2021/1/27 119 条件编译 2. 表达式作为编译条件 【格式 3】 #if #else #endif 当表达式的值为真,则编译程序段 1,否则编译程序段 2。 太原工业学院计算机工程系 2021/1/27 120 a1.h # ifndef _A1_H # define _A1_H #define L 16 #define W 6 float area; #endif 【实例 3-4】 条件编译应用实

58、例。 a2.h # ifndef _A2_H # define _A2_H #include a1.h #define AREA L*W #endif 太原工业学院计算机工程系 2021/1/27 121 #include /.cpp #include a1.h #define PI 3.1415926 #define R 2.8 void main() area=PI*R*R; cout圆面积 areaendl; cout长方形面积 AREAendl; 【实例 3-4】 条件编译应用实例。 太原工业学院计算机工程系 2021/1/27 122 #include #define DEBUG v

59、oid main() float a=-3.0,b=3.8; #ifdef DEBUG coutaendl; #else coutb100) z=z-100; coutz; 【注意】复合语句中最后一个语句中最后的分号不能省略。 太原工业学院计算机工程系 2021/1/27 125 C+语句概述 复合语句可以嵌套使用 。 复合语句一般用于 下列两种情况: ( 1) 当语句上要求一条语句 , 但又难于用一条简 单语句表达时 , 用复合语句 。 ( 2) 当声明的名字仅在某一范围内使用时 , 使用 块语句使其形成局部化的块结构 。 太原工业学院计算机工程系 2021/1/27 126 【 实例 3-

60、5】 复合语句应用实例。 #include void main() int num=500; float price,cost; price=18.69f; float price; price=19.32f; cost=num*price; coutcost1=costendl; cost=num*price; coutcost2=costendl; 太原工业学院计算机工程系 2021/1/27 127 3.2.2 程序的三种基本结构 A B P条件 A B P条件 A 图 3-2 三种基本结构 太原工业学院计算机工程系 2021/1/27 128 三种基本结构共同的特点 ( 1) 只有一个

61、入口点 , 一个出口点 。 ( 2) 对于每个操作都有一条路径 , 即从入口到 出口要通过每个操作 。 太原工业学院计算机工程系 2021/1/27 129 3.2.3 流程图 a 起止框 b 数据框 c 功能框 d 判断框 e 流向线 a 功能框 d 判断框 太原工业学院计算机工程系 2021/1/27 130 3.2.4 程序的组成 程序一般由 3部分组成: 输入 /已知 处理 /求解 输出(必须的) /答 太原工业学院计算机工程系 2021/1/27 131 3.3 顺序结构及语句实现 【 功能 】顺序执行 A、 B操作。 A B 太原工业学院计算机工程系 2021/1/27 132 3

62、.3.1 标准输出流对象 cout C+的输出和输入是用“流” (stream)的方式实 现的。 流 是指来自设备或传送给设备的数据流。 C+的输入输出流库中提供了标准输入 cin和标 准输出 cout流对象。 iostream.h 太原工业学院计算机工程系 2021/1/27 133 cout是标准输出流对象 , 用于向标 准输出设备 -显示器输出数据 。 数据的输出是通过插入运算符 将 字符插入到输出流中的 。 标准输出流对象 cout 太原工业学院计算机工程系 2021/1/27 134 标准输出流对象 cout 【 格式 】 cout表达式 1表达式 2 ; 【 说明 】 ( 1) 在

63、一个 cout中 , 可以连续使用多个插入运算符 输出多个数据 。 ( 2) 输出多个表达式时 , 各表达式之间无空格输出 。 ( 3) cout可以输出任何基本类型的数据 。 太原工业学院计算机工程系 2021/1/27 135 【例 3-3-1】 标准输出流 cout示例 #include void main() char ch1,ch2; int x,y; coutch1ch2; x=ch2-ch1; y=ch1+ch2; coutx=xendl; couty=yendl; 结果: input ch1,ch2=h t x=12 y=220 太原工业学院计算机工程系 2021/1/27 1

64、36 【例 3-3-2】 标准输出流 cout示例 #include void main() int i=3; float r=2.0,p; cout2*-i=2*-iendl; i=r/i; couti=r/i=i n; r/=(i+3); coutr=r/(i+3)=rendl; i=2%3; couti=2%3=iendl; r=6/3; coutr=rends; p=6.0/3; coutp=pendl; 结果: 2*-i=-6 i=r/i=0 r=r/(i+3)=0.666667 i=2%3=2 r=2 p=2 太原工业学院计算机工程系 2021/1/27 137 标准输出流 cou

65、t 【 说明 】 ( 1) 操纵符 ends作用于输出流时 , 输出一个空 字符 0。 ( 2) 操纵符 endl作用于输出流时 , 输出一个回 车换行符 n, 并刷新流 。 ( 3) 输出浮点型数据时 , 插入运算符试图输出 占最小空间的值 , 所以输出 6.0/3的值是 2, 而不 是 2.0。 太原工业学院计算机工程系 2021/1/27 138 【例 3-3-3】 标准输出流 cout(oct,hex)示例 #include void main() int a=3,m,k; m=(a=3*5,4*6,a*5 ); int i=5; k=(i+,i=2); couti=iendl; co

66、utk=kendl; couta=aendl; coutm=mendl; coutoct; couti=iendl; coutk=kendl; couta=aendl; coutm=mendl; couthex; couti=iendl; coutk=kendl; couta=aendl; coutm=m的右边。当程序中使用这些操纵符时 ,要包含 iomanip.h头函数。 太原工业学院计算机工程系 2021/1/27 140 iomanip库中常用的操纵符及其功能 操纵符 功能 setiosflags(ios:fixed) 固定的浮点显示 setiosflags(ios:scientific) 科学表示法显示 表中的操纵符具有持续性,即对于所输出的 数据都按其指定方式显示,直到指定了另外的显示 方式为止。 太原工业学院计算机工程系 2021/1/27 141 【例 3-3-4】 iomanip库中常用的操纵符 示例 #include #include void main() float x,y; float fx; coutxy; fx=x/y; cout123622569.3256

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!