资源预览内容
第1页 / 共50页
第2页 / 共50页
第3页 / 共50页
第4页 / 共50页
第5页 / 共50页
第6页 / 共50页
第7页 / 共50页
第8页 / 共50页
第9页 / 共50页
第10页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
?程序设计根底程序设计根底?CAUCJSJ第第2 2章章根本数据类型根本数据类型与表达式与表达式1.1.理解理解C C的几种根本数据类型。的几种根本数据类型。2.2.掌握变量、符号常量的定义与使用方法。掌握变量、符号常量的定义与使用方法。3.3.熟悉熟悉C C语言运算符算术、关系、逻辑运算符语言运算符算术、关系、逻辑运算符等的使用特点。等的使用特点。4.4.掌握各种表达式的含义与使用要点。掌握各种表达式的含义与使用要点。本章教学要求本章教学要求一、一、C C语言中数据的定义语言中数据的定义1 1常量常量2 2变量变量二、二、运算符运算符三、三、表达式表达式四、四、综合举例综合举例本章教学内容本章教学内容常常 量量1 1、常量的含义:、常量的含义:在程序运行过程中,其值保持不变的量。在程序运行过程中,其值保持不变的量。2 2、常量的分类、常量的分类符号常量符号常量整型常量整型常量字符型常量字符型常量实型常量实型常量布尔常量布尔常量符号常量符号常量1 1含义:用一个标识符表示的常量。含义:用一个标识符表示的常量。2 2定义方法:定义方法:#define #define 符号常量符号常量 数值数值 例:例:#define PRICE 30#define PRICE 30 作用是定义符号常量作用是定义符号常量PRICEPRICE的值为的值为3030,在程序中任,在程序中任何用到何用到PRICEPRICE符号常量的地方,系统将自动用常量符号常量的地方,系统将自动用常量3030代替。代替。3 3使用要点:使用要点: 为区分符号常量与变量的不同,通常符号常量为区分符号常量与变量的不同,通常符号常量用用大写字母表示。用用大写字母表示。例例exp2_1exp2_1: #include #include using namespace std; using namespace std; #define PRICE 30 #define PRICE 30 void main void main int num=10,total; int num=10,total; total=num*PRICE; total=num*PRICE; couttotalendl; couttotalendl; 整型常量整型常量C C语言表示语言表示整型常量的方法有以下三种:整型常量的方法有以下三种:1.1.十进制整数:用不带任何修饰的整数表示。十进制整数:用不带任何修饰的整数表示。如如123123、-456-456、0 0等;等;八进制整数:八进制整数:以数字以数字0 0开头的整数开头的整数。如如01230123、-011-011等;等;十六进制整数:十六进制整数:以以0x0x开头的整数开头的整数。如如0x1230x123、0x2ef0x2ef;字符常量字符常量1 1、普通字符常量:、普通字符常量: C C语言规定以单引号语言规定以单引号包围的单个字符为字符常量。包围的单个字符为字符常量。 如:如:AA、aa、2 2 、!等。等。 注意:注意:请区别请区别AA和和aa的不同;的不同; 中的字符引用的是该字符的中的字符引用的是该字符的ASCIIASCII码值。码值。 字符常量的存放形式与整数的存放形式相类似,故字符常量的存放形式与整数的存放形式相类似,故C C中的中的字符数据与整型数据之间具有相通性。字符数据与整型数据之间具有相通性。2 2、转义字符常量转义字符常量也称控制字符常量也称控制字符常量 用用开头的特殊形式的字符常量,用以产生一个动作。开头的特殊形式的字符常量,用以产生一个动作。 如:如:nn、rr、tt、vv、123123等。等。转义字符常量转义字符常量转义字符转义字符 功能功能n n 换行换行t t 横向跳格横向跳格v v 竖向跳格竖向跳格b b 退格退格r r 回车回车f f 走纸换页走纸换页 “字符字符 “ “字符字符 0 ASCII0 ASCII码字符码字符ddd 1ddd 1至至3 3位八进制数所代表的字符位八进制数所代表的字符xhh 1xhh 1至至2 2位十六进制数所代表的字符位十六进制数所代表的字符 C C语言中用双引号将一串字符括起来称为字符串常量。语言中用双引号将一串字符括起来称为字符串常量。 如如 “ “aseeasee、 “ “011011、“We are studing CWe are studing C等。等。 要点:请区别要点:请区别A A与与AA的不同。的不同。 因为它们各自在内存中存放的长度不同。因为它们各自在内存中存放的长度不同。 A A A AASCIIASCII码为码为0 0的字符的字符字符串常量字符串常量AA 01.1.十进制数形式的浮点数十进制数形式的浮点数:由数字和小数点组成。:由数字和小数点组成。 如:如:123.456123.456、0.1230.123、123.0123.0、0.00.0、123.123.等。等。指数形式的浮点数指数形式的浮点数:用字母:用字母e e表示十进制指数中的表示十进制指数中的1010。 如:如:123e3123e3表示表示123*10123*103 3 注意:注意:e e字母前必须有数字,且字母前必须有数字,且e e后的指数必须为整型。后的指数必须为整型。 如:如:e3e3、2.1e3.52.1e3.5、.e3.e3为不合法。为不合法。实型常量浮点数实型常量浮点数变变 量量1.1.变量的含义:变量的含义: 在程序执行过程中,其值可以被改变的量。在程序执行过程中,其值可以被改变的量。 变量的构成:变量的构成:变量名变量值变量名变量值 注意区分变量名和变量值注意区分变量名和变量值: :存储单元地址与存储单元内存储单元地址与存储单元内容容 a ab标识符与变量的命名标识符与变量的命名b不同类型变量的定义与使用不同类型变量的定义与使用b整型变量整型变量b实型变量实型变量b字符型变量字符型变量1212变量定义小结变量定义小结变量定义小结变量定义小结标识符与变量的命名标识符与变量的命名1 1、标识符标识符:用于标识变量名、符号常量名、数组名、函数名、:用于标识变量名、符号常量名、数组名、函数名、 类型名、文件名的有效字符序列。类型名、文件名的有效字符序列。2 2、标识符的组成:、标识符的组成:由字母、数字和下划线组成。由字母、数字和下划线组成。3 3、变量的命名、变量的命名 每个变量具有一个名称,以区分不同的变量,每个变量具有一个名称,以区分不同的变量, 变量的命名原那么:按变量的命名原那么:按“见名知意的原那么。见名知意的原那么。4 4、变量的定义方法:、变量的定义方法: 变量类型变量类型 变量名称变量名称 说明:说明: 变量必须变量必须先定义、后使用。先定义、后使用。 应保证变量名使用正确严格区分大小写应保证变量名使用正确严格区分大小写 定义后的变量,在编译时可为其分配相应大小的存储单元。定义后的变量,在编译时可为其分配相应大小的存储单元。 可在编译时依变量类型的定义检查该变量所进展的运算是否合法。可在编译时依变量类型的定义检查该变量所进展的运算是否合法。整整 型型 变变 量量1 1、含义:用于存放整型数据的变量。、含义:用于存放整型数据的变量。2 2、分类:、分类:intint、short intshort int、long intlong int、unsigned intunsigned int、 unsigned shortunsigned short、unsigned longunsigned long。3 3、存储特点:、存储特点:C C语言没有详细规定各类型数据所占内存的字节数,语言没有详细规定各类型数据所占内存的字节数,根据机型不同而不同,一般以一个机器字长存放根据机型不同而不同,一般以一个机器字长存放一个一个int int 型数据,即型数据,即4B4B。4 4、整型变量的定义方法:、整型变量的定义方法:int int 变量名变量名C C程序规定变量要先定义后使用,并且,所有变量程序规定变量要先定义后使用,并且,所有变量的定义都要放在变量的说明部分。的定义都要放在变量的说明部分。5 5、整型变量可表示的数据范围请考虑、整型变量可表示的数据范围请考虑例例exp2_2:exp2_2:/*/*求两个数之和求两个数之和*/*/#include #include using namespace std;using namespace std;Void mainVoid main int a,b,sum; /* int a,b,sum; /*定义变量定义变量*/*/ a=123;b=456; a=123;b=456; sum=a+b; sum=a+b; cout“sum= cout“sum=sumendl;sumendl; 输出信息:输出信息:sum =579sum =579实型变量实型变量1 1、含义:用于存放实型浮点型数据的变量。、含义:用于存放实型浮点型数据的变量。2 2、定义方法:、定义方法:单精度实型变量的定义:单精度实型变量的定义: float float 实型变量名;实型变量名;双精度实型变量的定义:双精度实型变量的定义: double double 实型变量名;实型变量名;长双精度实型变量的定义:长双精度实型变量的定义: long double long double 实型变量名;实型变量名;如:如: float x,y;float x,y; double z; double z;3 3、存储特点:在、存储特点:在PCPC机中机中 floatfloat型变量一般占型变量一般占4B4B内存空间内存空间, ,有效数字为有效数字为6 6至至7 7位位. . double double型型变量一般占型型变量一般占8B8B内存空间,并提供内存空间,并提供1515至至1616位有效数字。位有效数字。 long doublelong double型型变量一般占型型变量一般占16B 16B 内存空间,并提供内存空间,并提供1818至至1919位有位有效数字。效数字。4 4、说明:、说明:一个实型常量可以赋值给一个一个实型常量可以赋值给一个floatfloat型变量或型变量或doubledouble型变量。型变量。字字 符符 变变 量量1 1、 含义:用于存放字符常量含义:用于存放字符常量 存储存储ASCIIASCII码字符或码字符或8 8位二进制数位二进制数2 2、 定义方式:定义方式:char char 字符变量名字符变量名 如:如:1 1char c1,c2; char c1,c2; c1=d; c1=d; c2=s; c2=s; 2 2 unsigned char sum; unsigned char sum; 3 3、字符数据在内存中的存放形式:、字符数据在内存中的存放形式: 字符数据在内存中存放的是它的字符数据在内存中存放的是它的ASCIIASCII编码。当以字符格式输出时,编码。当以字符格式输出时,输出为字符;当以整型输出时,输出为整型数。输出为字符;当以整型输出时,输出为整型数。例例exp2_3:exp2_3:将两个小写字母转换成大写字母。将两个小写字母转换成大写字母。#include #include using namespace std;using namespace std;Void mainVoid mainchar c1,c2;char c1,c2; c1=a; c2=b; c1=a; c2=b; c1=c1-32;c2=c2-32; c1=c1-32;c2=c2-32; cout“c1= cout“c1=c1endl;c1endl; cout“c2= cout“c2=c2endl;c2endl; 程序输出为:程序输出为:c1=Ac1=Ac2=Bc2=B变量定义小结变量定义小结1 1、将整型、字符型、实型数据称为、将整型、字符型、实型数据称为C C的根本数据类型;的根本数据类型;2 2、对变量的初始化:、对变量的初始化:C C允许在变量定义时直接用允许在变量定义时直接用“= =对其进展赋值。对其进展赋值。如:如:int sum=0;int sum=0; int a,b,c=5; int a,b,c=5; int a=3,b=3,c=5; int a=3,b=3,c=5; char c1=w; char c1=w;3 3、C C语言中没有定义字符串变量,对字符串的处理将采用数组或指语言中没有定义字符串变量,对字符串的处理将采用数组或指针。请同学们注意区别字符与字符串的不同。针。请同学们注意区别字符与字符串的不同。例例exp2_4:exp2_4:列出不同数据类型所占内存的长度。列出不同数据类型所占内存的长度。#include #include using namespace std;using namespace std;void mainvoid main coutchar is sizeof coutchar is sizeofcharcharendl;endl; coutint is sizeof coutint is sizeofintintendl;endl; coutunsigned is sizeof coutunsigned is sizeofunsignedunsignedendl;endl; coutshort is sizeof coutshort is sizeofshortshortendl;endl; coutlong is sizeof coutlong is sizeoflonglongendl;endl; coutfloat is sizeof coutfloat is sizeoffloatfloatendl;endl; coutdouble is sizeof coutdouble is sizeofdoubledoubleendl; 、 =、 =、 !=!=逻辑运算符逻辑运算符!、!、&、|位运算符位运算符、 、| |、 、 & &赋值运算符赋值运算符= = 以及扩展运算符以及扩展运算符+=,-=,*=,/=+=,-=,*=,/=条件运算符条件运算符? :逗号运算符逗号运算符,指针运算符指针运算符* * 和和 & &求字节数运算符求字节数运算符sizeofsizeof强迫类型转换强迫类型转换类型类型分量运算符分量运算符. -. -下标运算符下标运算符 其它其它函数调用运算符函数调用运算符算术运算符算术运算符1 1、组成:、组成:+ +、- -、* *、/ /、% %求余、求余、+自增、自增、-自减自减2 2、使用要点:、使用要点: 1 1两个整型数相除,其结果为整型;两个整型数相除,其结果为整型; 如:如:10/3=310/3=3 -5/3=-1 -5/3=-1 负数采用负数采用“向零取整向零取整 2 2% %运算符的两个操作数必须是整型的;运算符的两个操作数必须是整型的; 如:如:7%4=37%4=3 特别情况:特别情况: 0%5=0 0%5=0;5%0=55%0=5; -7%4=-3 -7%4=-3;-7%-4=-3-7%-4=-3; 7%-4=3 7%-4=3。 即:即: % %运算的符号只取决于第一个数符。运算的符号只取决于第一个数符。 算术运算符算术运算符使用要点使用要点3 3+与与-运算符的使用:运算符的使用:+与与-运算只能用于变量,而不能用于常量或表达式。运算只能用于变量,而不能用于常量或表达式。 如:如:5+5+或或a+ba+b+为不合法的。为不合法的。i+ i+ 与与+i+i,i-i-与与-i-i的区别的区别 +i +i与与-i-i称为前缀形式:在计算时先改变变量的值,再参称为前缀形式:在计算时先改变变量的值,再参与其它运算。与其它运算。 i+ i+与与i-i-称为后缀形式:在计算时先参与其它运算,再改称为后缀形式:在计算时先参与其它运算,再改变变量的值。变变量的值。赋值运算符赋值运算符1 1、含义:将、含义:将“=“=右边的运算对象之值赋给左边的运算对象。右边的运算对象之值赋给左边的运算对象。 如:如:x=1; x=x+1;x=1; x=x+1;2 2、使用要点:、使用要点:1 1当当“=“=两边数据类型不同时,将进展数据类型的自动转换,两边数据类型不同时,将进展数据类型的自动转换,原那么是:以原那么是:以“=“=左边运算对象的数据类型为准。左边运算对象的数据类型为准。 如:如: int x;int x; float y=3.5; float y=3.5; x=y; x=y; 那么运行结果为那么运行结果为intint型型说明:说明:2 2复合赋值运算符复合赋值运算符赋值运算时不同类型数据间的自动转换赋值运算时不同类型数据间的自动转换1 1、实型数据赋值给整型数据时,舍弃小数部分;、实型数据赋值给整型数据时,舍弃小数部分; 即:即:int=floatint=float的结果为的结果为intint型。型。如:如:float a;float a; int s; int s; a=12.34; a=12.34; s=a; s=a; 这时这时s s的值为的值为1212。2 2、将整型数据赋值给实型变量时,数值不变,但数据是浮点形式的;、将整型数据赋值给实型变量时,数值不变,但数据是浮点形式的; 即即float=intfloat=int的结果为的结果为floatfloat型。型。如:如:int s;int s; float a; float a; s=12; a=s; s=12; a=s; 这时这时a a的值为的值为12.0000012.00000。3 3、当字符数据赋值给整型变量时,那么将字符数据放到整型变量的低、当字符数据赋值给整型变量时,那么将字符数据放到整型变量的低8 8位中,高位中,高8 8位数根据的存放数据有两种情况:位数根据的存放数据有两种情况: 即:即: int=charint=char 当当charchar为无符号为无符号或或unsigned charunsigned char时,时,高高8 8位应补位应补0 0; 如:如:unsigned char c;unsigned char c; int x; int x; c=376; c=376; x=c; x=c; 那么那么x x的值为的值为254254。当当charchar为有符号为有符号数据时,高数据时,高8 8位需进展位需进展“符号位扩展符号位扩展,即高,即高8 8位将根位将根据符号位的值来决定是补据符号位的值来决定是补0 0或补或补1 1; 如:如:char c;char c; int x; int x; c=376; c=376; x=c; x=c; 那么那么x x的值为的值为-2-2。1 1 1 1 1 1 1 01 1 1 1 1 1 1 01 1 1 1 1 1 1 01 1 1 1 1 1 1 00 0 0 0 0 0 0 00 0 0 0 0 0 0 01 1 1 1 1 1 1 11 1 1 1 1 1 1 11 1 1 1 1 1 1 01 1 1 1 1 1 1 01 1 1 1 1 1 1 01 1 1 1 1 1 1 0赋值运算时不同类型数据间的自动转换赋值运算时不同类型数据间的自动转换赋值运算时不同类型数据间的自动转换赋值运算时不同类型数据间的自动转换4 4、将带符号的整型数据赋值给长整型数据时,要进展符号扩展。假如、将带符号的整型数据赋值给长整型数据时,要进展符号扩展。假如intint型数据型数据为正值,那么为正值,那么long int long int 型数据的高型数据的高1616位补位补0 0;假如;假如intint型数据为负值,那么型数据为负值,那么long int long int 型数据的高型数据的高1616位补位补1 1,以保持其原有数据不变。,以保持其原有数据不变。5 5、将、将 long int long int 型数据赋值给型数据赋值给intint型数据时,只将型数据时,只将long int long int 型数据的低型数据的低1616位原位原封不动的送到封不动的送到int int 型变量中去型变量中去截断截断。6 6、将、将unsigned intunsigned int型数据赋值给型数据赋值给long intlong int型数据时,不存在符号扩展问题,只型数据时,不存在符号扩展问题,只需将高位补需将高位补0 0;将;将unsigned intunsigned int型数据赋值给型数据赋值给 int int型数据时,有可能出现错误型数据时,有可能出现错误数据。数据。 如:如: int a;int a; unsigned b=65535; unsigned b=65535; a=b; a=b; printf printf“%dn“%dn,a,a; ; 此时此时a a的值为的值为-1-1。补码补码1 1 1 1 1 1 1 11 1 1 1 1 1 1 11 1 1 1 1 1 1 11 1 1 1 1 1 1 1复习复习补码补码: :1 1、数据在计算机中是以补码的形式存放的。、数据在计算机中是以补码的形式存放的。2 2、补码是数据在计算机中的一种编码原那么。、补码是数据在计算机中的一种编码原那么。正数的补码仍为它的原码正数的补码仍为它的原码8 8位二进制位二进制负数的补码是将原码的除最高位以外的所有位取反然负数的补码是将原码的除最高位以外的所有位取反然后加后加1 1,最高位为,最高位为1 1。 如:如:1515的补码为:的补码为:00001111000011118 8位位 0000000000001111 00000000000011111616位位 -15 -15的补码为:的补码为:11110001111100018 8位位 11111111111110001 111111111111100011616位位复合赋值运算符的使用要点复合赋值运算符的使用要点1 1、含义:在赋值运算符、含义:在赋值运算符“= =之前加上其它运算符构成的运之前加上其它运算符构成的运 算符。算符。2 2、一般形式:、一般形式: 表达式表达式1 1 运算符运算符= =表达式表达式2 2 等价于:等价于:表达式表达式1=1=表达式表达式1 1 运算符运算符 表达式表达式2 2 如:如:a+=3 a+=3 等价于等价于 a=a+3a=a+3x*=3 x*=3 等价于等价于 x=x*3x=x*3x%=3 x%=3 等价于等价于 x=x%3x=x%3x/=y+3 x/=y+3 等价于等价于 x=x/x=x/y+3y+33 3、使用要点、使用要点但凡二元二目运算符,都可以与但凡二元二目运算符,都可以与“= =组合成复合赋值符组合成复合赋值符 如:如:+=,-=,*=,/=,%=,=,&=,=,|=+=,-=,*=,/=,%=,=,&=,=,|=等。等。使用复合赋值符的目的:简化程序;进步编译效率。使用复合赋值符的目的:简化程序;进步编译效率。逗号逗号运算符运算符顺序求值运算符顺序求值运算符1 1、含义:用于分隔各个表达式,最后一个表达式的值代表整个表达、含义:用于分隔各个表达式,最后一个表达式的值代表整个表达式的值。式的值。2 2、形式:、形式:简单形式:简单形式:表达式表达式1 1,表达式,表达式2 2 如:如:a=1,a+2a=1,a+2一般形式:一般形式:表达式表达式1 1,表达式,表达式2 2,表达式,表达式3 3,。,表达式,。,表达式n n 如:如:a=3,a+3,a+10,a=a+20,a+1a=3,a+3,a+10,a=a+20,a+13 3、求解过程、求解过程从左至右依次计算各个表达式的的值,最后一个表达式的值即从左至右依次计算各个表达式的的值,最后一个表达式的值即为整个表达式的值。为整个表达式的值。例:例:1 1a=3*5,a*4 a=3*5,a*4 结果为结果为6060 2 2a=3*5,a*4a=3*5,a*4,a+5 ,a+5 结果为结果为20 20 关系运算符1 1、含义:关系运算符用于判断各个运算对象之间的互相关系、含义:关系运算符用于判断各个运算对象之间的互相关系2 2、符号类型:、符号类型: 、=、=、!=!=3 3、优先级:、优先级: 、=的优先级一样,而的优先级一样,而= = =、!=!=优先级一样,且前者高于优先级一样,且前者高于后者;后者;关系运算符的优先级低于算术运算符,高于赋值运算符。关系运算符的优先级低于算术运算符,高于赋值运算符。4 4、例:、例:ca+b ca+b 等价于等价于 cca+ba+bab!=c ab!=c 等价于等价于 abab!=c!=ca= =bc a= =bc 等价于等价于 a= =a= =bcbc a=bc 等价于等价于 a=a=bcbc 逻辑运算符1 1、含义:逻辑运算符用于完成逻辑布尔运算。、含义:逻辑运算符用于完成逻辑布尔运算。2 2、符号类型:、符号类型:&逻辑与、逻辑与、|逻辑或、逻辑或、! !逻辑非逻辑非3 3、使用要点、使用要点在在C C语言中语言中, ,没有逻辑型的数据没有逻辑型的数据, ,以以“1 1代表代表“真,以真,以“0 0代表代表“假。假。逻辑运算真值表逻辑运算真值表逻辑运算规那么:逻辑运算规那么: & & 参与运算的表达式同时为真,参与运算的表达式同时为真, 那么那么&运算的结果为真;运算的结果为真; | | 参与运算的表达式其中之一参与运算的表达式其中之一 为真,那么为真,那么|运算的结果为真;运算的结果为真; ! ! 为单目运算符,取运算对象的相反值。为单目运算符,取运算对象的相反值。各种各种运算符的优先级运算符的优先级 !逻辑非!逻辑非 高高 算术运算符算术运算符 关系运算符关系运算符 &和和| 赋值运算符赋值运算符 低低 表表 达达 式式1 1、含义:由运算符和运算对象组成的字符序列。、含义:由运算符和运算对象组成的字符序列。2 2、表达式的种类:、表达式的种类:算术表达式:如算术表达式:如 a+b+ca+b+c赋值表达式:赋值表达式:如如 x=3.15x=3.15逗号表达式:如逗号表达式:如 a=3,a+15a=3,a+15关系表达式:关系表达式:a10a10逻辑表达式:逻辑表达式:x1 & x1 & xbab、 a+bc-da+bc-d、a=3a=3 b=5b=5、ababab bcbbab的值为的值为“0 0; 而而abaca+bc的值为的值为“1 1; ; 表达式表达式c=abc=ab的值为的值为“0 0; ; 表达式表达式a=b+ca=b+c的值为的值为“1 1。C C语言识别表达式是否成立的方法是:所有值为语言识别表达式是否成立的方法是:所有值为“0 0的表达式表示的表达式表示“假假, ,所所有值为有值为“非零包括非零包括-1-1的表达式都表示的表达式都表示“真。真。请区别:请区别:x=1 x=1 与与 x=1 x=1 的不同。的不同。逻辑表达式逻辑表达式1 1、含义:将两个逻辑值连接起来的表达式成为逻辑表达式、含义:将两个逻辑值连接起来的表达式成为逻辑表达式. .2 2、使用要点:、使用要点:逻辑运算符两侧的运算对象不但可以是逻辑值也可以是任何类型的数据逻辑运算符两侧的运算对象不但可以是逻辑值也可以是任何类型的数据, ,而表而表达式的值最终结果为逻辑值达式的值最终结果为逻辑值. .例如例如: :1 1a=4,b=5 a=4,b=5 那么表达式那么表达式 a&b a&b 的值为的值为1,1, 而表达式而表达式 a|b a|b 的值为的值为1.1.测试逻辑表达式值的方法:在逻辑表达式的运算过程中测试逻辑表达式值的方法:在逻辑表达式的运算过程中, ,并不是所有的运算符并不是所有的运算符都被执行都被执行, ,只是在必须执行下一个表达式才能求出整个表达式的值时才执行下只是在必须执行下一个表达式才能求出整个表达式的值时才执行下一个表达式一个表达式. .例如例如: :1 1对对a&b&ca&b&c 只有当只有当a a的值为真时才断定的值为真时才断定b b的值的值, , 只有只有a a和和b b的值都为真时才断定的值都为真时才断定c c的值的值. . 当当a a的值为假时的值为假时, ,就不再断定就不再断定b b和和c c的值的值. . 2 2对对a|b|ca|b|c 只要只要a a为真就不再断定为真就不再断定b b和和c c的值。的值。 3 3假如有假如有a=1,b=12,c=3,d=4,m=1,n=1a=1,b=12,c=3,d=4,m=1,n=1; 那么表达式那么表达式: :m=abm=ab&n=cdn=cd的值为的值为0,m0,m的值为的值为0,0,而而n n的值为的值为1,1, 因为因为n=cdn=cd没有被执行没有被执行. .表达式中数据转换原理1 1、自动转换原那么自动转换原那么以数据类型所占内存存储空间的长度最大者为准。以数据类型所占内存存储空间的长度最大者为准。 如:如: int + char + float floatint + char + float float 4B 1B 4B 4B 4B 1B 4B 4B2 2、强迫转换原那么强迫转换原那么各类型数据的混合运算:各类型数据的混合运算:高低doublefloatlongunsignedintcharshort强迫类型转换强迫类型转换1 1、功能:由用户根据自己的要求来决定数据类型的转换结果。、功能:由用户根据自己的要求来决定数据类型的转换结果。2 2、格式:、格式: 类型名类型名 表达式表达式 注意不可缺少。注意不可缺少。3 3、应用:、应用:1 1为满足运算的要求:为满足运算的要求:如:如: int i=3;int i=3; float x=13.6; float x=13.6; intintx%i; x%i; 13%4=113%4=12 2进步运算精度:进步运算精度:如:如: int =10;int =10; float x; float x; x=i/3+25.5; x=i/3+25.5; 3+25.5=28.53+25.5=28.5 或或 x=x=floatfloati/3+25.5; i/3+25.5; 3.33+25.5=28.833.33+25.5=28.83例例exp2_5exp2_5:取整型量的最低:取整型量的最低4 4位位#include #include using namespace std;using namespace std;int mainint main int i;int i;coutcouti;cini;couticouti的最低的最低4 4位对应的十进制数是:位对应的十进制数是:i&0X0Fi&0X0Fendl;endl;return 0;return 0; 例例exp2_6exp2_6:根据三边长求三角形面积:根据三边长求三角形面积#include #include #include #include using namespace std;using namespace std;int mainint main double a, b, c, s, area;double a, b, c, s, area;cout Please input a, b, c =;cout a b c;cin a b c;s = s = a+b+ca+b+c/2;/2;area = sqrtarea = sqrts*s*s-as-a* *s-bs-b* *s-cs-c; ;cout area = area endl;cout area = area endl;return 0;return 0; 例例exp2_7exp2_7:求一元二次方程:求一元二次方程ax2+bx+c=0ax2+bx+c=0的根,其中系数的根,其中系数a, b, a, b, c c为实数,由键盘输入。为实数,由键盘输入。#include #include #include #include #include #include #include #include using namespace std;using namespace std;using namespace std;using namespace std;int mainint mainint mainint main double a, b, c, delta, p, q;double a, b, c, delta, p, q;double a, b, c, delta, p, q;double a, b, c, delta, p, q;cout Please intput a, b, c = ;cout Please intput a, b, c = ;cout Please intput a, b, c = ;cout a b c;cin a b c;cin a b c;cin a b c;delta = b*b-4*a*c;delta = b*b-4*a*c;delta = b*b-4*a*c;delta = b*b-4*a*c;p = -b/p = -b/p = -b/p = -b/2*a2*a2*a2*a; ; ; ;q = sqrtq = sqrtq = sqrtq = sqrtfabsfabsfabsfabsdeltadeltadeltadelta/ / / /2*a2*a2*a2*a; ; ; ; if if if if delta = 0delta = 0delta = 0delta = 0 cout x1 = p+q endl x2 = p-q endl; cout x1 = p+q endl x2 = p-q endl; cout x1 = p+q endl x2 = p-q endl; cout x1 = p+q endl x2 = p-q endl;elseelseelseelse cout x1 = p + j q;cout x1 = p + j q;cout x1 = p + j q;cout x1 = p + j q;cout endl x2 = p - j q endl;cout endl x2 = p - j q endl;cout endl x2 = p - j q endl;cout endl x2 = p - j q endl; return 0;return 0;return 0;return 0; 例例exp2_8exp2_8:输入一个华氏温度,计算并输出对应的摄氏温度:输入一个华氏温度,计算并输出对应的摄氏温度#include #include using namespace std;using namespace std;int mainint main double c, f;double c, f;coutcoutf;cinf;c=5.0/9.0 * c=5.0/9.0 * f-32f-32; ;coutcout对应于华氏温度对应于华氏温度ff的摄氏温度为的摄氏温度为cendl;cendl;return 0;return 0; 例例exp2_9exp2_9:输入一个四位无符号整数,反序输出这四位数。:输入一个四位无符号整数,反序输出这四位数。#include #include using namespace std;using namespace std;int mainint main unsigned int n;unsigned int n;char c1, c2, c3, c4;char c1, c2, c3, c4;coutcoutn;cinn;coutcout反序输出前的数为:反序输出前的数为: n endl; n endl;c1=n%10+0; c1=n%10+0; /别离个位数字别离个位数字c2=n/10%10+0;c2=n/10%10+0;/别离十位数字别离十位数字c3=n/100%10+0;c3=n/100%10+0;/别离百位数字别离百位数字c4=n/1000+0; c4=n/1000+0; /别离千位数字别离千位数字coutcout反序输出后的数为:反序输出后的数为:c1c2c3c4endl;c1c2c3c4endl;return 0;return 0; 例例exp2_10 exp2_10 :输入一个字符,判断它是否为大写字母,:输入一个字符,判断它是否为大写字母,如是,将其转换为对应的小写字母输出;否那么,不用如是,将其转换为对应的小写字母输出;否那么,不用转换直接输出。转换直接输出。#include #include using namespace std;using namespace std;int mainint main char ch;char ch;coutcoutch;cinch;ififch=A & ch=A & ch=Z ch=ch-A+a; ch=ch-A+a;coutcout将大写转换为小写后,该字母为:将大写转换为小写后,该字母为:chendl;chendl;return 0;return 0; 例例exp2_11exp2_11:找零钱问题:找零钱问题假定有伍角、壹角、伍分、贰分和壹分共假定有伍角、壹角、伍分、贰分和壹分共五种硬币,在给顾客找硬币时,一般都会尽可五种硬币,在给顾客找硬币时,一般都会尽可能的选用硬币个数最小的方法。例如,当要给能的选用硬币个数最小的方法。例如,当要给某顾客找七角二分钱时,会给他一个伍角,某顾客找七角二分钱时,会给他一个伍角,2 2个壹角和个壹角和1 1个贰分的硬币。请编写一个程序,个贰分的硬币。请编写一个程序,输入的是要找给顾客的零钱以分为单位,输入的是要找给顾客的零钱以分为单位,输出的是应该找回的各种硬币数目,并保证找输出的是应该找回的各种硬币数目,并保证找回的硬币数最少。回的硬币数最少。#include #include using namespace std;using namespace std;int mainint main int change;int change;/存放零钱的变量存放零钱的变量coutcoutchange;cinchange;coutcout找给顾客的五角硬币个数为:找给顾客的五角硬币个数为:change/50endl;change/50endl;change=change%50;change=change%50;coutcout找给顾客的壹角硬币个数为:找给顾客的壹角硬币个数为:change/10endl;change/10endl;change=change%10; change=change%10; coutcout找给顾客的伍分硬币个数为:找给顾客的伍分硬币个数为:change/5endl;change/5endl;change=change%5;change=change%5;coutcout找给顾客的贰分硬币个数为:找给顾客的贰分硬币个数为:change/2endl;change/2endl;change=change%2;change=change%2;coutcout找给顾客的壹分硬币个数为:找给顾客的壹分硬币个数为:changeendl;changeendl;return 0;return 0; 本章练习本章练习一、课外练习与实验要求一、课外练习与实验要求请同学们认真复习课堂所讲授的内容请同学们认真复习课堂所讲授的内容, ,认真分析课本认真分析课本中例题并上机理论。中例题并上机理论。针对教材中的考虑题,在课后进展充分准备,利用针对教材中的考虑题,在课后进展充分准备,利用课内外实验时间完成上机实验,并按照标准撰写课内外实验时间完成上机实验,并按照标准撰写? ?实实验报告验报告? ?。二、课外学习建议二、课外学习建议充分利用充分利用BbBb网络平台进展课外学习。网络平台进展课外学习。有问题和建议一定及时答疑与交流。有问题和建议一定及时答疑与交流。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号