




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020 3 29 C语言 1 C语言与程序设计 2020 3 29 C语言 2 第二章C语言程序设计基础 2 1C语言的基本符号与数据类型2 2常量2 3变量2 4运算符与表达式2 5数据的输入 输出 2 1C语言的基本符号与数据类型 3 C语言使用的全部字符是ASCII码字符集 前32个及第127个为控制字符 完成规定的功能操作序号从32到126是文字字符 它们用于显示和打印 48 57数字 0 1 2 65 90大写英文字母 A B C 97 122小写英文字母 a b c 其他可打印的字符 空白字符 空格符 换行符 制表符 跳格 等 2 1 1C语言的基本符号 4 专用符号 等关键字 32个 auto break case等分隔符 主要有空格 逗号和分号标识符 用来标识变量名 符号常量名 函数名 数组名 类型名 文件名的有效字符序列 标识符的规定 以字母或下划线 开头 包含字母 数字和下划线的一个连续序列 其中不得有空白字符 标识符对大小写敏感不能与关键字同名 5 32关键字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile 6 例2 1以下四组用户定义标识符中 全部合法一组是 intk 2 001sizeofIf maxy m dDatetxtREALDr Tom3COM mainencludesin 2010 2 1 2C语言的数据类型 7 指定数据的取值范围 可施加的运算指明数据的存放方式及所占内存的大小 字节数 表2 3C语言数据类型 8 2020 3 29 C语言 9 第二章C语言程序设计基础 2 1C语言的基本符号与数据类型2 2常量2 3变量2 4运算符与表达式2 5数据的输入 输出 常量 程序运行时其值不能改变的量 即常数 10 2 2常量 整型常量 11 三种形式 十进制整数 由数字0 9和正负号表示 如386 567 65535 2010八进制整数 由数字0开头 后跟数字0 7表示 如016 0102 十六进制整数 由0 x开头 后跟0 9 a f A F表示 如0 x2A 0XA0 0XFFFF整型常量的类根据其值所在范围确定其数据类型在整常量后加字母l或L 认为它是longint型常量 实型常量 12 表示形式 小数形式 必须有小数点 如 1 85 426728 0 3450 0指数形式 aEn或aen e或E之前必须有数字 指数必须为整数 如1 234e 123 7e 278E3实型常量的类型默认double型在实型常量后加字母f或F 认为它是float型 符号常量 13 符号常量 用标识符代表常量定义格式 define符号常量常量一般用大写字母是宏定义预处理命令 不是C语句 作用 增加程序的易读性 提高程序的通用性和可维护性 例如 definePI3 14159 defineNUM35 defineNAME Liuyu 字符常量 14 定义 用单引号括起来的单个普通字符或转义字符 字符常量的值 该字符的ASCII码值转义字符 反斜线后面跟一个字符或一个代码值表示转义字符及其含义 字符串常量 15 定义 用双引号 括起来的字符序列存储 每个字符串尾自动加一个 0 作为字符串结束标志 hello CHINA CProgram 1020376 16 字符常量与字符串常量不同 2020 3 29 C语言 17 第二章C语言程序设计基础 2 1C语言的基本符号与数据类型2 2常量2 3变量2 4运算符与表达式2 5数据的输入 输出 2 3变量 一个变量应该有一个名字 在内存中占据一定的存储单元 在该存储单元中存放变量的值 注 区分变量名和变量值这两个不同的概念 18 变量名实际上是一个符号地址 在对程序编译连接时由系统给每一个变量名分配一个内存地址 在程序中从变量中取值 实际上是通过变量名找到相应的内存地址 从其存储单元中读取数据 定义 即其值可以变化的量 变量的定义和初始化 变量定义的一般格式 数据类型变量1 变量2 变量n 变量初始化 定义时赋初值数据类型变量1 常量1 变量2 常量2 变量n 常量n 19 inta intm n floatx y z charch inta 1 intm 3 n 2 floatx 0 3 y 36 z 123 charch a 先定义后使用 20 例2 2输入任意两个整数 输出它们的和 差 积 includevoidmain inta b printf Inputa b scanf d d 整型变量 整型数据在内存中的存放形式数据在内存中是以二进制形式存放的 比如 21 22 实际上 数值是以补码表示的 一个正数的补码和其原码的形式相同 下图就是用补码形式表示的 如果数值是负的 在内存中如何用补码形式表示呢 求负数补码的方法是 将该数的绝对值的二进制形式 按位取反再加1 实型变量 在内存中的存放形式 常用的微机系统中一个实型数据 float 在内存占4个字节 32位 与整型数据的存储方式不同 实型数据是按照指数形式存储的 例如 123 5678在内在中存储为 23 24 例2 4通过库函数sizeof获得float double和longdouble三种数据类型所占的字节数 includesvoidmain printf float d n sizeof float printf double d n sizeof double printf longdouble d n sizeof longdouble 实型数据的舍入误差 由于实型变量是用有限的存储单元存储的 因此能提供的有效数字总是有限的 在有效位以外的数字将被舍去 由此可能会产生一些误差 单精度保证7位有效数学 双精度15位 25 不要试图用一个实数去精确表示一个大整数一般不要进行 相等 判断 而是判断两数差的绝对值小于某一个很小的数时则认为两者相等避免直接将一个很大的实数与一个很小的实数相加或相减 否则会 丢失 这个很小的实数根据实际要求选择单精度或双精度 26 例2 5实数的误差 includesvoidmain floata a 123456 789e5 printf a f n a 字符变量 字符型变量用来存放字符常量 且只能存放一个字符将一个字符常量放到一个字符变量中 实际上并不是把该字符本身放到内存单元中去 而是将该字符的相应的ASCII代码放到存储单元中 27 例如 字符 a 的ASCII代码为97 b 为98 在内存中变量c1 c2的值 见右图 a 所示 实际上是以二进制形式存放的 见右图 b 所示 字符变量举例 在C语言中没有专门的字符串变量 字符串常量如果要存放在字符串变量中是通过字符数组的方式实现的 见第四章 28 charc1 c2 c3 c4 c5 c c1 a c2 a c3 abc c4 107 c5 6 c6 97 29 例2 6字符型变量和整型变量可以相互赋值 includesmain intk charch k b ch 66 printf d c n k k printf d c n ch ch 2020 3 29 C语言 30 第二章C语言程序设计基础 2 1C语言的基本符号与数据类型2 2常量2 3变量2 4运算符与表达式2 5数据的输入 输出 31 注意 优先级结合性 2 4运算符与表达式 基本的算术运算符 加法运算符 或正值运算符 如 3 5 3 需要说明的是 两个整数减法运算符 或负值运算符 如 5 2 3 乘法运算符 如 3 5 除法运算符 如 5 3 模运算符 或称求余运算符 两侧均应为整型数据 如 7 4的值为3 除法运算符 的运算结果与运算对象有关 当除数和被除数均为整数时 除的结果也是整数 如果除数或被除数中有一个为负值 则舍入的方向是不固定的 多数机器采取 向零取整 的方法 如 5 3 1 取整后向零靠拢 32 算术表达式和运算符的优先级与结合性 算术表达式 用算术运算符和括号将运算对象 也称操作数 连接起来的 符合C语法规则的式子 运算对象包括常量 变量 函数等 例如 a b c是一个合法的C算术表达式 33 C规定了各种运算符的优先级 上述表达式中 乘号优先于减号 因此 相当于a b c 如果在一个运算对象两侧的运算符的优先级别相同 如 a b c 则按规定的 结合方向 处理 C规定了各种运算符的结合方向 结合性 算术运算符的结合方向为 自左至右 即先左后右 因此b先与减号结合 执行a b的运算 再执行加c的运算 34 自增 自减运算符 作用是使变量的值增1或减1 i i 在使用i之前 先使i的值加 减 1 i i 在使用i之后 使i的值加 减 1 如果i的原值等于3 则执行下面的赋值语句 j i j的值为4j i j的值为3 35 自增 自减运算符 注意 自增运算符 和自减运算符 只能用于变量 而不能用于常量或表达式 如5 或 a b 都是不合法的 和 结合方向是 自右至左 需知 符号运算符和 运算符同优先级 其结合方向也为 自右至左 例 i 是先用i的原值3加上负号输出 3 再对i加1 不要认为先加完1后再加负号 输出 4 这是不对的 36 37 includevoidmain inti 3 printf d n i printf d n i i 3 printf d n i printf d n i 运行结果 3444 例2 7分析下面程序的运行结果 38 includevoidmain inti 5 printf d n i i i printf d n i i 5 printf d n i i i printf d n i 运行结果 158228 例2 8分析下面程序的运行结果 关系运算符和表达式 关系运算符种类 结合方向 自左向右优先级别 低于算术运算符 高于赋值运算符 39 例x a b等价于x a b x a b等价于x a b x y z等价于x y z 关系表达式用关系运算符将2个表达式连接起来的式子称为关系表达式 这2个表达式可以是算术表达式 关系表达式 逻辑表达式 赋值表达式或字符表达式 关系表达式的值是一个逻辑值 即真1或假0 注意 在判断时只要非0就表示真 正确的关系表达式如 40 a b c da b c dx d x 2 b a 41 例2 9以下选项中 当x为大于1的奇数时 值为0的表达式是 x 2 1x 2x 2 0 x 2 0 逻辑运算符和逻辑表达式 逻辑运算符种类 逻辑运算真值表 42 逻辑运算符和逻辑表达式 43 优先级 结合方向 例2 10已知字母A的ASCII码值为65 若变量k为char型 以下不能正确判断出k值为大写字母的表达式是 k A k A k a k 32 A k 91 赋值运算符 由赋值运算符 将一个变量和一个表达式连接起来的式子称为 赋值表达式 它的一般形式为 变量标识符 表达式作用 将一个数据 常量或表达式 赋给一个变量如 a 5 x 3 a 2 44 复合赋值运算符种类 含义 exp1op exp2 exp1 exp1opexp2 45 例2 11分析下面程序的运行结果 includevoidmain intn 2 n n n n printf n d n n 运行结果 n 4 表达式中数据类型的转换 C语言规定 相同类型的数据可以直接进行运算 其运算结果还是原来的数据类型 而不同类型的数据运算 则需先将这些数据转换成同一类型 然后再进行运算 转换的方法有两种 自动转换 隐式转换 强制转换 46 自动转换 隐式转换 由编译系统自动完成 遵循以下规则 参与运算的数据类型不同时 则先转换成同一类型 然后再进行运算转换按数据长度增加的方向进行 以保证精度不至于降低所有的实数运算都是以双精度 double型 进行的char型和short型参与运算时必须先转换成int型如果赋值号两边的数据类型不同 赋值号 右边表达式值的类型将转换为左边变量的类型 47 intx floaty 5 718 x y x 5 数据丢失 慎用 强制转换 其一般形式为 类型名 表达式 如 int 3 5 2 float 5 7 double 6表达式应该用括号括起来 如果写成 int x y则只将x转换成整型 然后与y相加 在强制类型转换时 得到一个所需类型的中间变量 原来变量的类型未发生变化 48 例如intn floatx 5 85 n int x 3 2020 3 29 C语言 49 第二章C语言程序设计基础 2 1C语言的基本符号与数据类型2 2常量2 3变量2 4运算符与表达式2 5数据的输入 输出 2 5数据的输入 输出 输出 从计算机向外部输出设备输出数据 输入 从外部向输入设备输入数据 C语言本身不提供输入输出语句 输入输出操作是由C语言的库函数来实现的 在使用C语言库函数时 要用预处理命令 include 将有关的 头文件 包括到用户源文件中 例如 调用标准输入输出库函数时 文件开头应用以下命令 include或 include stdio h 50 四个函数 字符输出函数 putchar 字符输入函数 getchar 格式输出函数 printf 格式输入函数 scanf 51 字符输出函数 putchar 作用 向终端输出一个字符 例如 putchar c c可以是字符型变量或整型变量 相应常量或者转义字符 52 chara A intk 65 putchar a putchar A putchar k putchar 65 putchar 101 以上都输出大写字母A 字符输入函数 getchar 作用 从终端 或系统隐含指定的输入设备 输入一个字符 getchar函数没有参数 函数的值就是从输入设备得到的字符 例2 12输入并输出一个字符 53 includemain charc c getchar putchar c 注意 getchar 只能接受一个字符 getchar函数得到的字符可以赋给一个字符变量或整型变量 也可以不赋给任何变量 作为表达式的一部分 putchar getchar 格式输出函数 printf 作用 向终端输出若干个任意类型的数据 一般格式为 printf 格式控制 输出表列 格式控制 是用双引号括起来的字符串 也称 转换控制字符串 它包含 格式说明 由 和格式字符组成 如 8 3f等 普通字符 即需要原样输出的字符 转义字符 按转义字符的含义输出 例如 n 表示换行 b 表示退格输出表列 需要输出的一些数据 可以是表达式 54 格式输出函数 printf 由于printf是函数 因此 格式控制 字符串和 输出表列 实际上都是函数的参数 printf 参数1 参数2 参数3 参数n printf函数的功能是将参数2 参数n按参数1给定的格式输出 55 格式字符 对不同类型的数据用不同的格式字符 常用的有以下几种格式字符 个 d或i o x或X u c s f e或E g或G另外 在 和格式字符之间可以有修饰符 l或L m n m n 56 格式修饰符 57 58 例2 13使用不同格式字符的输出 includevoidmain inta 88 b 89 printf d d n a b printf d d n a b printf c c n a b printf a d b d n a b 运行结果 888988 89X YA 88 b 89 59 例2 14不同类型数据在不同格式字符控制下的输出 includevoidmain inta 15 doublef 123 456 printf d 6d o x n a a a a printf f 10f 10 2f 10 2f 2f n f f f f f printf 8s 3s 7 2s 4s 5 3s 4s n CHINA CHINA CHINA CHINA CHINA 60 例2 15printf语句的输出列表中输出项求值顺序分析 includevoidmain inti 2 printf d d n i i i 2 print
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025昌盛订购合同
- 金属铬还原工5S管理考核试卷及答案
- 异戊橡胶装置操作工特殊工艺考核试卷及答案
- 报刊业务员知识考核试卷及答案
- 急救理论知识练习题(含答案)
- 脂肪醇生产操作工5S管理考核试卷及答案
- 露天采矿挖掘机司机特殊工艺考核试卷及答案
- 蒸发浓缩结晶工晋升考核试卷及答案
- 汽车铸造生产线操作工基础考核试卷及答案
- 巨人与春天课件
- 大学信息与网络安全保密管理办法
- 李中莹 亲子关系全面技巧
- 音乐《上学歌》课件
- PMC部门运作流程对下达的生产计划任务合理性负责
- 防止电力电力建设施工安全事故三十项重点要求考试题
- 绿色校园创建资料
- 污水处理池 (有限空间)作业安全告知牌及警示标志
- 六三制新青岛版四年级科学上册第一单元《动物王国》全部课件(一共5课时)
- OpenVPX标准和架构精选课件
- 历史八年级上册电子课件:第2课 第二次鸦片战争
- 消防安全培训及应急演练主题教育课件PPT模板宣传PPT动态PPT
评论
0/150
提交评论