大学VISUAL C++程序设计-王永国-课件PPT
收藏
资源目录
压缩包内文档预览:(预览前20页/共37页)
编号:21836328
类型:共享资源
大小:4.17MB
格式:ZIP
上传时间:2019-09-06
上传人:QQ24****1780
认证信息
个人认证
王**(实名认证)
浙江
IP属地:浙江
25
积分
- 关 键 词:
-
大学VISUAL
C++程序设计-王永国-课件PPT
大学
visual
C++
程序设计
王永国
课件
ppt
- 资源描述:
-
大学VISUAL C++程序设计-王永国-课件PPT,大学VISUAL,C++程序设计-王永国-课件PPT,大学,visual,C++,程序设计,王永国,课件,ppt
- 内容简介:
-
1,第2章 数据类型、运算符和表达式,2.1 数据类型 2.2 常量、变量和函数 2.3 运算符和表达式 2.4 数据类型转换 2.5 应用举例,2,程序中要对各种各样的数据进行描述和操作,用到的数据都必须指明其类型。数据类型的作用: 指出了应为数据分配的存储空间的大小 规定了数据所能进行的操作,数据类型,基本类型,构造类型,整型 (int),实型,字符型(char) 布尔型(bool) 空类型(void) 指针,单精度型(float) 双精度型(double),数组 结构型(struct) 共用体(union) 枚举(enum) 类(class),2.1 数据类型,3,不同类型的数据占用的内存字节数、表示的数据范围都是不同的。表2-1中列出了Visual C+中支持的基本数据类型以及占用的字节数和和范围。,表2-1 基本数据类型及其占用的字节数和和范围,4,2.2 常量、变量和函数,2.2.1 常量 在程序运行过程中其值不能改变的量,有值常量和符号常量两种。 1. 逻辑常量 逻辑常量只有两个取值:true和false,主要用在逻辑运算中。例如,对于两个整数a和b: bool x=(a=b); 如果a和b 相等,则x的值为true,否则为false。此外,由于逻辑值对应着整数1和0,因此它也能像其它整数一样出现在表达式中,参与各种整数运算,这一点与其它语言有所区别。,5,2.整型常量,整型常量就是整型常数,简称整数,它有十进制、八进制和十六进制三种形式。 (1)十进制整型常量 形式:n n为09数字。十进制整数不能以0开始,以0开始的为八进制整数。例如0、+16、124、-127等。 (2)八进制整型常量 形式:0n n为07数字。例如0、016、0124等。 (3)十六进制整型常量 形式:0xn 以0x(或0X)开头, n 为 09 数字和字母AF或af组成。例如0x0、0x55、0x1cd等。 此外,C+中整型数据还允许给它们添加后缀u或l(大小写均可),来表示无符号整数或长整数。,6,3. 实型常量 (1)单精度实型常量 形式:n.nf n为由09数字组成的若干位整数。如果不加字母f默认为双精度实型常量。例如1.36、-17.、.1和41.9等。 (2)双精度实型常量 形式:n.nEn 其中:n为09数字,符号E(或e)表示指数部分,+号可省。例如:1.37、34.0、 1.25e-5、-1.25e23 等均为合法双精度实型常量。 注意:e前面不能没有数字,e后面的数字必须为整数,也不能加园括号。如1E(-3)、E-5、1e2.1都是错误的。,7,4. 枚举常量,枚举常量是枚举类型中定义的值,即枚举值。这种类型的变量值只能是给定的若干个名字之一。是一种有限状态的集合,以整型值代表。如:颜色,星期等。枚举类型属于构造类型,用关键字enum表示。用户通常利用枚举类型定义程序中需要使用一组相关符号常量。 声明形式:enum ; 例如:enum daysun,mon,tue,wed,thu,fri,sat ; 说明:(1)enum是关键字,标志枚举类型; (2)在定义枚举类型时,花括号中的一些名字如sun、mon是程序设计者指定的,与标识符的命名规则相同,但名字不是变量,不能改变其值;(如sun=1;非法) 枚举变量的说明和引用:enum day day1,day2 ; 或 enum daysun,mon,tue,wed,thu,fri,sat day1, day2;,8,1)枚举变量只能取该类型中的一个元素。例如:day1=sat ; 2)枚举元素如果不赋值,自动取0n-1整数值; 3)在定义时,可以对某个枚举元素赋值,其后的元素按此值自动加一递增。 如enum colorred=3,yellow,blue,green=8,black;则yellow为4 4)一个整数不能直接赋给一个枚举变量,应进行强制类型转换;如day2=2;是错误的; 5)枚举常量可以进行比较; 6)枚举常量不是字符串。,注意:,9,5. 字符常量 C+提供了两类字符型常量: 普通字符常量:用单引号括起来的一个字符。如:A、0、?。 转义字符常量:以 (反斜杠)开头的用单引号括起来的字符序列。如:n 、t 、x61等。常用的转义字符见教材P26。 注意: 0表示ASCII码为0的字符,它是一个空字符,注意其与0的区别,后者表示的是ASCII码为48的数字字符。 字符型数据在内存中以ASCII码存储,故整型数据和字符型数据在一定范围内可以通用。如: x= a +2;,10,6. 字符串常量 字符串常量是用双引号括起来的字符序列, 系统在字符串常量最后自动加字符串结束符号0 。 例如: 字符串“A“的存储形式:,A,内存中实际存放的 是这些字符的ASCII码,#define 标识符 常量值 const 数据类型 标识符 = 常量值;,或,7. 符号常量 是以标识符形式出现的常量,作用是便于程序阅读和修改。C+中用define命令或关键字const定义符号常量,形式如下:,字符A的存储形式:,11,注意:,习惯上符号常量名大写,而变量名小写,以示区分。 符号常量虽然用标识符来标识,但本质上是常量,具有常量值不能改变的性质。,#include “iostream.h“ #define PI 3.14 void main( ) float r=3.0,s,l; l=2*PI*r; s=PI*r*r; cout“l=“l“,s=“ sendl; ,【例2-1】,1.演示不同精度圆周率的程 序运行结果 2.观察编译中的“警告”对程 序运行的影响 3.消除“warning”的方法,12,1.变量的定义 程序运行过程中其值可变的量, 定义方式如下:,C+规定: 程序中所有变量必须先定义后使用,这样可及时发现录入错误(如:定义的变量为data,而程序体中使用变量为date),同时还可限制非法运算(如:a%b , 若a,b为float类型则出错)。 C+中变量可随时使用,随时定义。,例如: int a, b; (定义变量a和b为整型) float x,y ; (定义变量x和y为单精度实型),数据类型 变量名表 ;,2.2.2 变量,13,2.变量的初始化,数据类型 变量名=表达式; 数据类型 变量名(表达式);,例如: int k=3,m=3, n(3); () int k=m=n=3; /不允许为多个变量同时初始化,变量必须先有确定的值后才能参与各种相应的操作,变量获取值的途径有三: 通过输入语句输入 (如:cina;) 通过赋值语句赋值 (如:a=3; ) 通过初始化方式赋初值 (如:int k=3;) 所谓初始化是指在定义变量的同时指定变量的初值,形式有二:,14,3.变量引用,C+中增加了“引用”这一概念,许多地方可以代替指针实现相应的功能,比指针更安全。 所谓引用即给一个已知变量起个别名,系统不为引用另外开辟内存,而是与原变量共享同一段内存,引用好比是一个虚拟的变量,声明形式为:,数据类型 &引用名=已定义的变量,如: int a=3, /你知道此时a的值为多少吗?,说明: (1)引用运算符与地址操作符使用了相同的符号,但含义不一样; (2)引用被创建时,必须立即初始化,且一旦一个引用被初始化为一个对象的引用,就不能再被改变为另一个对象的引用,另外也不能有NULL引用,所以这点和以后学的指针不一样。,15,4typedef语句,为了增加程序的可读性和可移植性,C+提供了typedef 语句,用于为已有的数据类型定义一个新的名称。 形式:typedef 数据类型 新的数据类型名; 例如: typedef float FLOAT; / FLOAT可当作float用 FLOAT k, j; /用FLOAT定义k和j为float类型 注意:typedef语句并没有真正地定义新的数据类型,它只是相当于给某个已有的数据起了一个别名。,16,2.2.3 标准函数,函数是一个可以独立完成某个功能的语句块。在C+中函数分为标准函数和用户自定义的函数。表2-3中列出了常用的数学函数。,所有的标准函数都被放在不同的函数库中,并有一个与之对应的头文件。在使用标准函数时,应把包含标准函数的头文件,通过 #include 预处理命令装入到程序中,例如,要使用上述数学函数,应该在程序加入: #include “math.h “ 或 #include “cmath“ using namespace std;,又如: #include “stdlib.h“ 中含有的随机函数rand是用于产生032767之间的一个整数,如需产生a,b之间的整数,只需用:rand()%(b-a+1)+a即可。,17,2.3 运算符和表达式,2.3.1 基本概念,运算符具有三个属性: 优先级:指运算的先后次序,共分15个级别。(见书表2-4) 结合性:指相同优先级运算符连续出现时的计算顺序,分自左 向右和自右向左两种,除特别声明外,皆指自左向右。 目 数: 指运算符要求的操作数的个数,包括单目、双目和三目, 一般目数越少,优先级越高。,表达式:由常量、变量、函数调用和运算符按一定规律组合在一 起构成的式子。 如:a+14/(3+2)-sqrt(17) (-b+sqrt(b*b-4*a*c)/(2*a),18,符号: + (加法或取正) - (减法或取负) * (乘法) / (除法) % (求余数) + (自增) - (自减) 其中:+和-的结合性则是自右向左 优先级:(从高到低) (+、-、+、-) (*、/、%) (+、-),2.3.2 运算符 1.算术运算,正、负,加、减,19,说明: 在除法运算中,当两个操作数都是整数时,商也为整数,小数部分一律舍去。如: 1/2 0 1.0 /2 0.5,若 i 的值为3,则: j=+i; j的值为4, i的值为4 j=i+; j的值为3, i的值为4,注意:增、自减运算符只能用于变量,而不能用于常量和表达式。 () 5+、(a+b)+,%(求余运算)要求两个操作数都是整型,结果为整除后余下的整余数,符号与被除数相同。 自增、自减运算符(+、- -) +i , -i (在使用 i之前,先使i的值加减1) i+ , i- (在使用 i之后, 使i的值加减1),20,2 .关系运算,符号: (大于) = =(等于)、 =(大于等于)、 !=(不等于) 优先级: (从高到低) ( 、 = ) ( = = 、 != ) 关系运算描述的是一种“判断关系”,在C+中为了提高程序的可读性,引入了bool类型,其结果有true和false两种。为了保持与C的兼容可以用“1”代表“真”,用 “0” 代表“假” 例如:53的结果为true , aB的结果为false 思考: x为0到100之间的数能否表示为 0=x=100?,21,3.逻辑运算,种类: &(逻辑与)、 |(逻辑或)、!(逻辑非) 优先级: (从高到低) ! & |,其中,“!” 是单目运算符,优先级高于算术运算符。“” 和 “|” 低于关系运算符。 逻辑运算通常用来连接关系运算,逻辑运算符两端的操作数如为“非”,就当作“真”来处理,如果是“”,便当作“假”来处理。逻辑运算的结果也只有false (0)和true (1)两种。,22,说明: 当多个&连续出现时,如:表达式& 表达式&表达式。从左到右,只要一个操作数为0,结果就为0,不进行后续运算。 当多个 | 连续出现时,如:表达式|表达式|表达式。从左到右,只要一个操作数为1,结果就为1,不进行后续运算。,23,#include “iostream.h“ void main() int m,n=10; m=2 ,【例2-2】,1.分析运行结果 m=1,n=11 2. 改为m=0&n+,结果又如何。,4. 条件运算 形式: e1?e2:e3 一般而言,e1为条件表达式,当其成立时,将e2的值作为整个表达式的值,不再计算e3的值;否则取e3的值作为整个表达式的结果,而不计算e2的值。,24,如:max(xy?x:y); /将和中较大的一个数赋值给变量max 条件运算符的结合性是由右向左 思考题:试用条件运算符表达:对n(0)个人进行分班,每班k(0)个人,最后不足k人也编一班,问要编几个班?,n%k0?n/k+1:n/k,5. 逗号运算,形式:e1,e2,e3, 其中e1、e2、e3均为表达式,从左向右依次计算各个表达式的值,而将最后一个表达式的值作为整个表达式的值,逗号运算符常用于循环语句的表达式中,将多个表达式连接成一个表达式,如:for(i=0,j=n;ij;i+,j-) 逗号运算符的优先级别最低。,25,6. 位运算,位运算符是以单独的二进制位为操作对象的运算。也就是说,其操作数是二进制数。这是与其他运算的主要不同。 C+语言中提供的位运算符有:按位与(&)、按位或(|)、按位异或()、按位取反()、左移()6种。此运算规则见表2-7。,26,7. 赋值运算,格式:变量 赋值运算符 表达式,作用:将一个表达式的值赋给一个变量,并以变量的值作为整个式子的值。,/Ex2_1.cpp #include void main() int a=15,x,y,z; x=a; /负数在计算机中以补码形式存储 y=a2; coutx“ “y“ “zendl; ,27,例如: b /= a+2 等价于 b = b/(a+2),其中赋值运算符可以是 “=”,也可以是复合赋值运算符,如“+=”、“-=”、“*=”、“/=”和“%=”等等。 复合赋值运算符的等价形式: (以 “+=”为例),变量+=表达式,变量 = 变量表达式,是一个整体,结合性自右向左 若两端类型不同,则系统自动将右端类型转换为左端类型。 例如:有定义 int a = 3.78; 则a中存放的值为3 左端只能是变量(或数组元素),不能为表达式或常量,如: a+2*=b () a=b+2=c+5 (),28,8. sizeof运算符 形式: sizeof(操作数) 其中操作数可以是表达式或数据类型名,当操作数是表达式时括号还可省略。 作用:求出操作数在计算机内存中所占用的字节数。 例如:sizeof(char)。,2.3.2 表达式,1表达式的概念 表达式由变量、常量、运算符、函数、圆括号等按一定规则组成的式子。一个变量、一个常量或一次函数调用都是表达式。 不管是什么表达式,经过运算后都能取得一个值,而且是有类型的。表达式的求值要根据运算符的意义、优先级、结合性以及类型转换约定共同决定。,29,2. 优先级和结合性 C+表达式运算比较灵活,运算符的优先级较复杂,一般原则: (1)目数越少的运算符优先级别越高 (2)优先计算带有括号的子表达式 (3)在没有括号的部分,依照优先级由高到低进行;具有相同优先级的按照结合性规定依次进行。 (4)算术运算符关系运算符逻辑运算符条件运算符赋值运算符逗号运算符 (5)在能确定表达式值的情况下停止后面的运算 3. 表达式书写原则 (1)乘号不能省略。 (2)括号必须成对出现,可以出现多个,但均使用圆括号。 (3)表达式从左到右要在同一基准上书写,无高低之分。,30,4. 表达式书写示例,表示3x20的关系式,字符变量c是字母,31,【例2.2】 编程序求任意三个数中最大的一个数,/Ex2_2.cpp #include“iostream“ using namespace std; void main() float x,y,z,max; coutxyz; max=xy?x:y; max=maxz?max:z; cout“最大的数据=“maxendl; ,32,数据类型的转换分为显式(强制)转换和隐式(自动)转换。 强制转换格式:,(类型名)表达式,类型名(表达式),将一种数据类型的值强制转换为另外一种数据类型。常用于对函数的参数及返回值的操作。 假设、为float型数据,则(int)(x+y)强行将+的值转换成整型,x和y仍为float型。,或,C语言,C+语言,2.4 数据类型的转换,33,char short int unsigned longunsigned longfloatdoublelong double,必定的转换,混合运算时由低向高转换,自动转换还包括赋值运算时赋值号右端类型向左端类型的转换,自动转换:在不同类型数据进行混合运算时,系统自动进行的类型转换。,34,【例2-3 】用C+代码表达下列命题: 1. m能且只能被2和3中的一个数整除。 解:,(m%3= =0) & (m%2 !=0) | (m%2= =0) & (m%3 ! =0),(m%3= =0)!= (m%2= =0),ch=A&ch =Z,2.5 应用举例,2. ch是大写字母。 解:,思考:上述命题可否描述为AchZ?为什么?,或,35,#include“iostream.h“ #include“iomanip.h
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。