第二章 数据类型及其输入输出.ppt_第1页
第二章 数据类型及其输入输出.ppt_第2页
第二章 数据类型及其输入输出.ppt_第3页
第二章 数据类型及其输入输出.ppt_第4页
第二章 数据类型及其输入输出.ppt_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章数据类型及输入输出 内蒙古科技大学实训中心 本节重点 数据类型常量与变量不同类型的数据的输入输出 引入 数据类型 1 数据是程序处理的基本对象 2 程序中数据分为变量或常量 3 每个变量或常量都有确定的数据类型 4 每种数据类型都有确定的存储长度 取值范围及允许的操作 5 程序中所有数据必须指定其数据类型 C语言中分为常量和变量 它们都属于以上这些类型 2 1数据分类 标识符 1 概念 用来作变量 符号 函数和数组 文件等的名字 2 标识符的命名原则 由字母 数字和下划线组成 并且第一个字符必须为字母或下划线 3 标识符 关键字 预定义标识符 用户自定义标识符 1 关键字 32个书14页 2 预定义标识符 库函数名printf define等 3 用户自定义标识 用户自已定义的变量名 常量名 函数名 文件名等 不能与关键字和预定义标识符相同要见名知意 说明 1 标识符字符个数为8或32个 建议8个 必须以字母或下划线开头 不以数字开头 2 一般为了增加可读性变量名和数组名 函数名用小写 常量符号用大写 如 Aa 1sums123student name 如 1asum1no 1floatdoubleprintfdefinestdio h 2 2常量和变量 2 2 1常量 在程序中 常量是指常数或其值不能被改变的量 1 直接常量 如 12 123 5 1 23E7 9 a A hello a 2 符号常量 即用一个标识符代表一个常量 一般用大写字母表示 符号常量在其作用域内不能改变 也不能再被赋值 定义符号常量的方法如 definePI3 1415926 definePI3 1415926main floatr c s r 2 c 2 PI r s PI r r printf c f s f c s 2 2 2常量的类型 整型常量有三种表示方法 十进制整数123 784八进制整数0123 十六进制整数八进制和十六进制只能表示无符号整数 如printf o 0123 结果不是 0123长整数表示为 123l123L无符号整数表示为 123u 常量分为 整型常量 实型常量 字符常量 字符串常量 实型常量 也称浮点数 两种表示方法 十进制小数形式 指数形式1 23E7123e5 123E5都表示1 23 107 由数字和小数点组成 必须有小数点 1 01 23 3 1415 但是1 23E7为规范化的指数形式 输出指数形式的数据时 按规范化的指数形式输出 即小数点左边应有一位非零数字 3 字符常量 Characterconstants 由一对单引号括起的单个字符 称为字符常量 如 a 9 b退格 单引号 n换行 ddd1 3位八进制数 t制表符 xhh1 2位十六进制数 反斜杠字符 a响铃 双引号 r回本行开头 转义字符 EscapeSequences 表示控制字符或具有特定用途的字符 如 101是65 012是换行 在内存中 字符数据并不是把字符本身放到内存单元中 而是将该字符的相应ASCII码 二进制的形式 放到存储单元中 如 有两个字符型数据 A 和 a 4 字符串常量 StringLiterals 由一对双引号括起的字符序列称为字符串常量 例如 Howdoyoudo china a C规定以字符 0 作为字符串结束的标志 在内存中所占字节数为实际字符个数 1如字符串常量 china 在内存中存储形式如下 a 0 2 2 3变量 1 定义 在程序的运行过程中 其值可以改变的量称为变量 程序中的变量必须先定义后使用 变量在内存中占据一定的存储单元 变量具有三要素 变量名 数据类型 变量的值 3 a 变量名 变量值 存储单元 说明 变量名用标识符来标识变量是用来存储数据的 存放的数据是变量的值 数据类型决定了变量在内存中所占的字节数 如 inta 3 2 变量的定义和赋值 1 定义格式 intsum chara b floatr s l longintaver s Unsignedints01 doublejc 2 定义了变量后 变量中的值是一个不确定的值 需要给其赋值 对变量进行初始化 在定义变量的同时给变量赋值 inta 3 floataver 0 chars m 先定义变量后赋值inta chars floataver a 3 s m aver 0 给部分变量赋值inta b c 9 同时给多个变量赋同一值inta 5 b 5 c 5 注意 如对几个变量同时赋初值为5 应写成inta 5 b 5 c 5 或者inta b c a b c 5 而不能写成inta b c 5 注意 1 一个变量被定义后方可以使用 2 一个变量必须有一个确定的值方可参加运算 3 一个变量可以多次被赋值 变量中保存的是最后一次赋的值 4 定义变量必须在函数的声明部分而不是在执行部分 如 inta 3 a 9 a a 1 3 对变量名的要求 变量名要做到 见名知意 以增加程序的可读性 变量名一般用小写字母表示 长度与所用系统有关 c 合法标识符 非法标识符 变量名区别大小写SUM和sum是两个不同的变量 2 2 4变量的类型 变量分为 整型变量 实型变量 字符型变量1 整型变量 存放形式整形变量在内存中以二进制的形式存放的 一个整形变量在内存中占 个字节 10 变量i inti 10 变量在内存中的实际存放情况 机器内部 数值是以补码表示的 正数 其补码和原码相同 负数 其补码为 该数的绝对值的二进制数按位取反加1 如 10 10原码 取反 加1 最高位 最高位是符号位 其为0时是正数 为1时是负数 分类根据数值的范围可以把变量定义成基本整型 短整型和长整型 基本类型 用int标识 短整型 用shortint标识 short 长整型 用标识 long c语言中数据又分为有符号数和无符号数 用修饰符unsigned 无符号数 signed 有符号数 如果既不指定unsigned也不指定signed则隐含为有符号数 默认为signed 例 unsignedlonginta b ANSI标准定义的整数类型 3 整型变量的定义如 inta b longcj unsignedshortx unsignedlongy 注意在使用整型变量时 当数值超出整型数的范围会溢出如main inta 32768 printf n d a 结果为 32768 因为 32768与32768补码相同 main longa 32768L printf n ld a 2 实型变量定义方法 单精度 float变量名 双精度 double变量名 长双精度 longdouble变量名 各举一例 3 字符型变量 定义方法 char变量名列表charc1 c2 c3 字符型变量中只能赋一个字符型常量 charc1 c2 c1 a c2 b 注意 字符串常量不能被赋值到字符变量中 因为字符变量只能容纳一个字符 区别 a a 01100001 01100010 c1 c2 说明 字符型变量中只能赋一个字符型常量 在内存中只占一个字节 存放方式与整型数相类似 所以字符型数据可以参加任何整型数的运算 main charc1 97 c2 98 printf n c c c1 c2 printf n d d c1 c2 将小写字母转成大写字母 main charc1 97 c2 98 c1 c1 32 c2 c2 32 printf n c c c1 c2 printf n d d c1 c2 2 2 5数据的输入和输出 语言中 在stdio h头文件中定义了标准输入输出函数 printf 函数格式 printf 格式控制字符串 输出项列表 功能 将输出项按给定的控制格式输出 inta 3 printf d a d 格式控制字符串 不会输出到屏幕上 a 输出列表 输出结果是3 printf 函数中输出列表中有几个输出项 就一定有几个输出格式控制符 如 printf d d c f a b c aver 常见的格式控制符有 d c f d 整型格式控制符 c 字符格式控制符 f 实型格式控制符 2 scanf 函数格式 scanf 格式控制字符串 输入项列表 功能 将输入项按给定的控制格式输入 scanf d d 格式控制字符串 输入数据时 不用输入 d a 变量a的地址 输入时 直接输入3 等于把3赋给变量a scanf 函数可以一次给多个变量赋值 有几个变量就一定有几个格式控制符 如 inta b floats charstr scanf d d f main inta 30 b 90 floatc 1 0 aver 0 66558 charstr k printf n d d a b printf n f f c aver printf n c str 例1 main inta b floatc aver charstr scanf d d 例2 小结 数据类型各种类型的常量和变量的使用各种类型的变量的定义格式输入和格式输出函数作业 1 在main 的声明部分定义各种类型的变量 并给变量赋值 2 写一个程序从键上输入一个大写字符将其转换为小写字符输出 2 3运算符和表达式 本节重点掌握运算符的使用确定表达式的类型 值不同类型的数据的转换 2 3 1运算符 1 概念 连接运算数据的符号 1 运算符的目 运算符能连接运算对象的个数称为运算符的目 单目运算符 只能连接一个运算对象 如 ik a x 双目运算符 可以连接两个运算对象 ba b 三目运算符 可以连接三个运算对象 条件运算符 max a b a b 2 运算的优先级和结合方向 优先级 使用不同运算符进行运算时的先后顺序 结合方向 同一优先级运算符如果从左向右算是左结合性 如果从右向左算是右结合性 a b c 3 a b 3 25页运算符一览表 2 3 2表达式 1 C表达式 由 运算符和运算对象构成的式子 运算对象可以是常量 变量 函数或表达式 2 表达式的书写原则 1 C语言的表达式只能采用线性的形式书写 例如 应写成1 3 i j j j 应写成 a b c d e f 2 C语言的表达式只能使用C语言中合法的运算符和操作数 对有些操作必须调用库函数完成 而且运算符不能省略 例如 r2应写成3 14159 r r 应写成0 5 a b sin a x y 应写成fabs x y y 2X应写成y pow 2 x include 3 表达式在求值时 遵循以下规则 1 考虑优先级 例如 d a b c 先乘后加 2 考虑结合性 例如 a b c从左至右d a b 3从右至左 4 表达式的分类 C语言表达式种类很多 有多种分类方法 我们一般依据运算的特征将表达式分为 算术表达式 如a b 2 0 3 0 5 0 关系表达式 如x y 关系表达式可以认为是逻辑表达式的特殊情况 逻辑表达式 如 x 2 xb a b 逗号表达式 如a 2 b a a c sqrt b 5 表达式值的数据类型 1 每个表达式都有一个确定的值 因而有确定的数据类型 2 表达式的分类和数据类型取决与最后执行的运算符 如 34 5 7 6 为算术表达式 类型是double型 值35 534 5 7 6为关系表达式 类型是int型 值1 2 3 3算术运算符和算术表达式 1 算术运算符 加 减 乘 除 求余 如果是两个整型数相除 取整 如有一个为实数时 其意义就是实数除 结果为double型 5 2 25 0 2 0 2 5 取余数 只能对整数取余数 不能对浮点数取余数 运算结果的符号与左操作数相同 5 2 1 35 8 335 8 3 2 算术表达式 用算术运算符连接起来的式子是算术表达式 如 a ba ba b a b 10a b a b 3 sin x 算术表达式的运算结果是一个确定的数值 运算符 和 功能 是使变量的值自动加1或减1 格式 若inti 3 i i 相当于i i 1 i i 相当于i i 1前置自增或前置自减运算 表示先修改操作数使之增1或减1 然后取修改后的操作数的值作为表达式的值 后置自增或后置自减运算 表示在表达式中先取操作数的值 然后再将操作数值增1或减1 用这两个运算符连接起来的表达式是算术表达式 2 3 4自增运算符和自减运算符 对于变量本身 i 和 i值相同main inti 2 i printf d i 结果是 3反之 i 结果是3 对于参与运算的其他变量来说值是不同的 main intj i 2 j i printf i d nj d i j 结果i 3J 2 main inti j k i 3 j i k i printf i d j d k d n i j k 范例 输出结果 i 5 j 3 k 5 2 在表达式中如果有2个以上的 或 连写在一起 则编译器首先识别前面两个 或 为自增或自减操作符 例如 在使用自增或自减运算符时注意如下几个问题 1 自加或自减运算只能用于变量 不能用于常量或表达式 错误 25 i j 例如 i 只能理解为 i 因为 i 为表达式 表达式是不能自加自减的 i 3 j i printf d j 输出结果应为 3 而不是是 4 inta 1 b 5 c c a b c a b c a b 正确 c 6 错误 不是双目运算符 正确 a b结果6 3 表达式中包含有自增 自减运算时 容易出错 务请小心 如有 i 1 则 类似上面分析 结果应为3或6 i i i 的值为多少呢 版本不一样表达式结果不一样 有的系统计算时先对整个表达式扫描 i先自增3次 由1 2 3 4 如此计算结果为4 4 4 等于12 有的从左向右实现自加 结果为3 4 5 i i i 的值又是多少呢 使用c程序时 应避免这种歧义性 要使程序结果是9 inti 1 a b c a i b i c i printf d a b c 2 3 5赋值运算符和赋值表达式 1 赋值运算符 使用方法 变量 表达式功能 赋值运算时先计算右边表达式的值 然后将右边表达式的值赋给左边变量 并以此值作为整个赋值表达式的值 1 赋值运算的优先级为第14级 次低 如 inti i 3 5 2 先计算3 5 2 得到4 然后将4赋给i 变量名在左边 表达式在右边 3 5 2 i 2 理解以下两赋值表达式的含义 y 5 n 5 x y n n 1 3 赋值运算符具有 自右向左 的结合性 赋值运算符右边的表达式也可以是赋值表达式 例如 a b 5 等同于a b 5 相当于n 5 n 2 复合赋值运算算术复合赋值运算符 位复合赋值运算符 一般形式 变量 表达式 等价于 变量 变量 表达式 代表任一双目算术运算符或位运算符 复合赋值运算先进行所带运算 再进行赋值运算 复合赋值运算的优先级同赋值运算 例如 1 inta 3 a 2 等价于a a 2 2 floatx 1 2 y 2 1 y x 3 4 等价于y y x 3 4 3 inta 1 b 2 b a 1 等价于b b a a 1 2 3 5逻辑运算符与逻辑表达式 1 逻辑运算符 逻辑非 逻辑与 逻辑或2 优先级 和 运算符的优先级低于算术运算符和关系运算符 而高于赋值运算符 3 操作数是逻辑量 真 或 假 非0为真 a 5 8同为真时结果为真 56 0只要有一个为真时结果就为真4 逻辑表达式的运算结果仍然是逻辑量书34页 2 3 6关系运算符和关系表达式 1 关系运算符有 小于大于且等于 等于 不等于 的优先级相同 的优先级相同 前者的优先级高于后者 2 关系运算符的优先级低于算术运算 高于逻辑运算 4 自左向右结合 a b c假设a 5 b 3 c 2该表达式的值为05 操作数也可以是字符型数据如 a f 2 3 7条件运算符和条件表达式 一 条件运算符的语法形式 解释为 例如 x ab a c d c d相当于 a b a c d c d include stdio h main intx scanf d 例 判断整数的正负 2 3 8逗号运算符和逗号表达式 1 逗号运算是双目运算 一般形式如下 表达式1 表达式2 先计算表达式1 再计算表达式2 并以此作为整个表达式的值 如 a 2 a 6先计算a 2 再计算a 6 并以此作为整个表达式的值 表达式的值为12 2 逗号运算的优先级最低 结合自左向右 逗号表达式的更一般使用形式为 表达式1 表达式2 表达式3 表达式n 先计算表达式1 再计算表达式2 再计算表达式3 再计算表达式n的值 并以此作为整个表达式的值 如 表达式x a 3 6 x 6 a a x的值为 逗号运算又称顺序求值运算 6 main inti j k i 1 j 2 k 3 printf d d d n i j k main inti j k i 1 j 2 k 3 printf d d d n i j k 并不是任何地方出现的逗号都是逗号运算符 例如 printf d d d n i j k 是参数分隔符 如果写成 printf d d d n i j k j k 相当于 printf d d d n k j k 2 3 9求字节数运算符 运算符 sizeof格式 sizeof 数据类型标识符 或sizeof 表达式 求字节数运算是单目运算 操作数可以是类型名 也可以是变量 表达式 用以求得相应类型或数据所占的字节数 此运算的优先级与取地址运算优先级相同 例如 sizeof float 值为4 单精度类型占4个字节sizeof 2 3 值为2 算术表达式2 3是int型 2 3 10数据的类型转换 1 系统自动进行的类型转化由系统自动完成类型转换 转换的规则如下 intunsignedlon

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论