C程序设计ch02数据描述.ppt

上传人:max****ui 文档编号:10962737 上传时间:2020-04-16 格式:PPT 页数:50 大小:503KB
返回 下载 相关 举报
C程序设计ch02数据描述.ppt_第1页
第1页 / 共50页
C程序设计ch02数据描述.ppt_第2页
第2页 / 共50页
C程序设计ch02数据描述.ppt_第3页
第3页 / 共50页
点击查看更多>>
资源描述
1 第二章数据描述 预备知识数据类型常量与变量运算符和表达式不同类型数据间的转换 2 2 0预备知识计算机中数的表示及进制转换数码 基与权数码 表示数的符号基 数码的个数权 每一位所具有的值数制 3 十进制 4956 4 10 9 10 5 10 6 10 二进制 1011 1 2 0 2 1 2 1 2 十六进制 81AE 8 16 1 16 10 16 14 16 八进制 4275 4 8 2 8 7 8 5 8 4 各种进制之间的转换二进制 八进制 十六进制转换成十进制方法 按权相加 5 6 二进制与八进制之间的转换二进制转换成八进制 从右向左 每3位一组 不足3位左补0 转换成八进制八进制转换成二进制 用3位二进制数代替每一位八进制数 例 1101001 2 001 101 001 2 151 8 例 246 8 010 100 110 2 10100110 2 000 0001 1010 2011 3100 4101 5110 6111 7 7 二进制与十六进制之间的转换二进制转换成十六进制 从右向左 每4位一组 不足4位左补0 转换成十六进制十六进制转换成二进制 用4位二进制数代替每一位十六进制数 例 11010101111101 2 0011 0101 0111 1101 2 357D 16 例 4B9E 16 0100 1011 1001 1110 2 100101110011110 2 0000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 F 8 字节和位内存以字节为单元组成每个字节有一个地址一个字节一般由8个二进制位组成每个二进位的值是0或1 9 数值的表示方法 原码 反码和补码原码 最高位为符号位 其余各位为数值本身的绝对值反码 正数 反码与原码相同负数 符号位为1 其余位对原码取反补码 正数 原码 反码 补码相同负数 最高位为1 其余位为原码取反 再对整个数加1 9 5 49 7 16 14 12 10 负数补码转换成十进制数 最高位不动 其余位取反加1 例补码 11111001取反 10000110加1 10000111 7 11 12 2 1数据类型 IndentifiersandConstants数据类型总表 数据类型决定 1 数据占内存字节数2 数据取值范围3 其上可进行的操作 13 基本数据类型 整型 字符型 实型 有 无 说明 数据类型所占字节数随机器硬件不同而不同 上表以IBMPC机为例 14 15 2 2常量与变量标识符定义 用来标识变量 常量 函数等的字符序列组成 只能由字母 数字 下划线组成 且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度 最长32个字符命名原则 见名知意不宜混淆如l与I o与0 例 判断下列标识符号合法性sumSumM D JohndayDate3daysstudent name 33lotus 1 2 3chara b above 123 M D John 3days 33 char 123 a b 16 常量定义 程序运行时其值不能改变的量 即常数 17 一般用大写字母是宏定义预处理命令 不是C语句直接常量 整型常量实型常量字符常量字符串常量 如 definePRICE30 常量表示法 符号常量 用标识符代表常量 p43 定义格式 define符号常量常量 例符号常量举例 definePRICE30main intnum total num 10 total num PRICE printf total d total 运行结果 total 300 18 整型常量 整常数 三种形式 pp25十进制整数 由数字0 9和正负号表示 如123 456 0八进制整数 由数字0开头 后跟数字0 7表示 如0123 011十六进制整数 由0 x开头 后跟0 9 a f A F表示 如0 x123 0Xff 例12与12L 例30000为int型65536为longint型 整型常量的类型根据其值所在范围确定其数据类型在整常量后加限定词l或L U或UL 认为它是longint型或无符号整型 无符号长整型常量 问题 0123 100 x123 100Xff 10 例 整型打印 19 实型常量 实数或浮点数 表示形式 十进制数形式 必须有小数点 如0 123 123 123 0 0 0 123 指数形式 e或E之前必须有数字 指数必须为整数 如12 3e3 123E2 1 23e4 e 5 1 2E 3 5 实型常量的类型默认double型 绝对值范围1 7e308在实型常量后加字母f或F 认为它是float型 绝对值范围3 4e38长双精度 后加Lf 绝对值范围1 2e4932例 区别1 0e 7 e7 e 7 1 2e 6 20 字符常量定义 用单引号括起来的单个普通字符或转义字符 字符常量的值 pp459 该字符的ASCII码值 如 101 A 012 n 376 x61 a 60 0 483 例 A 101 x41 65 如 A 65 a 97 0 48 n 10 如 a A n 101 转义字符 反斜线后面跟一个字符或一个代码值表示 例转义字符举例main printf 101 x42C n printf Isay Howareyou n printf CProgram n printf Turbo C 运行结果 屏幕显示 ABCIsay Howareyou CProgram Turbo C 例main printf Y b n 运行结果 屏幕显示 打印机输出 21 字符常量与字符串常量不同 字符串常量定义 用双引号 括起来的字符序列存储 每个字符串尾自动加一个 0 作为字符串结束标志 例 charch ch A 22 变量概念 其值可以改变的量变量名与变量值变量定义的一般格式 p33 数据类型变量1 变量2 变量n 变量初始化 定义时赋初值 例 inta b c floatdata 决定分配字节数和数的表示范围 合法标识符 例 inta 2 b c 4 floatdata 3 67 charch A intx 1 y 1 z 1 intx y z 1 变量的使用 先定义 后使用 例1intstudent stadent 19 illegal leftoperandhastype float 例2floata b c c a b illegal leftoperandhastype float 变量定义位置 一般放在函数开头 main inta b 2 a 1 floatdata data a b 1 2 printf data f n data 在C中错误 在C 中正确 23 整型变量占字节数随机器不同而不同 一般占一个机器字short int long可用sizeof 类型标识符 测量 实型变量float 占4字节 提供7位有效数字double 占8字节 提供15 16位有效数字 字符型变量字符变量存放字符ASCII码char与int数据间可进行算术运算 例floata a 111111 111 a 111111 1 doubleb b 111111 111 b 111111 111 例a D a 68 x A 5 x 65 5 s G s 33 71 没有字符串变量 用字符数组存放 24 例 charoperation definePRICE12 5 include stdio h main intnum 3 floattotal charch1 ch2 D total num PRICE ch1 ch2 A a printf total f ch1 c n total ch1 运行结果 total 37 500000 ch1 d 25 枚举类型p36程序员自定义的一种数据类型 1 先用enum定义一组枚举常量 及类型标识符 enumidentifier value1 valueN 2 再定义该类型的变量 enumidentifierv1 v2 vm 例enumweekday Monday Tuesday Wednesday Thursday Friday Saturday Sunday enumweekdayweek st week end week st Saturday week end enumweekday 4 例enumweekday Monday 1 Tuesday Wednesday Thursday Friday Saturday Sunday 例enumweekday Monday 1 Tuesday Wednesday Thursday Friday Saturday Sunday 0 26 用typedef定义类型p35功能 用自定义名字为已有数据类型命名类型定义简单形式 typedeftypename 例typedefintINTEGER 类型定义语句关键字 已有数据类型名 用户定义的类型名 例typedeffloatREAL 例INTEGERa b c REALf1 f2 inta b c floatf1 f2 说明 1 typedef没有创造新数据类型2 typedef是定义类型 不能定义变量 新的类型名用法不变 27 变量的类别 p36 37 取决于变量定义的位置 在函数体内部的 称为局部变量 在函数体外部的 称为全局变量 外部变量变量定义为Constant p42 constintclass size 50 那程序中不允许改变此变量之值 28 例pp 46caculatetheaverageofasetofNnumbers include stdio h defineN10 SYMBOLICCONSTANT main intcount DECLARATIONOF floatsum average number VARIABLES sum 0 INITIALIZATION count 0 while count N scanf f 29 例pp 47Convertthegiventemperatureinfahrenheittocelsius Theconversionfoumulais C F 32 1 8 include stdio h defineF LOW0 defineF MAX250 SYMBOLICCONSTANTS defineSTEP25 main typedeffloatREAL TYPEDEFINITION REALfahrenheit celsius DECLARATION fahrenheit F LOW INITIALIZATION printf fahrenheitCelsius n n while fahrenheit F MAX celsius fahrenheit 32 0 1 8 printf 5 1f 7 2f n fahrenheit celsius fahrenheit fahrenheit STEP 30 2 3运算符和表达式 pp51 31 算术运算符和表达式pp51基本算术运算符 结合方向 从左向右优先级 2 3 4 说明 所谓双目 单目 三目运算符两整数相除 结果为整数 要求两侧均为整型数据 例5 2 5 2 0 例5 2 5 2 1 10 5 1 5 5 2 例5 2 2 5 2 2 5 2 0 2 5 例5 2 1 5 2 11 10 15 1 05 5 2 注 视C系统不同 有向0取整 如VC 背0取整 32 关系运算符和表达式pp54关系运算符种类 结合方向 自左向右优先级别 例c a b c a b a b c a b ca bc a b c 关系表达式的值 是逻辑值 真 或 假 用1和0表示 例inta 3 b 2 c 1 d f a b a b cb cbf a b c 表达式值1 表达式值1 表达式值0 d 1 f 0 C语言中 0表示 假 非0表示 真 33 关系运算注意 例若a 0 b 0 5 x 0 3 则a x b的值为 0 例5 2 7 8在C中是允许的 值为 0 例inti 1 j 7 a a i j 4 0 则a 2 例 a 0结果为 A 100结果为 1 0 34 关系运算注意 例注意区分 与 常把 误写为 inta if a 1 printf aequaltob elseprintf anotequaltob 例应避免对实数作相等或不等的判断如1 0 3 0 3 0 1 0结果为可改写为 fabs 1 0 3 0 3 0 1 0 1e 6 0 1 a延伸 用b c a不用a b c 35 赋值运算符和表达式pp56简单赋值运算符符号 格式 变量标识符 表达式作用 将一个数据 常量或表达式 赋给一个变量 复合赋值运算符种类 含义 exp1op exp2 exp1 exp1opexp2 例a 3 d func c d 2 36 说明 结合方向 自右向左优先级 14左侧必须是变量 不能是常量或表达式 赋值表达式的值与变量值相等 且可嵌套 赋值转换规则 使赋值号右边表达式值自动转换成其左边变量的类型 例3 x 2 y a b 3 例floatf inti i 10 f i 则f 10 0 例inti i 2 56 结果i 2 例 a b c 5a b 5 a 5 c 6 a b 4 c 6 a b 10 c 2 表达式值为5 a b c值为5 b 5 a 5 表达式值11 c 6 a 11 表达式值10 a 10 b 4 c 6 表达式值5 a 5 b 10 c 2 37 说明 结合方向 自右向左优先级 14左侧必须是变量 不能是常量或表达式 赋值表达式的值与变量值相等 且可嵌套 赋值转换规则 使赋值号右边表达式值自动转换成其左边变量的类型 例 a 12 a a a a 例 inta 2 a 4 1 a a a a 3 a 264等价于a a a a a a a 0等价于a a a a a a a a 3 38 逻辑运算符和表达式p55逻辑运算符种类 逻辑运算真值表 C语言中 运算量 0表示 假 非0表示 真 运算结果 假 0 真 1 39 例ab x ya b x y a a b 优先级 结合方向 a x x b a b x y a b x y a a b 40 优先级 结合方向 例a 4 b 5 aa ba b a b4 0 25 3 2 8 4 0 c d 值为1 值为0 值为1 值为1 值为1 值为1 5 3 2 8 4 0 值为1 41 优先级 结合方向 短路特性 逻辑表达式求解时 并非所有的逻辑运算符都被执行 只是在必须执行下一个逻辑运算符才能求出表达式的解时 才执行该运算符 例a m a b n c d 结果m 0 n 1 42 自增 自减运算符 pp58作用 使变量值加1或减1种类 前置 i i 先执行i 1或i 1 再使用i值 后置i i 先使用i值 再执行i 1或i 1 例j 3 k j j 3 k j j 3 printf d j j 3 printf d j a 3 b 5 c a b a 3 b 5 c a b k 4 j 4 k 3 j 4 4 3 c 20 a 4 c 15 a 4 43 说明 不能用于常量和表达式 如5 a b 结合方向 自右向左优先级 2 3 4 例 i i i 3 printf d i 3 例 i i 3 printf d i 44 2 4不同类型数据间的转换pp67隐式转换pp67什么情况下发生运算转换 不同类型数据混合运算时赋值转换 把一个值赋给与其类型不同的变量时输出转换 输出时转换成指定的输出格式函数调用转换 实参与形参类型不一致时转换运算转换规则 不同类型数据运算时先自动转换成同一类型 45 46 显式转换 强制转换 pp68一般形式 类型名 表达式 例 int x y int x y double 3 2 int 3 6说明 强制转换得到所需类型的中间变量 原变量类型不变 例main floatx inti x 3 6 i int x printf x f i d x i 结果 x 3 600000 i 3 精度损失问题 47 运算符总结表pp71 优先级 48 学习运算符应注意 运算符功能与运算量关系要求运算量个数要求运算量类型运算符优先级别pp64结合方向pp70结果的类型 49 例 pp 73 Acomputermanufacturingcompanyhasthefollowingmonthlycompensationpolicytotheirsales persons Minimumbasesalary 1500 00Bonusforeverycomputersold 200 00Commissiononthetotalmonthlysales 2percentGrosssalary basesalary quantity bonusrate quantity price commissionrate Thenecessaryinputsare thepriceofeachcomputerandthenumbersoldduringthemonth 50 pp74 Rootsofquadraticequation include include stdio h main floata b c discriminant root1 root2 printf Inputvaluesofa b andc n scanf f f f 输入 a 1 b 3 c 2 输出 x1 1 00 x2 2 00 例求 的根 设
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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