收藏 分享(赏)

ch2_数据类型及表达式.ppt

上传人:wjmd390 文档编号:6859748 上传时间:2019-04-25 格式:PPT 页数:66 大小:755.03KB
下载 相关 举报
ch2_数据类型及表达式.ppt_第1页
第1页 / 共66页
ch2_数据类型及表达式.ppt_第2页
第2页 / 共66页
ch2_数据类型及表达式.ppt_第3页
第3页 / 共66页
ch2_数据类型及表达式.ppt_第4页
第4页 / 共66页
ch2_数据类型及表达式.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

1、国家级精品课程网站 (本书配套教学网站) http:/,回顾: C+程序结构1)预处理命令:#include 2)使用名称空间:using namespace std;3)主函数及函数体:int main() 4)注释:/*段注释*/、/行注释函数组成1)函数说明:int max(int x,int y)2)语句:声明语句:int a,b,sum;执行语句:cinab; cout“sum=“sum; m=max(a,b); 程序编写过程编辑、编译、链接、执行。上机没有? VC+编程步骤启动VC+ 选“File|New”菜单 选“Files”页面 在File文本框中输入C+文件名 在Locati

2、on选择文件存放地 选择“C+ Source File” 编写程序代码 编译程序(选Build|Compile) 运行程序(选Build|Execute)。,第二章 基本数据类型与表达式,本章目标: 掌握几种基本数据类型及其使用方法 掌握常量、变量的使用方法 掌握各种运算符及其表达式的用法,第2章 基本数据类型与表达式,2.1 数据类型 2.2 常量 2.3 变量 2.4 运算符与表达式 1. 算术运算符和算术表达式 2. 关系运算符和关系表达式 3. 逻辑运算符和逻辑表达式 4. 赋值运算符和赋值表达式 5. 自增运算符和自减运算符 6. 逗号及逗号表达式 7. 条件运算符 2.5 表达式中

3、各运算符的运算顺序 2.6 类型不同的数据之间的混合算术运算 程序设计举例,4,2.1数据类型,+的数据有两种基本形式:常量和变量。 常量通过本身的书写格式就说明了该常量的类型; 变量必须先说明其类型,否则程序无法为该变量分配存储空间。 在计算机中为了区别不同的数,使用了不同的表示方法。包括: 整数的表示 实数的表示 字符数据的表示 数组的表示,5,常量,变量,数据类型,计算机只能存放二进制数据。不同类型的事物如何区分和描述?由此产生数据类型。 不同类型的数据占据不同长度的存储单元。 不同类型的数据对应不同的值域范围。 不同类型的数据对应不同的操作(运算)及规则。 数据类型越丰富,求解能力越强

4、大。,6,图2.1 C+的数据类型,7,短整型(short int)整型(int) 长整型(long int)字符型(char)单精度型(float)双精度型(double)长双精度型(long double)布尔型(bool) (即逻辑型)枚举类型(enum)数组类型结构体类型(struct)共用体类型(union)“类”类型(class)引用类型空类型(void) (即无值型,用于说明函数无返回值),基本类型,整 型,浮点型,构造类型,C+ 数据类型,指针类型,基本数据类型,数据类型 类型说明浮 占用字节 字符型 char 1个 布尔型 bool 1个 短整数 short 2个 整型 in

5、t 4个 长整型 long int 4个 浮点型 float 4个 双精度型 double 8个 无符号整型 unsigned int 无符号长整型 unsigned long 无符号短整型 unsigned short,8,数据在计算机中的存放,数据在计算机中采用二进制存放;一个字节(8个二进制位),示意图如下:,数的表示范围:-27 27-1(-128127)(最高位为符号位)一个字节的无符号数的表示范围:0 28-1 显然,一个字节表示数的范围是有限的。要表示更大范围内的数,就要使用多个字节。,7,0,S(符号位。1:负;0:正),整数的存储格式,短整型(short int)短整数表示范

6、围为:-215215-1(-3276832767) 长整型(long int)长整数表示范围为:-231231-1,10,15,8,7,0,31,24,23,16,15,8,7,0,整数的存储格式,字符型(char)计算机存储的是字符的编码(ASCII码),例如字符a存为97。 ASCII码为8位,其中最高位为0,因此ASCII共使用了128个编码,分别用整数0-127表示。 unsigned char: 一个字节,表示0255,与扩充版的ASCII码相对应。,11,0,7,实数的表示,实数(float、double、long double)也称为浮点数,用于表示小数;有两种形式: 十进制形式

7、:. 指数形式:.,12,一般浮点数的可以达到7位(包含小数点)有效数字。例如1234.56。双精度浮点数的有效位数可以达到1516位。,尾数部分,指数部分,31,24,23,16,15,8,7,0,表示范围为:-3.4*10-383.4*1038,有效位为7位,基本数据类型,一个数据类型所占大小可以通过运算符sizeof运算符来查看,例如: #include using namespace std; int main() cout“sizeof(int)“sizeof(int)endl; cout“sizeof(short int)“sizeof(short int)endl; cout“s

8、izeof(long int)“sizeof(long int)endl; cout“sizeof(char)“sizeof(char)endl; cout“sizeof(float)“sizeof(float)endl; cout“sizeof(bool)“sizeof(bool)endl; return 0; ,2.2 常量,1.整型常量 8进制常量,例04400,0777,0100 10进制常量,例2304 16进制常量,0x900,0xABC,0xffff 2.实型常量 十进制小数形式:0.0, 2.68, 3.141593, 637.312, 32767.0, 指数形式0.0E0,

9、6.226E4, 1.267E20, ,【注】:e前后必须有数字,且e后面的数字必须是整数。,3.字符型常量 字符常量:例a, A, 1, , +, 转义常量 : n(换行), r(回车), t(横向跳格), (单引号), 【注】 (1)字符型数据可以和整型数据之间可以运算。(2) 字符型数据和整型数据之间可以赋值。例如:,#include #include using namespace std; int main() char score;int _Score;score=A+1; /字符型和整形的运算_Score=A; /将字符型赋值给整形coutscoret_Scoreendl;ret

10、urn 0; ,运行结果: B 65,整型与字符型间的关系,用单引号括起来,常用转义字符,%: 输出%,char c=141; coutcendl;,char c=x61; /x小写 coutcendl;,均输出字符a,4.字符串常量 “Visual C+“, “12.34“, “This is a string.n“, “China” “a”char c;c=“a”; 5.布尔型常量 false(0值),表示true(非0值),a,字符串的存储方式,字符的存储方式,因此:,/定义字符变量c,/”a” 表明a为字符串,用双引号“”括起来的若干字符,2.3 变量,一.变量定义格式:, , , ;

11、例: char c1, c2; / 说明了2个字符型变量 int i, j, k; / 说明了3个整型变量 long len; / 说明了1个长整型变量float average, sum; / 说明了两个浮点类型的变量double distance, weight; /*说明了两个双精度类型的变量 */,19,二.变量(标识符)命名,命名规则:(1)变量名只能由字母、数字或下划线组成;(2)变量名的第一个字符必须是字母或下划线;(3)变量名长度不超过32个字符(TC);(4)不要用保留字定义变量名(有32个保留字)。 合法变量名:a、 b1、 _area、employee_name 不合法变

12、量名:1-name、 max one 、float 、*account,20,三.变量初始化,变量的初始化定义变量时赋值例如: char c=A;int count = 0; int count (0);,21,变量的初始化定义变量时赋值例如:int i=3; 相当于:int i;i=3; /变量的赋值又如: int i=3,j=4;,例如:int a=3,b=3;,例如:int a=b=3;,例如:int a,b,c=5;相当于int a,b,c;c=5;,2.4 运算符与表达式,几个概念: 运算是数据的加工过程。 记述不同运算的符号称为运算符。 参加运算的数据称为操作数或运算数。 由运算符

13、运算符和运算数组成的式子是表达式。 不同类型的表达式按不同运算规则进行计算。,23,一、算术运算符和算术表达式,算术运算符: + - *(乘) /(除) %(求余) 运算对象:数值变量、常数、函数、表达式等 计算结果: 数值 优先级: 先乘、除、取余,后加、减 结合性: 从左至右 注意事项: 5X 2 应写成 5*X*X 或者 调用库函数pow(x,y) /表示xy (x+y)(x-y) 改为(x+y)*(x-y),24,二. 关系运算符和关系表达式,关系运算是对两个运算数进行大小关系等的比较。 = = != 运算结果:逻辑数据类型(布尔型):只有“真”(非0值)和“假”(0值)两种结果。 关

14、系表达式用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子。例如: a+b=c; /判断a+b是否等于c,25,二. 关系运算符和关系表达式,例如,#include #include using namespace std; int main() int a=5,b;bool flag;flag=a(b=3);cout“flag:“flag“ b:“bendl;return 0; ,各种关系运算符,27,关系表达式,优先级: ,=, using namespace std; int main() if (3=3=1) /等价于 3=(3=

15、1)cout“关系表达式结果为“真”“endl;elsecout“关系表达式结果为“假”“endl;return 0; ,28,运算结果:关系表达式的结果为“假”,三. 逻辑运算符和逻辑表达式,计算结果:逻辑值(“真”和“假”) 优先级:! & | 运算对象:算术、关系、赋值、字符及逻辑表达式,三. 逻辑运算符和逻辑表达式,!A如果A为假(0),则!A为真(1)。 A & B只有当A和B均为真时, A & B才为真。 A | B只有当A和B均为假时, A | B才为假。,举例,例1:x*yz & x*y0 & !isgreat(z) 【注】运算符的优先顺序: (1)单目运算符的优先级高于所有双

16、目运算符。 (2)算数运算符 关系运算符 逻辑运算符(&、|)赋值运算符。 例2:判别闰年表达式: (year %4=0 & year%100!=0)|year%400=0 例3:xc或xb至少之一成立x = b,31,Year%4=0 且 year%100!=0 或者 year%400=0,i和j均小于或等于100,或者i和j均大于k(i k & j k ) 选未婚、30岁以上女讲师和未婚、35岁以上男副教授 ! 婚否 & ( (性别=男& 职称=副教授& 年龄 = 35) | (性别=女& 职称=讲师& 年龄=30)),四.赋值运算符和赋值表达式,1. 赋值运算符 “=”: 2.赋值的格式

17、: 变量名 = 表达式 3. 作用 将表达式的值存入变量,33,举例,i=j=m*n;计算表达式m*n的值,将其结果存入变量j中,然后再将结果存入变量i中。 temp=a; a=b; b=temp;交换a和b的值 sum=sum+i;(等价于 sum+=i;)计算sum与i的和,结果送sum,34,5、自增、自减运算符,表2-2 自增运算符(+)和自减运算符(-)的用法,35,注意: 自增、自减运算符对象常为整型变量或指针; 自增、自减运算符的运算对象只能是变量,不能是表达式。例如(i+j)+ 是错误的表达式。,#include using namespace std; int main()

18、int i=5; cout“i:“iendl; cout“i+: “i+“ i: “iendl; cout“i-: “i-“ i: “iendl; cout“+i: “+i“ i: “iendl; cout“-i: “-i“ i: “iendl;return 0; ,36,注意:区分 i+和+i,i-和-i的区别,运算结果:,6.逗号运算符及逗号表达式,格式 表达式1,表达式2 求解顺序及结果 先求解表达式1,再求解表达式2,求解结果为表达式2的值。 例: a=2*3,a*4 /a=6 a=(a=4),a*4 /a=4 a=(a=4),a*4) /a=16,算法: 比较x、y如果是(xy),则

19、输出x。否则,输出y.,7.条件运算符及表达式语句,?:;,例如:输出x、y中较小的数。,z = (xy) ? x : y,2.5 表达式中各运算符的运算顺序,39,见课本P28,2.6 类型不同的数据之间混合运算,不同类型的数据进行混合运算时,C+编译器会自动进行类型转换。 为了避免不同的数据类型在运算中出现混淆,应尽量使用同种类型数据。,40,2.6 类型不同的数据之间混合运算,1级别低的类型转换为级别高的类型自然转换。各类型按级别由低到高的顺序:char, int, unsigned, long, unsigned long, float, double。,41,2.6 类型不同的数据之

20、间混合运算,1级别低的类型转换为级别高的类型自然转换。各类型按级别由低到高的顺序:,/例如: #include using namespace std; int main() int i=-5;unsigned int j=2;couti+jendl;return 0; ,i加j的结果为 -3,及二进制: 11111111,11111111,11111111,11111101 再将该二进制转化为unsigned int类型(及最高位为数值位),因此得到十进制 4294967293。,又如: #include using namespace std; int main() float x;int

21、 i;x=i=3.24;coutxendl;return 0; ,运行结果?,实际是3.0,小数点后面0没显示,2.6 类型不同的数据之间混合运算,2可以使用强制类型转换。 (类型名)表达式 /C语言形式 类型名(表达式)/C+语言形式,/例如: #include using namespace std; int main() int i=-5;unsigned int j=2;couti+int(j)endl;return 0; ,2.6 类型不同的数据之间混合运算,2可以使用强制类型转换。 (类型名)表达式 /C语言形式 类型名(表达式) /C+形式例如:int i=5,j=2;coutd

22、ouble(i/j);,45,运行结果?,2.0,怎样让运行结果为2.5?,coutdouble(double(i)/j);,2.8 typedef语句,typedef是C/C+关键字,其作用是为某个已有数据类型定义一个别名。目的是丰富数据类型所包含的属性信息。 格式:typedef ; 例如:要定义长方形的长和宽typedef double length;typedef double width; 现在,就可以用length、width定义变量,同用double定义变量是一样的。length a;width b;,2.9 常量修饰符(const),const 用常量修饰符const修饰的变量

23、称为“常量变量”。 常量变量的值应该在定义时初始化。 常量变量的值不能被修改。 常量变量还可以用于修饰函数形参,表示在函数体内不能修改相应参数的值。 举例说明const int i=5;,int add(const int i,const int j) /不能修改形参i、j的值return i+j; ,2.11 位运算表达式,位运算 对二进制位进行操作 操作对象只能是各种整型数据 位运算符合 按位与(&) 按位或(|) 按位异或() 按位取反() 1,左移位运算()位运算符合赋值运算符,例2-1:取整型量的最低4位,#include using namespace std; int main(

24、) int i;couti;couti“的最低4位对应的十进制数是:“ (i ,十进制:23 二进制:0001 0111十六进制:0F 二进制:0000 1111,例2-2 根据三边长求三角形面积,解题思路:海伦公式:s = (a+b+c)/2;area = sqrt(s*(s-a)*(s-b)*(s-c);,算法:,开始,输入a,b,c,计算三角形的面积 area,输出area,结束,例2-2 根据三边长求三角形面积,#include #include using namespace std; int main() double a, b, c, s, area; /定义变量cout a b

25、 c; /输入三角形的三边长s = (a+b+c)/2;area = sqrt(s*(s-a)*(s-b)*(s-c); /计算三角形的面积cout “area =” area endl; /输出面积return 0; ,例2-3:解一元二次方程,求一元二次方程ax2+bx+c=0的实根,其中系数a, b, c为实数,由键盘输入。,解题思想:若b2-4ac=0,则方程有两实数根:否则,方程无实根。,若设,则,算法:,输入a,b,c,计算:disc=b2-4ac,disc0,计算x1,x2,输出无实根,输出x1,x2,假,真,例2-3:解一元二次方程,#include #include usin

26、g namespace std; int main() double a, b, c, delta, p, q;cout a b c;delta = b*b-4*a*c;p = -b/(2*a);q = sqrt(fabs(delta)/(2*a);return 0; ,if (delta=0) /x1=p+q; x2=p-qcout “x1 = “p+q endl “x2 = “ p-q endl; else /x1=p+qj; x2=p-qj cout“方程无实数根”endl; ,例2-4:温度转换,输入一个华氏温度,计算并输出对应的摄氏温度 #include using namespac

27、e std; int main() double c, f;coutf;c=5.0/9.0 * (f-32);cout“对应于华氏温度“f“的摄氏温度为“cendl;return 0; ,例2-5:反序输出,输入一个四位无符号整数,反序输出这四位数。 #include using namespace std; int main() unsigned int n;char c1, c2, c3, c4;coutn;cout“反序输出前的数为:“ n endl;return 0; ,c1=n%10+0; /分离个位数字c2=n/10%10+0; /分离十位数字c3=n/100%10+0; /分离百

28、位数字c4=n/1000+0; /分离千位数字cout“反序输出后的数为:“c1c2c3c4endl;,例2-6:大小写转换,输入一个字符,判断它是否为大写字母,如是,将其转换为对应的小写字母输出;否则,不用转换直接输出。解题思想:S1: 输入一个字符变量ch的值;S2: 判断ch是否为大写字母if (ch=A /*将ch转换为相应的小写字母*/S3: 输出ch.,#include using namespace std; int main() char ch;coutch;if(ch=A ,例2-7:找零钱问题,假定有伍角、壹角、伍分、贰分和壹分共五种硬币,在给顾客找硬币时,一般都会尽可能的

29、选用硬币个数最小的方法。例如,当要给某顾客找七角二分钱时,会给他一个伍角,2个壹角和1个贰分的硬币。请编写一个程序,输入的是要找给顾客的零钱(以分为单位),输出的是应该找回的各种硬币数目,并保证找回的硬币数最少。,例2-7:找零钱问题,解题思路:要使找得的硬币数量最少,则应尽量找面额较大的硬币。由于面额最大为5“角”,因此可用“分”作单位。假设应找的钱的总数是change分。(1) 求找得的面额最大的硬币的数量:change/50;(2) 如果(sx=change%50)!=0,说明还应找部分面额壹角的钱的张数:sx/10;以此类推,知道sx%面额=0为止。,#include using na

30、mespace std; int main() int change; /存放零钱的变量coutchange;cout“找给顾客的五角硬币个数为:“change/50endl;change=change%50;cout“找给顾客的壹角硬币个数为:“change/10endl;,change=change%10; cout“找给顾客的伍分硬币个数为:“change/5endl; change=change%5; cout“找给顾客的贰分硬币个数为:“change/2endl; change=change%2; cout“找给顾客的壹分硬币个数为:“changeendl; return 0; ,结 束 语,学好计算机的唯一途径是你的编程能力与你在计算机上投入的时间成,上机练习,正比,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报