高考理综答案(全国卷).ppt
《高考理综答案(全国卷).ppt》由会员分享,可在线阅读,更多相关《高考理综答案(全国卷).ppt(117页珍藏版)》请在装配图网上搜索。
C+语言程序设计,第二章 数据类型、运算符与表达式,2,本章主要内容,计算机中信息表示 C+基本数据类型 基本运算符和表达式 数据的混合运算与类型轮换 简单输入输出,预备知识:计算机中信息的表示,计算机中的进制 计算机中的码制 计算机中数的表示 计算机中字符的表示,计算机中数值的表示二进制,计算机中直接使用十进制有一定的困难 计算机中普遍使用二进制,辅助使用八、十六进制 所有进制均由十进制演变而来 不同进制之间存在转换问题,前一页,下一页,5,进位计数制,计算机中的进制,十进制数有如下特点: 只使用10个符号,09 逢十进一 一个数的值等于各位的权与该位数码的乘积之和,6,进位计数制,计算机中的进制,R进制数有如下特点: 只使用R个符号,0 R-1 逢R进一 一个数的值等于各位的权与该位数码的乘积之和。,计算机中常用进制:二、八、十六进制,7,计算机中的进制,二进制,二进制是计算机中最常用的进制 二进制数有如下特点: 数码符号少,便于用电子元件来表示 运算规则简单,易于进行高速运算 加法:1+0 = 0+1 = 1 0+0 = 0 1+1 = 0(进位) 减法:1-0 = 1 1-1 = 0 0-0 = 0 0-1 = 1(借位) 乘法:11 = 1 10 = 01 = 00 = 0 除法:0 1 = 0 11 = 1 用1表示“真”,0表示“假”时可以把逻辑与数值处理相统一 例: b = ( x=y ) + 4,8,0,0,0.,0,1,1,101,1,0,1,101,0,1,0,1,二进制,二进制数的缺点:,数值位数太多,容易出错,二进制计算实例:,计算机中的进制,9,其它进制,使用八进制和十六进制的原因: 二进制数太长,书写、阅读、记忆均不便 八进制和十六进制与二进制之间的转换直观、方便 八进制逢八进一,十六进制逢十六进一 用A,B,C,D,E,F(可小写)代表10以上的数,0,0,4.,0,2,D,F,A.,1,0,1,计算机中的进制,几种进制的对照,前一页,下一页,11,进制转换,不同进制的表示: 括号数字下标 例:(173)8 表示八进制数173 数字后面加大写字母 B二进制 D十进制 Q八进制 H十六进制 例:173Q 表示八进制数173 5FH 表示十六进制数5F,计算机中的进制,12,进制转换,R进制转换成十进制 展开位权多项式,按十进制规则计算,计算机中的进制,13,例:(11)10=( )2,1011,(123)10= ( )8 = ( )16,173,7B,115210 2 余数 1 1 0 1,1231510 8 余数 3 7 1,12370 16 余数 11 7,进制转换,十进制转换成R进制 整数转换除R取余法(倒过来),计算机中的进制,14,一般实数转换,例:(0.6875)10=( )2,0.1011,0.6875 0.375 0.75 0.5 0 2 整数 1 0 1 1,(0.31)10= ( )8 = ( )16,0.310.480.84 8 整数 2 3,0.310.960.36 16 整数 4 F,0.23,0.4F,小数与整数部分分别转换,合写在一起即可,小数转换乘R取整法,进制转换,计算机中的进制,15,ED.5A,355.264,例: (11101101.0101101 )2=( )8 = ( )16,0 1 1 , 1 0 1, 1 0 1 . 0 1 0, 1 1 0, 1 0 0 ( 8=23) 3 5 5 . 2 6 4,1 1 1 0 , 1 1 0 1 . 0 1 0 1 , 1 0 1 0 ( 16=24) E D . 5 A,进制转换,二进制转换为八进制或十六进制 小数点为中心向左右三位(或四位)为一组分别转换 头尾不足三位(或四位)时,用0补上。,计算机中的进制,16,1 2 3 . 7 001 010 011 . 111,例: 123.7O =,1010011.111B,4F.3H =,1001111.0011B,4 F . 3 0100 1111 . 0011,进制转换,八进制或十六进制转换为二进制 将每个数字分别转换,计算机中的进制,计算机中符号的表示码制,正负号必须用二进制表示计算机才能识别 真值带正负号的数的二进制表示 例:15 1111 -15 -1111 机器数带符号的数在机器中的表示 根据机器数转换规则的不同,数值数据有多种编码方式,一般称为码,前一页,下一页,18,原码,原码是最简单的机器数编码 转换规则: 最高位为符号位,0表示正号,1表示负号。 数值部分保持不变 实例:(为简单起见,设字长为8位。) 1111原=00001111 -1111原=10001111 优点: 简单、直观 缺点: 减法运算较繁,不便于CPU的运算处理 有+0( 00000000 )和 -0( 100000000 ),带符号数的表示,19,补码,补码是最常用的编码之一 补码求取规则 最高位为符号位,0为正,1为负数 正数补码数值不变,负数补码将真值求反加一 例:1111补 =00001111 -1111补=-0001111补=11110000+1=11110001,带符号数的表示,20,补码,求补码的方法 由补码求真值: 先由最高位判断符号 正数数值不变,负数求反加一。 例:00001111真 = 1111 11110001真= -(0001110+1) = -1111 由一数补码求其负数的补码 : 连符号一起求反加一 例:X = 1111 -X补 = -00001111补 = 11110001 X = -1111 -X补 = -11110001补= 00001111,带符号数的表示,21,补码,补码运算规则: 符号代入一起计算,根据首位结果判断符号。 减法转为加法进行运算,例:X=-1101 Y=110 求:X+Y=,解: X补=11110011 Y补=00000110,X补 11110011 Y补 00000110 XY补,0,0,1,1,1,1,1,1,-0000111,表示结果为负,真值求反加一,带符号数的表示,22,补码,解: X补=00001101 Y补=00000110 -Y补=11111010,111,减法转为加法运算例: X=1101 Y=110 求:X-Y,X补 00001101 -Y补 11111010 X-Y补,1,1,1,0,0,0,0,1,超过字长溢出,0,带符号数的表示,23,计算机中数的表示,计算机中的数值信息分整数与实数两种 整数与实数在计算机中的表示及存储方式完全不同 整数:说小数点固定隐含在个位数的右面,所以整数也叫做“定点数” 实数:小数点位置不固定称为“浮点数” 在CPU中分别用定点和浮点运算器处理,24,整数的表示,整数的一般表示方法 第一位为符号位,数值部分(尾数)用补码表示, 符号位 数值部分 (n为字长),计算机中数的表示,25,整数的表示,整数分类 有符号整数: 普通带符号整数 存储:第一位为符号位,其余位按补码规则存放 例: 15 00001111 -15 11110001 ( 设字长8位 ) 无符号整数: 全部为正整数,没有负数 存储:没有符号位,全部为数值位 表示范围:字长 n 位 无符号数:0 2n-1 一般:8位:0255,16位:0 65535 有符号数:-2n-1 2n-1-1 一般:8位:-128127,16位:-32768 32767,计算机中数的表示,26,实数的表示,数学上的实数有两种表示形式 实数形式: 例:56.72、-0.00125 指数形式: 例:0.5672102 = 5.672 101 =0.05672 10-3 -0.12510-2 = -12.510-4 注意:指数形式的表示不是唯一的。 科学计数法: 指数尾数是纯小数且第一位小数不为0的指数形式。 例:56.72 0.5672102 -0.00125 -0.12510-2,计算机中数的表示,27,实数的表示,计算机中以指数形式中的科学计数法表示实数,例: N= -33.5D=-10001.1B=-0.1000112101,说明:浮点法编码随使用的系统而不同 例:Pentium尾数使用原码阶码使用偏移码,计算机中数的表示,28,文字信息在计算机中的表示,西文字符用ASCII码存放 C+使用扩充ASCII码,共有256个字符,编码从0255。 包括大小写英文字母及数字、标点符号和一些控制字符,前32个为不可见字符。 一个英文字符占一个字节8位二进制编码 例:A编码为:01000001B41H65D a编码为: 01100001B61H97D 0编码为: 00110000B30H48D,西文字符,29,字符的编码,标准ASCII码字符集,30,文字信息在计算机中的表示,中文字符用机内码存放 机内码由国家统一制定编码标准 汉字编码的种类: GB2312-80:6763个简化字汉字和682个图形符号 GBK-95: 21003个汉字,简化字繁体字+CJK GB18030-2000:超过27000个汉字 台湾标准:BIG5繁体字 一个中文字符占两个字节,且为与英文字符区别,每个字符第一位为1 C+一般语句不接受中文字符,仅在输出或字符串中可以使用,中文字符,第一节 基本数据类型,数据类型概述 常量与变量,32,数据类型概述,数据是程序处理的对象 不同的数据处理方式不同 数据根据使用及存储方式分成各种数据类型 每种数据类型允许进行的操作不同 数据类型分成两大类 基本型:每种类型拥有不同的内存空间 构造型:用于成批处理数据,由基本型 数据组成,33,数据类型概述,说明: 每种类型可分成若干子类型。 各种类型用不同关键字表示。 关键字是由系统指定用于表示特殊含义的单词,用户禁止使用(参见教材P6)。,C的数据类型,34,C的基本数据类型,35,常量与变量,C+中的常量与变量的定义与数学基本相同 常量 常量是在程序执行的过程中,其值不变的量,常为数值或字符 例:3.5,-12,“We“ 变量 变量就是值在程序执行的过程中可变的量,常用符号表示 例:x,36,C+数值常量,C+中的常量,C+常量根据数据类型的不同分类 整常量: 短整型和整型为默认类型 例:12, 0, -20( short ),68046,-40825( int ) 长整型数后加L( 或l )表示: 例: 12L , -12l 无符号数后加U ( 或u ) : 例:35u, 34UL,17lu 允许直接使用八进制和十六进制数 数字前加0表示八进制数。例: 020, 数字前加0x表示十六进制数。例: 0x35 ,0XABCL 程序中使用八和十六进制时一般视为无符号数 注意:(082,ox12,0xagfl等都是错误的),37,C+中的常量,浮点常量: 一般形式:3.1425, .15 ,-3.84 指数形式:1e-1,-12.3E3等; 注意:(12,E1,12E,.E2等都是错误的) 布尔型常量: 只有 false 和 true 两个值,无定界符,38,C+中的常量,C+字符常量,字符常量: 字符型常量是用单引号括起来的一 个字符。 例: A , c , 5 字符型常量以ASCII码存储,占1个字节,用8个二进制位表示。 例: A ,错误例: AB , x123 ,0X41、0101,不可见或不能输入的字符用转义字符表示 转义字符由“”加一个字符或3个数字组成 例: n , 101 , 012 , x41 ,39,C+中的常量,C+转义字符(表2.2),返回,40,C+字符串常量,字符串常量:字符串常量是使用双引号括起来的字符序列。(可包括空格) 例:“How do you do.“、 “A145x6ax6f “ 说明: 双引号中不能出现双引号、单引号、反斜线、换行符等 如果需要出现,必须使用转义字符 例 “ “good“ “,“ hellon ok“, 表示字符串:“good“和 hello ok 同样,程序中如表示文件路径应为: “ C: my Documects file.cpp“,C+中的常量,41,C+字符串常量,字符串存储: 逐个字符存放,每个字符占用1字节,存储相应的ASCII码 n个字符时系统要分配n+1个字节空间,因为系统自动在最后加一个“串终止符” 0 例:“CHINA“,C+中的常量,注意:char c; c=“a“;,注意:“a“ a,42,C+字符串常量,说明: 字符串常量可以使用继行符“”。即一个字符串常量在一行写不下时,可以延长到若干行。 例:“Copyright 1984 AT&T International Incorporated. All right reserved.“,C+中的常量,43,C+符号常量,符号常量(标识符常量)的定义: 用标识符(用户自起名称)代表一个常量 目的:增加程序可读性、通用性和方便性 符号常量声明格式: #define 符号常量名 常量值,C+中的常量,关键字,用户自定名,真值,#define PI 3 .1415926 area = PI *r * r const 数据类型说明 符号常量名=常量值 const double PI = 3 .1415926,44,符号常量例:(NO2.2-1) #define PI 3.14159 void main( ) float len, area, r; r = 3.5; len = 2.0 *PI * r; area = PI * r * r; cout “周长 “ len “n面积 “ area endl; ,C+中的符号常量,C+中的常量,45,C+中的变量,变量定义 变量遵循“先定义,后使用”的原则 定义任务:指定变量名称、数据类型及存储类型 变量命名规则 必须遵守标识符原则 严格区分字符大小写 不能与“关键字”重名 标识符规则: 只能使用字母、数字和下划线 首字只能是字母或下划线 标识符的最多字符个数与系统有关(VC+为247),46,C+中的变量,变量的声明(定义),变量声明格式: 数据类型名 变量名1,变量名2,; 例1:int a; /定义整型变量a float volume; /定义浮点型变量volume double x1; /定义双精度变量x1 char _1B; / 定义字符变量_1B bool flag; /字义布尔型变量flag 例2:下列标识符中错误的是? isReady _1_2A PAN. who? sp-ptr o3L h(var) 6str tree9_1 float,47,C+中的变量,C+变量类型,整型 基本型:类型名:int 短整型:类型名: short int或short 长整型:类型名: long int或long 无符号型: 含义:存储时最高位是数值而不是符号 类型名:unsigned 分类: 无符号短整型,类型名: unsigned short 无符号长整型,类型名:unsigned long,48,C+变量类型,实型 单精度型:类型名: float,有效位数7位 双精度型:类型名: double,有效位数15位 长双精度型:类型名: long double ,有效位数15位 字符型: 字符型:类型名:char 有符号字符型:类型名:singed char 无符号字符型:类型名:unsigned char 注意: 有无符号仅影响转换成整型时,每一位是否处理成符号位 字符型变量只能存储一个字符, C+ 没有字符串型变量,C+中的变量,49,C+变量类型,说明: 布尔型变量只有 false 和 true 两个值 多个同类型变量可以用一个类型名定义 例: int a, b, A, B; 或 int a; int b; int A; int B; 不同类型变量也可在一行定义 char D; float d;,C+中的变量,50,变量的存储,变量存储: 变量声明后系统会在内存中分配一定存储单元用于存放变量的值,各种类型的变量在内存中分到的字节数是固定的 变量所分空间第一个字节的地址称为变量的地址 各类型数据存储编码亦不同。,变量名 a,数据表,C+中的变量,51,整数按补码存放,int c= -15,例: short int a=3,变量的存储,数据表,返回,C+中的变量,52,例:char c=a;,实数按浮点数用原码存放,例:float f = -25.75,=-11001.11B,字符型按ASCII码存放,=-0.11001112101,注意:字符数据可用ASCII码和整型数据进行混合运算。,数据表,变量的存储,C+中的变量,53,变量的初值,变量赋初值: 就是指在定义变量的同时给变量一个值。 格式: 变量说明 = 初值 变量说明(初值) 例: char c=a; bool b= true; short int a( 3 ); float f ( -71.875 );,C+中的变量,54,常量与变量,C+变量存储类型,例: static int net; /定义静态整型变量net,55,C+程序实例,#include / no2.2-2.cpp void main( ) const double PI = 3.14159; float v, area, r,h; cout r; h = 3.2; area = PI * r * r; v = PI * r * r * h; cout “底面积“ area“n圆柱体体积“ v endl; ,编译预处理,主函数,定义符号常量,定义变量,输入数据,常量直接赋值,计算,输出结果,56,常量与变量,运行结果: 请输入半径:2.5 底面积 19.635 圆柱体体积 62.8318,C+程序实例,第二节 运算符与表达式,基本运算符与表达式 算术运算符与表达式 关系运算符与表达式 逻辑运算符与表达式 赋值运算符与表达式 条件运算符与表达式 逗号运算符与表达式 C+常用库函数,58,基本运算符与表达式,运算符是数据处理的工具 运算符和运算量一起组成表达式 运算符基本要素 符号与功能 运算量数目要求:分单目、双目和三目 优先级:共15级 结合性:分从左至右、从右至左,59,运算符与表达式,基本运算符与表达式,C+运算符与表达式的分类 算术运算符与算术表达式 关系运算符与关系表达式 逻辑运算符与逻辑表达式 条件运算符与条件表达式 位运算运算符与位运算表达式 赋值运算符与赋值表达式 逗号运算符与逗号表达式,60,算术运算符与表达式,算术运算符 + - * / %(取余) 优先级:*、/、%同级,比+、-高 结合性:自左至右 注意: 整数相除,结果取整小数舍去 例:5 / 3 = 1 3 / 5 = 0 %仅用于整数,且符号与左边对象相同 例:5 % 3 = 2 -3 % 5 = -3 3 % -5 =3,运算符与表达式,61,自增自减运算符,格式: a+或+a 等价于 a = a + 1 a- -或- -a 等价于 a = a 1 优先级:比*、/高 结合性:从右至左 注意: +a或- -a先自加(减),用新值参与计算 a +或a - -先参与计算,然后自加(减) 例:若a = 1 则 (+a)+3 值为5,a值为2 (a +)+3 值为4,a值为2,运算符与表达式,62,简单赋值运算符与表达式,赋值表达式一般形式: 变量 = 表达式 例: x = 10 n = y + 5 优先级:倒数第二级 结合性:从右至左 值: 等号左边对象被赋值后的值 类型: 等号左边对象的类型,运算符与表达式,63,复合赋值运算符,有10种复合运算符: += , -= , *= , /=, %=, = , &= , = , |= 例:a += 3 等价于 a = a + 3 a /= x 等价于 a = a / 5 注意:复合赋值右边为表达式时,等同于表达式有括号。 例:x *= y+8 等价于 x = x * ( y + 8 ),运算符与表达式,64,赋值运算符举例,a = 5 表达式值为5 a = b = c = 5 表达式值为5,a,b,c均为5 a = ( b = 4 ) + ( c = 6 ) 表达式值为10,a为10,b为4,c为6 a = ( b = 10 ) / ( c = 2 ) 表达式值为5,a为5,b为10,c为2 a += a -= a * a 相当于: a = a + ( a = a - a*a ) 若a=5,则表达式值为 -40,运算符与表达式,65,逗号运算和逗号表达式,逗号运算符格式: 表达式1,表达式2, 求解顺序及结果: 先求解1,再求解2,最终结果为表达式2的值 优先级:倒数第一级 结合性:从左至右 例 a=3*5,a*4 最终结果为60 a = 15,运算符与表达式,66,关系运算符与关系表达式,关系运算符:用于比较运算即判断条件是否成立 符号与优先级: = = != 优先级相同(高) 优先级相同(低) 关系运算符优先级低于算术运算符 结合性:从左至右 结果:逻辑值,即只能为 1(true) 或 0(false) 例:设a = 2, b = 3, c = 4, x = 1, y = 2 则:a b 值为False(0) c = a+b 值为True(1) x+y = 3 值为True(1),运算符与表达式,67,逻辑运算符与逻辑表达式,逻辑运算符:用于二个条件的判断 &(逻辑与) :两边条件均为真时,结果为true,否则为 false |(逻辑或) :只要有一边为true ,结果即为true !(逻辑非) :取相反逻辑值 优先级:高 低为:! & | 结合性: !从右至左,其它从左至右 例:设 a = 2, b = 3, c = 4, x = 1, y = 2 则 ( ab ) & ( xy ) 值为False,运算符与表达式,68,逻辑运算符与逻辑表达式,注意: bool 值参与计算时,以0为假;以1为真 求出的 表达式值,以0为假;以非0为真 混合运算优先级:括号、单目、算术、关系、逻辑,运算符与表达式,69,逻辑运算符与逻辑表达式,练习: 设 a = 3 b=4 c=5 x = 1 y = 2, 求出下列表达式的值 !( a + b ) + c 1 & b + c / 2 表达式值为 true t = ( m = a b ) & ( ( +x ) y ) 表达式值为False , a值为4, x值为1 注意:&左式值为0,| 左式值为1时,右式将不再计算。,运算符与表达式,70,条件运算符与条件表达式,一般形式: 表达式1?表达式2:表达式3 表达式1 必须是 bool 类型 执行顺序: 先求解表达式1, 若表达式1的值为true,则求解表达式2,表达式2的值为最终结果 若表达式1的值为false,则求解表达式3,表达式3的值为最终结果,运算符与表达式,71,条件运算符与条件表达式,实例: 设 a = 2, b = 3, x = 1, y = 2 c = ( ab ) ? x+a : y+a c 值为 4 说明: 条件运算符优级高于赋值运算符,低于逻辑运算符 结合方向为自右至左 注意:表达式2、3的类型可以不同,条件表达式的最终类型为 2 和 3 中较高的类型。,运算符与表达式,72,位运算运算符与表达式,位运算指深入字节内部,按单个二进制位进行运算 运算规则 对运算量按每一个二进制位进行运算 运算特点: 每位运算结果只有0和1两种 相邻两个位之间不存在进位问题,运算符与表达式,73,位运算运算符与表达式,运算符: 逻辑位运算: (按位与) (按位或) (按位异或) (取反,单目运算符) 移位运算: (左移) (右移),运算符与表达式,74,位运算运算符与表达式,优先级: 本类: 总排位: 算术移位关系 逻辑位运算逻辑 与一般单目运算符相同 结合性: :从右往左 其余:从左往右,运算符与表达式,75,位运算-按位与(&),按位与运算规则 两个运算量相应位都是1结果为1,否则为0 举例:计算 3 & 5 3: 0 0 0 0 0 0 1 1 5:(&) 0 0 0 0 0 1 0 1 3 & 5: 0 0 0 0 0 0 0 1 特点: 与0运算,结果为0; 与1运算,结果不变,运算符与表达式,76,位运算-按位与(&),用途: 将某一位置0,其它位不变。 例:将 char 型变量 a 的最低位置 0: a = a 取出 a 的低字节,置于 c 中: c = a & 0377 = a & 00000000 11111111,运算符与表达式,77,位运算-按位或(|),按位或运算规则 两个运算量相应位都是0结果为0,否则为1 举例:计算 3 | 5 3: 0 0 0 0 0 0 1 1 5:(|) 0 0 0 0 0 1 0 1 3 | 5: 0 0 0 0 0 1 1 1 特点: 与1运算,结果为1; 与0运算,结果不变,运算符与表达式,78,位运算-按位或(|),用途: 将某些位置1,其它位不变。 例如:将 short int 型变量 a 的低字节置 1 : a = a | 0xff = a | 00000000 11111111,运算符与表达式,79,位运算-按位异或(),按位异或运算规则 两个操作数进行异或: 若对应位相同,则结果该位为 0, 若对应位不同,则结果该位为 1, 举例:计算 071052 071: 0 0 1 1 1 0 0 1 052: () 0 0 1 0 1 0 1 0 071052 : 0 0 0 1 0 0 1 1,运算符与表达式,80,位运算-按位异或(),用途: 使特定位翻转(与0异或保持原值,与1异或取反) 例如:要使 01111010 低四位翻转: 0 1 1 1 1 0 1 0 () 0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1,运算符与表达式,81,位运算-按位异或(),用途: 交换二个变量的值 例如:a = 3, b = 4,想将a, b 的值互换,公式为:a = a b; b = b a; a = a b; 0 0 0 0 0 0 1 1 () 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 a = 7 () 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 b = 3 () 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 a = 4,运算符与表达式,82,位运算-取反(),按位取反() 单目运算符 对一个二进制数按位取反。 例: 025:00000000 00010101 025:11111111 11101010,运算符与表达式,83,位运算-移位,移位运算 指将一个整数整体向左或右移动若干位 其中:左操作数为要移位的整数,右操作数为移动的位数 分类运算规则: 左移运算() 右移后,低位:舍弃 高位:无符号数:补0 有符号数:补“符号位”,运算符与表达式,84,例:32 3: 00000011 补00 丢弃 32 00001100 0xC 12,说明:左移n位相当于乘以2n,例:无符号数:152 15: 00001111 丢弃 补00 152:00000011 3,有符号数:-122 -15: 11110100 丢弃 补11 -152:11111101 -3,说明:右移n位相当于除以2n,位运算-移位,运算符与表达式,85,位运算举例,求出表达式的值 设有定义: int a = 1, b = 2, c = 3; a | b c a & b | c a b & -c (a 1),结果为-1,0010& 1101=0 0001 0000=1,= 100 + 1 = 5,= 1 | 11111100 = -3,运算符与表达式,86,sizeof运算符,语法形式 sizeof (类型名) sizeof (表达式) 结果值: “类型名”所指定的类型或“表达式”的结果类型所占的字节数。 例:sizeof ( int ) 值为4 sizeof ( double ) 值为8 设:int x = 10 则:sizeof ( x ) 值为 4,运算符与表达式,第三节 混合运算与类型转换,混合运算中的优先级 不同类型数据转换,88,运算符优先级,括号 单目运算符 算术运算符 左移与右移 关系运算 位运算 逻辑运算 条件运算 赋值运算 逗号运算,混合运算中的优先级,89,混合运算中的优先级,( ) 左右 +(取正),-(取负),+,-,sizeof 右左 *, /, % 左右 +, - 左右 左右 ,=,= 左右 =, != 左右 & 左右 左右 | 左右 & 左右 | 左右 ?: 右左 =,+=,-=,*=,/=,%=等 右左 , 左右,运算符优先级,90,混合运算与类型转换,不同类型数据进行混合运算时,C+编译器会自动进行类型转换。 为了避免不同的数据类型在运算中出现混淆,应尽量使用同种类型数据。 类型转换方式 隐式转换 C+自动进行的转换 算术转换 赋值转换 输入输出转换 强制转换用户指定的转换,数据类型转换,91,数据类型转换,隐式类型转换运算中的自动转换 规则:低类型数据转换为高类型数据 类型排名:实型、整型、字符型 特别规定:只要有实型数结果即为double型,短整型 (short),整型 (int),无符号整型 (unsigned),长整型 (long),无符号长整型 (unsigned long),双精度浮点型 (double),单精度浮点型 (float),字符型 (char),混合运算与类型转换,注意:转换逐运算符进行而不是一步到位,92,数据类型转换,例: 10 + a + 2 * 1.25 5 / 3L 运算顺序如下:,10 + a + 2 * 1.25 5 / 3L,10 + 97 + 2 * 1.25 5 / 3L,107 + 2 * 1.25 5 / 3L,107 + 2.0 * 1.25 5/ 3L,107 + 2.5 5/ 3L,109.5 5L / 3L,109.5 1L,109.5 5 / 3L,108.5,109.5 1.0,混合运算与类型转换,93,混合运算与类型转换,赋值转换 编译系统自动将右值转换为左边对象的类型。 规则:短长:扩充,长短:截去 例:short a,b=65; int m,n=65536; unsigned short u1,u2 = 65535; float x,y = 7.989; char ch; a = n; a = u2; u1= a - 2 m = y; x = n; ch = b + 3;,数据类型转换,94,混合运算与类型转换,强制类型转换: 强制类型转换的作用是将表达式的结果类型转换为类型说明符所指定的类型。 语法形式: ( 类型说明符)表达式 类型说明符(表达式) 例:float c; int a = 3, b = 6; c = a / b; c = ( float ) a / ( float ) b; 结果:c = 0 c = 0.5 注意:无括号时强制转换仅对后面第一个运算量有效 上例:c = ( float ) a + a / b 结果为:c = 3.0,数据的类型转换,95,C+常用库函数,库函数是C+系统编制的函数,按类别存放于系统文件夹。 各类库函数说明集中在头文件中。 使用内部函数时必须在程序中用“ include ”包含相应类型头文件。 常用内部函数及头文件分类 数学函数“ math.h ” 字符处理函数“ ctype.h ” 字符串处理函数“ string.h ” 输入输出函数“ iostream.h ” 其他函数“ stdlib.h ”,C+常用库函数,96,C+常用库函数,函数可实现运算符无法进行的运算 例:将下面数学式子写成C程序表达式,C+常用库函数,( pow( x, y ) + fabs( b ) ) / sqrt( 2 * cos( a ) ) 注意:程序开头要加上:#include ,97,系统函数应用举例,题目:(no2.3-2.cpp) 从键盘输入一个角度值,求出该角度的正弦值、余弦值和正切值。 分析: 系统函数中提供了求正弦值、余弦值和正切值的函数:sin( )、cos( )、tan( ),函数的说明在头文件math.h中。,使用C+系统函数,#include #include const double pi( 3.14159265 ); void main( ) double a, b; cin a; b = a * pi / 180; cout “sin(“ a “)=“ sin(b) endl; cout “cos(“ a “)=“ cos(b) endl; cout “tan(“ a “)=“ tan(b) endl; ,前一页,下一页,运行结果: 30 sin(30)=0.5 cos(30)=0.866025 tan(30)=0.57735,前一页,下一页,第四节 简单输入输出,输入输出基本概念 数据的输出 数据的输入,101,输入输出基本概念,C+数据输入输出由I/O流操作实现 I/O流:内存与输入输出设备间的数据流动 I/O流运算符 提取运算符: 功能:从数据流中取数据至内存 含义:计算机内存得到数据,为输入 插入运算符: 功能:向流中添加数据 含义:计算机内存送出数据,为输出 标准输入输出流 cout 标准输出流,指输出至屏幕 cin标准输入流,指从键盘输入数据,I/O流基本概念,102,数据的输出,一般格式: cout 输出项1 输出项2 . 功能:将 后各输出项依次输出到屏幕上 说明: 输出项可以是常量、变量或表达式 输出项间无分隔符连续输出 字符型数据不输出定界符 bool型 true 输出1,false 输出 0 实数输出自动取6位有效数字,无小数时小数点不输出,若整数部分超出6位改用指数形式表示 输出项不会自动换行可用转义字符n 或 endl 格式符控制换行,用cout输出数据,103,数据的输出,例:cout 1.2345678 “n“; cout 12345678.9 “n“; cout 1 2; cout 3 t 4 + 5 endl; cout “Visual C+ “ 6.0 endl; int a = 5, b = 6; cout “a=“ a , “b=“ b endl; 输出为: 1.23457 1.23457e+007 123 9 Visual C+ 6 a = 5 , b = 6,用cout输出数据,104,数据的输出,简单的I/O格式控制,特殊情况下可控制输出格式 控制方法:在输出流中插入操纵符 操纵符头文件为:iomanip.h,105,数据的输出,例1 :八、十六进制的输出,设n=100 cout “十进制: “ dec n endl; cout “八进制: “ oct n endl; cout “十六进制: “ hex n endl; 结果为: 十进制: 100 八进制: 144 十六进制: 64 注意:进制操纵符作用域为从定义点至程序结束或遇到另一个进制操纵符。,格式控制实例,106,数据的输出,例2 :控制输出宽度使用setw double f = 123.45; cout setw(10) 1234567890 endl; cout setw(10) f endl; cout setw(8) f endl; cout setw(4) f endl; 结果为: 1234567890 123.45 123.45 123.45,格式控制实例,107,数据的输出,注意 设置宽度大于实际宽度时,右对齐输出设置宽度小于实际宽度时,设置无效。 setw只对后面紧跟数据有效。 例:cout setw(8) f x endl; f 的宽度为8 而 x 未设宽度,为实际长度,格式控制实例,108,数据的输出,例3 :控制输出精度使用setprecision double pi = 3.1415926535; double x = 123456789.123456789; cout “pi = “ pi “ x = “ x endl; cout “pi = “ setprecision(10) pi; cout “ x = “ x endl; cout setprecision(5) “pi = “ pi “ x = “ x endl; cout setprecision (1) “pi = “ pi endl; 结果为: pi = 3.14159 x = 1.23457e+008 pi = 3.141592654 x = 123456789.9 pi = 3.1416 x = 1.2346e+008 pi = 3,格式控制实例,109,数据的输出,注意 默认状态下setprecision设置的是有效位数(不含小数点)。 指定过实数格式为小数 (fix) 或指数(scientific) 格式后设置的是小数位数 setprecision作用域为从定义点至程序结束或遇到另一个setprecision操纵符。,格式控制实例,110,数据的输入,一般格式: cin 输入项 输入项 . 功能: 从键盘输入数据并按顺序依次存入相应输入项 说明: 输入项应为变量等在内存中拥有存储空间的量 多项数据输入时用空格或回车做分隔符 例: int i , j; char ch; cin i j; 键盘输入:12 45 或 12 45 结果为: i = 12 j = 45,用cin输入数据,111,数据的输入,说明: 字符输入时无须输入定界符,且多个字符数据间及与其它类型数据间均可无分隔符,回车和空格不被输入 例: int i , j; char ch; cin i ch j; 输入:12c45 和 12 c 45 效果相同,用cin输入数据,112,数据的输入,说明: 键盘数据多于输入项时,多余数据做下一次输入数据 输入时不可使用格式控制、n和指定分隔符,但进制控制除外 例 cin hex i; cin j; cout “i=“ i “, j=“ j endl; 输入: 20 30 输出: i = 32 , j = 48,用cin输入数据,113,作业,编写一个超市收银简易程序money.cpp 要求:从键盘输入购买商品单价和数量,输出价格总数,再输入顾客付款,输出找零数。 在不改变变量定义和赋值的情况下,修改以下程序保证输出如下: 65 = A Z = 90 z = 1 w = 0,114,作业,/ 程序名:error1.cpp #include void main( ) int x = 65; char y = z; int z = 8; bool w = false; cout x “=“ char(x) endl; cout y “=“ y endl; cout “z=“ z endl; cout “w=“ w endl; ,115,作业,附加题 输入三角形三边长a,b,c的值,求三角形面积area。公式为:,116,作业,上机题: 实验一.DOC 书面: 2-1、2-2、2-5、2-6,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高考 答案 全国卷
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文