C语言第二章数据的存储与运算.ppt

上传人:max****ui 文档编号:6335029 上传时间:2020-02-23 格式:PPT 页数:50 大小:1.12MB
返回 下载 相关 举报
C语言第二章数据的存储与运算.ppt_第1页
第1页 / 共50页
C语言第二章数据的存储与运算.ppt_第2页
第2页 / 共50页
C语言第二章数据的存储与运算.ppt_第3页
第3页 / 共50页
点击查看更多>>
资源描述
1 什么是程序 人怎么和计算机沟通 为什么要和计算机沟通 简单的C语言程序由哪些部分构成 什么是C语言的函数 C程序的编译和运行过程 C语言常用的注释方式有哪些 课程回顾 第二章 数据的存储与运算 3 目标 熟悉C语言中常用的数据类型理解变量和常量的含义 了解符号常量掌握各种基本数据类型相关内容 变量的声明和初始化 存储特点 其他特点使用算术运算符理解类型转换 4 数据在计算机中的存储 计算机程序处理的是什么 计算机处理的数据有哪些 数值 字符 图片 音频 视频 数据在计算机中怎么存储的 以二进制形式存储 关于几个数据存储的概念 位 字节和地址位 bit 又称比特 存储信息的最小单位 值为0或1字节 byte 又称拜特 存储器容量大 直接用bit来表示和管理不方便 1byte 8bit byte是最常用的存储单位 常用来表示一个存储单元 后来又出现了kb mb gb tb等 以1024 1000倍增 地址 存储器包含许多存储单元 使用的时候通过地址进行查找 这里的地址是指存储单元在存储器里的编号 数据 5 基本数据类型 数据属于不同类别 Africa Thequickbrownfox TRUE 数据 非数值 数值 整型 非整型 9002 12 999 9 12 2003 2 175 123 JackieChan char 数据类型 非数值 数值 整型 int shortint longint double float 非整型 6 数据的表现方式常量和变量 常量是指在程序运行过程中 其值不能被改变的量例如16 18 789都属于常量 不会改变变量是指在程序运行过程中其值可以改变的量 7 变量 程序 编写程序时 常常需要将数据存储在内存中 方便后面使用这个数据或者修改这个数据的值 通常使用变量来存储数据 使用变量可以引用存储在内存中的数据 并随时根据需要显示数据或执行数据操纵 存储a a 5 将值存储为b a b 10 0 5 将值存储为Result 9 5 8 变量引入的意义 为什么要引入变量 程序中很多数据是在程序运行过程中通过运算获得的通用功能函数的需要 如求两个数中最大者max很多数据在程序运行过程中不断变化变量相当于一个宾馆 为程序中使用的数据提供临时的存储单元 房间 需要用的时候就进行赋值 checkin 不用的时候就释放空间 checkout 9 声明和使用变量 变量代表内存中具有特定属性的一个存储单元 它用来存放数据 也就是变量的值 在程序运行期间 这些值是可以改变的 变量必须先定义后使用 声明变量 Datatypevariablename 定义时初始化变量 Datatypevariablename value 定义后初始化变量 variablename value 类型名 系统提供的标准数据类型的名称或者自定义的数据类型的名称 如整型在计算机里用 int 变量名 代表计算机内存中一个变量地址 隐含 通过变量名可以找到相应的存储单元 进行按名存取 变量值 变量名代表的存储单元中存储的数据 例如 声明一个整型变量a 并为其赋值为5inta 5 10 变量命名 在C语言中 变量命名需要遵循一定的规则 变量的命名规则 变量名可以由字母 数字和 下划线 组合而成变量名不能包含除 以外的任何特殊字符 如 逗号 空格等变量名必须以字母或 下划线 开头变量名不能包含空白字符 换行符 空格和制表符称为空白字符 C语言中的某些词 例如int和float等 称为保留字 具有特殊意义 不能用作变量名C语言区分大小写 因此变量price与变量PRICE是两个不同的变量变量名的长度不是无限的 不同的编译系统有自己的规定变量名尽可能简单易记 见名之意 即选有含意的英文单词 或其缩写 作变量名 11 有效名称 principal cost price marks 3 lastname city 无效名称 123rate currency discount zipcode 变量命名 12 整型数据 分类 整型常量即整常数 13 整型数据 存储 Int型 根据编译器不同占用的存储单元数量有所不同 VC用4个字节表示一个int型整数例如整数10 存储在计算机中就是00001010负数怎么存储 最高位是符号位 1表示负 0为正 采用补码方式存储 原码取反加14个字节中未使用的高位怎么办 用0补齐Shortint 一般占2个字节Longint 一般占4个字节 在vc环境下longint和int通用 有些早期的编译器里int占2个字节 longint占4个字节 14 整型数据 使用 整型变量声明 intpage number longintpopulation unsignedintage 可按如下方式初始化 page number 0 intmax marks 100 在同一语句中可以声明多个类型相同的变量 intpage number copies paper width 15 整型数据 实例 整型数据运算程序的举例和分析例2 1鸡兔同笼 鸡和兔的头总数是16 脚总数是40 计算鸡和兔各有多少只 X y h2x 4y f Y f 2h 2X h y includeVoidmain inth f x y 声明整型变量h 16 f 40 对整型变量进行赋值y f 2 h 2 使用变量计算 结果赋给yx h y 将h y的结果赋给xprintf d d n x y 输出变量 16 整型数据 实例 用计算机解题 必须由人们事先分析题目要求 找出解决问题的思路和具体步骤 然后指定计算机一步步去做 计算机完全是根据人们事先规定的指令进行工作的 程序是告诉计算机要做什么 先做什么 后做什么 计算机不是万能的 不存在把方程式输入给计算机 计算机就会自动解出方程 得出结果的事情 17 实型数据 分类 实型数据在计算机语言中常称为浮点数 1 浮点型变量分为单精度 float型 双精度 double型 和长双精度型 longdouble 三类形式 18 实型数据 存储 实数 采用指数形式存储 通常占4个字节 计算机将实数分为前后两部分存储 前面是数值 前3个字节 后面是指数 后1个字节 例如123 456表示为0 123456 103 则在计算机中存储为Float型在vc下占4个字节Double型在vc下占8个字节Longdouble在vc下占8个字节各种数据类型所占长度与编译器有关 可以使用sizeof longdouble 查看 19 实型数据 使用单精度浮点型 float在C语言中用于存储单精度浮点数 float 32位 10 38 10387位有效数字 声明 floatselling price 初始化 floatselling price 11 3 selling price 65 90 20 实型数据 使用双精度浮点型 213 5671435568967 64位 10 308 1030816位有效数字 声明 doublepressure level 初始化 pressure level 213 5671435568967 doubledvalue 35 4 21 浮点型数据的舍入误差 由于浮点型变量是由有限的存储单元组成的 因此能提供的有效数字总是有限的 在有效位以外的数字将被舍去 由此可能会产生一些误差例2 4浮点型数据的舍入误差 includevoidmain floata b a 123456 789e5 b a 20 printf f n b 实型数据 实例 说明 一个浮点型变量只能保证的有效数字是7位有效数字 后面的数字是无意义的 并不准确地表示该数 应当避免将一个很大的数和一个很小的数直接相加或相减 否则就会 丢失 小的数 运行结果 123456 789e5 22 浮点型数据 常量 实型常量的表示形式 两种表示形式 十进制小数指数 0 1233e 3 注意 字母e 或E 之前必须有数字 且e后面的指数必须为整数 例如 123 456可以表示为 123 456e0 12 3456e1 1 23456e2 0 123456e3 0 0123456e4 0 00123456e其中的1 23456e3称为 规范化的指数形式 23 浮点型数据 常量 实型常量的类型C编译系统将实型常量作为双精度来处理 例如 f 2 45678 4523 65系统先把2 45678和4523 65作为双精度数 然后进行相乘的运算 得到的乘也是一个双精度数 如果把一个实型常量赋给一个单精度变量f系统给出警告 警告不影响连接和运行最后结果 但只取其结果前7位赋给浮点型变量f 如是在数的后面加字母f或F 如1 65f 654 87F 编译系统就会把它们按单精度处理 24 在线保险单年龄 保险总额 性别 字符型数据 23 98340 M 数值型 字符型 int float char 25 字符型数据 存储 字符 计算机并不是将字符本身存放到存储单元中 只能放二进制代码 而是将字符的代码存储到存储单元中 即存储的是字符的ASCII码 每个英文字母采用一个字节存储未使用的高位用0补足例如 A 的ASCII码是65 计算机存储就是01000001 ASCII码不用死记 转换工作由编译系统自动完成 用户程序里输入的依然是正常使用的字符 A 整数65和字符 A 在计算机里的表示是一样的 那怎么区分呢 两者有没有关系呢 26 字符数据与整形数据 字符数据和整型数据的区别和联系占用的存储空间大小不同字符变量存储采用整数表示的ASCII字符型数据既可采用字符形式输出 c 也可采用整数形式输出 d 可以通过整数为一个字符型数据赋值可以对字符型数据当做整型数据进行算数运算程序设计中不能使用字符变量代替整型变量使用 27 字符型数据 存储 5 p 有效的字符型值 2 2 正确 2 2 4 X 28 字符数据在内存中的存储形式及其使用方法一个字符型数据存放到一个字符变量中 实际上并不是把该字符的字型放到内存中去 而是将该字符的相应的ASCII代码放到存储单元中 这样使字符型数据和整型数据之间可以通用 注意 一个字符数据既可以以字符形式输 也可以以整数形式输出以字符形式输出时 系统先将存储单元中的 I码转换成相应字符 然后输出 以整数形式输出时 直接将 码作为整数输出 也可以对字符数据进行算术运算 此时相当于对它们的 码进行算术运算 字符型数据 存储 29 字符型变量用来存放字符常量 注意只能放一个字符 字符变量的定义形式如下 charc1 c2 在本函数中可以用下面语句对c1 c2赋值 c1 a c2 b 一个字符变量在内存中占一个字节 字符型数据 使用 30 例2 5向字符变量赋予整数 includevoidmain charc1 c2 c1 97 c2 98 printf c c n c1 c2 printf d d n c1 c2 说明 在第4和第5行中 将整数97和98分别赋给c1和c2 它的作用相当于以下两个赋值语句 c1 c2 因为 a 和 b 的ASCII码为97和98 运行结果 9798 字符型数据 实例 31 例2 6大小写字母的转换 注意分析方法 includevoidmain charc1 c2 c1 a c2 b c1 c1 32 c2 c2 32 printf c c c1 c2 说明 程序的作用是将两个小写字母a和b转换成大写字母A和B 从 代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码大32 语言允许字符数据与整数直接进行算术运算 运行结果 字符型数据 实例 32 字符型数据 字符常量 字符常量 1 用单引号包含的一个字符是字符型常量 2 只能包含一个字符 例 a A 1 abc a 33 有些以 开头的特殊字符称为转义字符 转义字符 34 字符串常量C语言除了允许使用字符常量外 还允许使用字符串常量字符串常量是一对双撇号括起来的字符序列 合法的字符串常量 Howdoyoudo CHINA a 123 45 可以输出一个字符串 如printf Howdoyoudo 字符型数据 字符串常量 35 是字符常量 a 是字符串常量 二者不同 如 假设 被指定为字符变量 charc c a a c CHINA 结论 不能把一个字符串常量赋给一个字符变量 字符型数据 字符串常量 36 规定 在每一个字符串常量的结尾加一个 字符串结束标志 以便系统据此判断字符串是否结束 规定以字符 作为字符串结束标志 如 如果有一个字符串常量 实际上在内存中是 它占内存单元不是 个字符 而是 个字符 最后一个字符为 但在输出时不输出 字符型数据 字符串常量 37 符号常量 例2 7一直园的半径为r 求周长c 面积s 体积v includeVoidmain doubler 3 67 c s v c 2 3 1415926 r s 3 1415926 r r v 4 3 3 1415926 r r r 4 0 3 0 pow r 3 include definePI3 1415926 c 2 PI r s PI pow r 2 38 符号常量相关说明 使用符号常量的好处含义清楚 容易读写 改变的时候能够做到 一改全改 降低程序中输入错误的几率符号常量的使用方法先对程序做 预编译 即将程序中所有的符号常量用真正的常量进行替换 也会用include的库文件内容代替include语句 进行正式编译 符号常量不占存储单元 只是一个符号符号常量不是变量 只是符号 不能被赋值 39 1 语言的运算符有以下几类 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 及其扩展赋值运算符 条件运算符 逗号运算符 算术运算符和算术表达式 40 8 指针运算符 和 9 求字节数运算符 10 强制类型转换运算符 类型 11 分量运算符 12 下标运算符 13 其他 如函数调用运算符 算术运算符和算术表达式 41 2 C语言的表达式有以下几类 1 算术表达式 如2 6 7 3 5 sin 0 5 2 关系表达式 如x 0 y0 y 0 表示x 0与y 0同时成立 是逻辑运算符 代表 与 4 赋值表达式 如a 5 6 算术运算符和算术表达式 42 1 基本的算术运算符 加法运算符 或正值运算符 如 减法运算符 或负值运算符 如 乘法运算符 如 除法运算符 两个整数相除的结果为整数两个整数相除的结果为整数 如 结果为 模运算符 或称求余运算符 两侧均应为整型数据 如 的值为 算术运算符和算术表达式 43 2 算术表达式和运算符的优先级与结合性用算术运算符和括号将运算对象 也称操作数 连接起来的 符合 语法规则的式子 称为 算术表达式 运算对象包括常量 变量 函数等 例如 5 a 是一个合法的表达式 算术运算符和算术表达式 44 语言规定了运算符的优先级和结合性 在表达式求值时 先按运算符的优先级别高低次序执行 例如先乘除后加减 规定了各种运算符的结合方向 结合性 算术运算符的结合方向为 自左至右 即先左后右 算术运算符和算术表达式 45 4 自增 自减运算符作用是使变量的值增 或减 如 在使用 之前 先使 的值加 减 在使用 之后 使 的值加 减 算术运算符和算术表达式 46 i 与 i的区别 是先执行 后 再使用 的值 是先使用 的值后 再执行 例如 i的值先变成4 再赋给 j的值为 先将i的值3赋给 的值为 然后 变为 算术运算符和算术表达式 47 注意 1 自增运算符 自减运算符 只能用于变量 而不能用于常量或表达式 2 和 的结合方向是 自右至左 3 自增 减 运算符常用于循环语句中使循环变量自动加 也用于指针变量 使指针指向下一个地址 4 使用 和 时 为避免二义性 最好采取大家都能理解的写法 可以加一些 不必要 的括号 如 i j 算术运算符和算术表达式 48 混合运算 整型 包括int short long 浮点型 包括float double 可以混合运算 在进行运算时 不同类型的数据要先转换成同一类型 然后进行运算 说明 这种类型转换是由系统自动进行的 转换规则为字节少的数据转换为字节多的数据 各类数值型数据间的混合运算 49 类型转换 自动类型转换原则 把表示范围小的类型的值转换到表示范围大的类型的值short int long float double强制类型转换语法 类型名 变量或数值例如 inta 5 b 3 floatqu float a b 在强制类型转换时 得到一个所需类型的中间变量 原来变量的类型未发生变化 50 例2 8强制类型转换 includevoidmain floatx inti x 3 6 i int x printf x f i d n x i 说明 有两种类型转换 一种是在运算时不必用户指定 系统自动进行的类型转换 如3 6 5 第二种是强制类型转换 当自动类型转换不能实现目的时 可以用强制类型转换 运行结果 x 3 600000 i 3 强制类型转换
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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