c语言第2版(第2章基本语句).ppt_第1页
c语言第2版(第2章基本语句).ppt_第2页
c语言第2版(第2章基本语句).ppt_第3页
c语言第2版(第2章基本语句).ppt_第4页
c语言第2版(第2章基本语句).ppt_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计教程 第2版 第2章基本的程序语句 09年2月 本章主要内容1 用二进制表示的数2 基本数据类型及取值范围3 标识符 变量和常量4 基本运算符 表达式及运算的优先级5 标准输入 输出函数简介6 程序范例 第2章引言 1 整型数的二进制表示 整型数分为有符号的和无符号的两种 有符号的整型数的正负号由字节的最高位来表示 0表示正数 1表示负数 整型数占用的字节数可为8位 16位或者32位 整型数的取值范围 2 1用二进制表示的数 2 浮点数的二进制表示 浮点数分成单精度浮点数和双精度浮点数 单精度浮点数占32位 4个字节 双精度浮点数占64位 8个字节 浮点型数据的一般表达式 1 S 2e me是实际的阶码值 代表浮点数的取值范围 m是尾数 代表浮点数的精度 2 1用二进制表示的数 1 单精度浮点型数据的字节分配空间 2 1用二进制表示的数 S代表符号位 占1位 E称为 移码 占8位 E的取值范围为0 255 E 127 e因此 e的取值范围为 127 128 M代表有效位数或称为 小数 m2 1 M 2 2 双精度浮点型数据的字节分配空间 2 1用二进制表示的数 S代表符号位 占1位 E称为 移码 占11位 E的取值范围为0 2047 E 1023 e因此 e的取值范围为 1023 1024 M代表有效位数或称为 小数 m2 1 M 2 浮点型数据的取值范围 2 1用二进制表示的数 1 C语言提供5种基本数据类型 1 字符型 用char表示 2 整数型 用int表示 3 单精度实数型 用float表示 4 双精度实数型 用double表示 5 空类型 用void表示 对整数型 有四种修饰 signed 有符号 unsigned 无符号 long 长型 short 短型 数据类型决定了数据的大小 数据可执行的操作以及数据的取值范围 2 2基本数据类型及取值范围 数据类型的长度和取值范围会随着机器的CPU类型和编译器的不同而不同 2 2基本数据类型及取值范围 例1 验证数据类型的字节长度 见 例2 1 所示的程序 example2 1 c 不同字节长度的数据类型和取值范围 见表2 5和表2 6 2 2基本数据类型及取值范围 2 3 1标识符标识符是对变量名 函数名 标号和其他各种用户定义的对象命名 建议取有实际意义的标识符来命名 标识符的第1个字符必须是字母或下划线 标识符的长度可以是一个或多个字符 最长不允许超过32个字符 例如 score number12 student name等均为正确的标识符 8times price tea low valume等均不为正确的标识符 注意 1 标识符区分大小写 score Score SCORE代表三个不同的标识符 2 标识符不能和C语言的关键字相同 3 标识符不能和用户自定义的函数或C语言库函数同名 2 3标识符 变量和常量 2 3 2变量和常量1 变量其值可以改变的量称为变量 变量的两个要素 标识符 名字 和值 C语言规定 变量必须在使用之前定义 变量定义的一般形式是 必须是有效的C数据类型 如 int float等 类型名规定了变量的存储空间和取值范围 可以由一个或多个由逗号分隔的多个标识符名构成 2 3标识符 变量和常量 如 inti j number unsignedintmax min floathigh value price doublelenth total wieight 思考 上面各种变量的类型和他们的取值范围 2 3标识符 变量和常量 例2 运行下面的程序 了解变量的取值范围和C语言的特性 example2 2 c变量的取值范围测试 includemain inta 32766 b 32766 unsignedm 6553 floatt 3 4e 37 printf a d n a printf m u n m printf t e n t a a 4 2 3标识符 变量和常量 b b 6 m m 10 10 t t 10 printf Afterchange n printf a 4 d n a printf b 6 d n b printf m 10 10 u n m printf t 10 e n t 2 常量 常量的值是不可变的 在C语言中 有整型常量 实型常量 字符常量 字符串常量 和枚举常量等 1 整型常量 可采用十进制 八进制 十六进制来表示整型常量 八进制数的前面用数字0开头 十六进制数前面用数字0和字母X开头 0 x或0X 整型常量的表示见表2 9 2 3标识符 变量和常量 例3 了解整型常量的不同进制表示法 example2 3 c includemain printf 十六进制0 x80的十进制值为 d n 0 x80 printf 八进制0200的十进制值为 d n 0200 printf 十进制128的十进制值为 d n 128 printf 十进制128的十六进制值为 x n 128 printf 十进制128的八进制值为 o n 128 2 3标识符 变量和常量 2 实型常量 实型常量的两种表示法 浮点计数法和科学计数法 例如 231 467 36E 74 58E5 0 0945 对太大或太小的数 通常是采用科学计数法 如上面的7 36E 7 4 58E5 2 3标识符 变量和常量 例4 了解实型常量的两种表示法 example2 4 c 浮点计数法 科学计数法 includemain printf 123 4456的浮点数表示 6f n 123 456 printf 1 23456E2的浮点数表示 6f n 1 23456e2 printf 12345 6E 2的浮点数表示 6f n 12345 6e 2 printf 12345 6的科学计数法表示 E n 12345 6 2 3标识符 变量和常量 3 字符常量 字符常量是由一对单引号括起来的单个字符 如 A S 9 等均为字符常量 注1 单引号只起定界作用 并不代表字符 注2 单引号 和反斜杠 本身作为字符时要通过转义字符 如 和 分别代表单个字符单引号 和反斜杠 2 3标识符 变量和常量 在C语言中 字符是按其所对应的ASCII的值来存储的 一个字符占一个字节 部分字符所对应ASCII码值如下 2 3标识符 变量和常量 字符和与之对应的ASCII详见附录B 注意 数字3和字符 3 的区别 2 3标识符 变量和常量 字符也可以参与运算 如 A 6 运算结果为71 对应的字符为H 8 7 运算结果为49 对应的字符为1 y 32 运算结果为89 对应的字符为Y 例5 了解字符常量与其顺序值的关系 example2 5 c字符常量与其顺序值的关系 includemain printf d c n A A printf d c n A 5 A 5 printf d c n A 70 A 70 2 3标识符 变量和常量 例5 了解字符常量与其顺序值的关系 example2 5 c字符常量与其顺序值的关系 includemain printf d c n A A printf d c n A 5 A 5 printf d c n A 70 A 70 2 3标识符 变量和常量 程序运行结果 65 A70 F135 4 字符串常量 字符串常量是指用一对双引号括起来的一串字符 如 world TRUEorFLASE 8765431 0037 T 均为字符串常量 注 双引号 和反斜杠 本身作为字符串时要通过转义字符 如 和 分别代表字符串 和反斜杠 2 3标识符 变量和常量 注意字符常量与字符串常量的区别 在C语言中 字符串常量在内存中存储时 系统自动在字符串的末尾加一个 串结束标志 0该结束标志的ASC 码值为0 字符为空NULL 因此 长度为n个字符的字符串常量 在内存中占有n 1个字节的存储空间 如 字符串 World 共5个字符 需占用6个字节 其存储形式为 2 3标识符 变量和常量 5 转义字符 转义字符用反斜杠 后面跟一个字符或一个八进制或十六进制数表示 如 a 0 n等 代表ASCII字符中不可打印的控制字符和特定功能的字符 表示特殊字符 如 单引号 双引号 和反斜杠 等 常用的转义字符见表2 12 2 3标识符 变量和常量 注意 转义字符中的字母只能是小写字母 每个转义字符只能看作一个字符 表2 12中的 r v和 f对屏幕输出不起作用 但会在控制打印机输出执行时响应其操作 在程序中 使用不可打印字符时 通常用转义字符表示 2 3标识符 变量和常量 例6 了解转义字符的作用 example2 6 c了解转义字符的作用 includemain printf a 发出铃声 printf Thisisatest n printf Ready printf bBackspace n 往左退一格 printf tHorizontaltab n 往右进八格 printf n 输出 printf n 输出 printf n 输出 printf n 输出 printf 101 n 输出八进制值101所对应的字符 printf x41 n 输出十六进制值41所对应的字符 运行程序 观察程序的运行结果 程序运行结果 Thisisatest Ready Backspace Horizontaltab AA 2 3标识符 变量和常量 6 符号常量 将程序中的常量定义为一个标识符 称为符号常量 符号常量在使用前必须先定义 定义的形式是 define如 definePI3 1415926 defineTRUE1 defineFALSE0其中PI TRUE FLASE均为符号常量 其值分别为3 1415926 1 0 注1 define是C语言的预处理命令 注2 习惯上符号常量用大写英文字母表示 2 3标识符 变量和常量 例7 了解符号常量的使用 example2 7 c include defineWHO Iamastudent defineHOW ThatisFine definePI3 1415926main printf s n WHO printf s n HOW printf f n PI 2 3标识符 变量和常量 程序运行结果 Iamastudent ThatisFine 3 141593 C语言的基本表达式是由操作数和操作符组成 操作数通常由变量或常量表示 操作符由各种运算符表示 一个基本表达式也可以作为操作数来构成复杂表达式 构成基本表达式的常用运算符有 1 算术运算符 2 关系运算符 3 逻辑运算符 4 赋值运算符 另外 条件运算符 自反赋值运算符 逗号运算符 指针运算符 位运算符等均可构成基本表达式 2 4基本运算符 表达式及运算的优先级 2 4 1算术运算符及算术表达式 算术运算符主要用于完成变量的算术运算 如 加 减 乘 除等 各运算符及其作用如下 2 4基本运算符 表达式及运算的优先级 注 此处规定优先级的数字越大 优先级越高 例8 阅读下面的程序 了解由算术运算符组成的表达式 example2 8 c includemain inta b c d1 d2 d3 d4 doublex y z1 z2 z3 a 8 b 3 c 10 2 4基本运算符 表达式及运算的优先级 d1 a b c b a b c a 复杂表达式1 d2 a b c b a b c a 复杂表达式2 d3 a b d4 c b printf d1 d d2 d d3 d d4 d n d1 d2 d3 d4 x 3 2 y 2 4 z1 x y x y 复杂表达式3 z2 x y x y 复杂表达式4 z3 y b printf z1 f z2 f z3 f n z1 z2 z3 程序运行结果 d1 62 d2 134 d3 2 d4 1z1 1 550000 z2 7 000000 z3 0 800000 1 分析例8程序中存在的问题 2 修改例8的程序 提高程序的可读性 3 运行例2 9的程序 观察表达式及程序的运行结果 2 4基本运算符 表达式及运算的优先级 思考 关于前置 和后置 的作用 前置 或前置 表达式 先将变量的值加1 再使用变量 先将变量的值减1 再使用变量 后置 或后置 表达式 先使用变量 再将变量的值加1 先使用变量 再将变量的值减1 2 4基本运算符 表达式及运算的优先级 例9 阅读程序example2 10 c 了解前置 和后置 的作用 2 4基本运算符 表达式及运算的优先级 1 运算符适合于什么数据类型 2 表达式 a和a 有什么区别 3 表达式b a 还可以怎样表达 4 能否用于常量表达式 思考 注意 运算符在不同环境下的区别 例10 阅读程序example2 11 c 了解前置 和后置 作为函数参数时的作用 2 4基本运算符 表达式及运算的优先级 1 为什么程序的运行结果会有不同 2 程序设计应遵循什么原则 3 修改程序 使其具有更好的可读性 4 分析修改后的程序 example2 12 c 思考 不同形式的程序表达式的含义 比较程序example2 13 c和example2 13a c 2 4基本运算符 表达式及运算的优先级 注意 2 4 2关系运算符及关系表达式 关系运算符的作用 用于条件判断的表达 关系运算符及其含义和优先级如下 2 4基本运算符 表达式及运算的优先级 关系表达式的结果只有两个 1 真 值为1 2 假 值为0 假如有 inta b a 23 0 b 23 9 18 6 则 变量a的值为1 变量b的值为0 2 4基本运算符 表达式及运算的优先级 2 4 3逻辑运算符及逻辑表达式 逻辑运算符的作用 用于判断条件中的逻辑关系 逻辑运算符及其含义和优先级如下 2 4基本运算符 表达式及运算的优先级 逻辑表达式的结果 真 值为1 假 值为0 注 非零值均为真 逻辑运算规则 2 4基本运算符 表达式及运算的优先级 1 由关系运算符和逻辑运算符可组成复杂逻辑表达式 如 a b c d a 5 2 对于复杂逻辑表达式 要注意C语言的特殊语法规则 2 4基本运算符 表达式及运算的优先级 特别提示 1 表达式1 表达式2 语法规则若 表达式1 的值为真 则 表达式1 表达式2 的结果就为真 特点 系统对 表达式2 不会进行计算 但会检查其语法错误 结论 与 表达式2 的结果无关 例如 inta 4 b 8 c c a b a printf c d a d n c a 程序运行结果为 c 1 a 4 2 4基本运算符 表达式及运算的优先级 2 表达式1 程序运行结果为 c 0 a 4 2 4基本运算符 表达式及运算的优先级 例11 阅读下面的程序 分析复杂逻辑表达式运算的语法规则 example2 14 c includemain inta 4 b 8 c 5 intd1 d2 d3 d4 d1 ab 表达式 1 printf d1 d a d b d c d n d1 a b c d2 a b 1 分析程序的运行结果 2 如果有 inta 4 b 8 c 5 intd1 d2 d3 d4 d4 ab 则 d4 a b c的值分别为多少 提示 要避免含义不明确的表达式 2 4基本运算符 表达式及运算的优先级 思考 2 4 4位运算符及表达式 位运算的作用 直接对变量的二进制按位进行操作 注意 位运算只适合于整型和字符型变量 位运算符及其含义和优先级如下 2 4基本运算符 表达式及运算的优先级 位运算规则 2 4基本运算符 表达式及运算的优先级 2 4 5条件运算符 条件运算符由 和 组成 条件表达式的一般形式 表达式1 表达式2 表达式3 条件表达式的语法规则 当表达式1的值为1 真 时 其结果为表达式2的值 当表达式1的值为0 假 时 其结果为表达式3的值 注意 表达式1通常是关系表达式或逻辑表达式 也可以是其他表达式 条件运算符又称为三目运算符 三目 指的是操作数的个数有3个 2 4基本运算符 表达式及运算的优先级 例12 阅读下面的程序 了解三目运算符组成的表达式计算规则 example2 15 c了解三目运算符的语法规则 include includemain inta 3 b 5 c c a b a b a b printf Themaxvalueofaandbis d n c a 6 b 2 c a b a b a b printf Themaxvalueofaandbis d n c 请分析程序的运行结果 2 4基本运算符 表达式及运算的优先级 2 4 6逗号表达式 由逗号运算符 将两个表达式连接起来 表达式1 表达式2 逗号表达式的语法规则 先计算表达式1 再计算表达式2 最后结果为表达式2的结果 2 4基本运算符 表达式及运算的优先级 例13 了解逗号表达式的语法规则 example2 16 c了解逗号表达式 includemain inta b a 3 5 a 4 b 3 5 a 4 printf a d nb d n a b 请分析程序的运算结果 2 4基本运算符 表达式及运算的优先级 1 逗号表达式可以扩充到具有n个表达式的情况 表达式1 表达式2 表达式n 整个逗号表达式的结果为表达式n的值 2 通常是用逗号表达式来分别求逗号表达式内各表达式的值 并不是为了求整个逗号表达式的值 3 变量定义中出现的逗号和在函数参数表中出现的逗号不构成逗号表达式 4 逗号表达式有可能降低程序的可读性 请谨慎使用 2 4基本运算符 表达式及运算的优先级 几点说明 请阅读程序example2 17 c 进一步了解逗号表达式 2 4 7数据类型的转换 C语言允许表达式中混合有不同类型的常量和变量 1 系统自动转换 容易出现意外结果 假设有 floatt 3 7 s inta 3 b s a t b a t 结果为 s 6 7 b 6 原因 数据类型不一致 有可能产生数据丢失 应避免出现数据类型不一致的表达式 2 4基本运算符 表达式及运算的优先级 2 强制转换数据类型 强制转换表达式 数据类型符 表达式 或 数据类型符 变量 强制转换语法规则 将表达式或变量的值临时转换成圆括号内指定的数据类型 但不改变变量原来的数据类型 假设有 inta floatt a 15 t float a 30 结果为 t 0 5 若表达式为t a 30 则结果为 t 0 2 4基本运算符 表达式及运算的优先级 2 4 8复杂表达式的计算顺序 C语言共有各类运算符47个 按优先级可分为11个类别共15个优先级 运算符的优先级与运算方向 表2 10 2 4基本运算符 表达式及运算的优先级 例13 阅读程序 分析复杂表达式的计算顺序 example2 18 c复杂表达式的计算顺序 includemain inta 10 b 15 c 14 temp temp a 6 b 请分析表达式 和表达式 的结果 指出程序的不足 修改程序 2 4基本运算符 表达式及运算的优先级 2 4 9C语言的基本语句结构 C语言的语句可分为四大类 1 表达式语句2 复合语句3 控制语句4 转向控制语句 2 4基本运算符 表达式及运算的优先级 1 表达式语句 一个独立的语句就是表达式语句 如 a 3 b c 2 i j b a 3 1 0 2 复合语句 由一对花括号 将多个表达式语句括起来所组成 如 a b c x y a prinft a d x d n a x 3 控制语句 由控制结构组成的语句 有5种控制语句 1 选择 分支 语句 if else 2 多分支语句 switch 3 for循环语句 for 4 while循环 while 5 do while循环 do while 4 转向控制语句 由系统提供的关键字构成 用于改变程序的流程 有4种转向控制语句 1 break 可用于switch语句和循环的语句 2 continue 只适用于循环语句 3 return 用在函数的结束处 4 goto 可用于程序的任何地方 但不提倡使用 C语言的输入 输出的操作是通过调用系统函数来实现 常用的标准输入 输出函数有如下几种 1 格式化输入 输出函数 scanf printf 2 字符输入 输出函数 getc putc 3 字符输入 输出函数 getch putch 4 字符输入 输出函数 getchar putchar 5 字符串输入 输出函数 gets puts 不同的函数在功能上有所不同 使用时应根据具体的要求 选择合适的输入 输出函数 2 5标准输入 输出函数简介 2 5 1格式化输出函数printf 函数printf 的一般形式为 printf 控制字符串 输出项列表 函数printf 的作用 按控制字符串指定的格式 向标准输出设备 显示器 输出指定的输出项列表的值 注意 可以是常量 变量 表达式 当有多个输出项时 各项之间用逗号分隔 中的个数 类型必须与中格式字符的个数 类型相一致 必须用双引号将括起 可由格式说明和普通字符两部分组成 2 5标准输入 输出函数简介 1 格式说明 格式说明的一般格式为 格式字符规定了对应输出项的输出格式 注 在格式字符前面 还可用字母1和h 大小写均可 来说明是用long型或short型格式输出数据 常用格式字符如表2 21所示 如 d c f Lf s等均为正确的输出格式说明 2 5标准输入 输出函数简介 修饰符是可选的 用于确定数据输出的宽度 精度 小数位数 对齐方式等 若缺省修饰符 按系统默认设定输出 修饰符的主要类型 1 字段宽度修饰符 用数字修饰输出字符占用的宽度 规则见表2 22 如 3d 4c 5 2f 8Lf 6s等均为正确的输出格式说明 2 对齐方式修饰符 默认输出方式为右对齐方式 在 后面加上一个负号 可使数据的输出方式改为左对齐的方式 如 3d 4c 5 2f 8Lf 6s等均为正确的输出格式说明 2 5标准输入 输出函数简介 2 普通字符 普通字符包括可打印字符和转义字符 可打印字符按原样显示在屏幕上 起说明作用 转义字符是一些不可显示的控制字符 用于产生特殊的输出效果 如 s 4d t 7 4f n t lu n 为正确的输出格式 阅读程序 例2 19 例2 20 例2 21 了解格式输出的方法 2 5标准输入 输出函数简介 2 5 2格式化输入函数scanf 函数scanf 的一般形式为 scanf 控制字符串 输入项列表 函数scanf 的作用 按控制字符串指定的格式 从键盘输入数据 并将输入的值赋给输入项列表相对应的变量 注意 规定了数据的类型 其内容也可由格式说明和普通字符两部分组成 注 不提倡加普通字符 则由一个或多个变量地址组成 各变量地址之间用逗号 分隔 如有 inta b 则 a b就可以是一个 2 5标准输入 输出函数简介 输入数据时 可用空格符 表格符 tab 和换行符 enter 作为每个变量输入完毕的标志 以换行符作为数据输入的结束 1 格式说明 格式说明规定了输入项中各变量的数据类型 格式说明的一般形式 注意 格式字符的表示方法与printf 中的相同 各格式字符及其意义如表2 23所示 2 5标准输入 输出函数简介 修饰符是可选的 主要有下面几种 1 字段宽度 字段宽度用数字表示 其作用是限定输入的字符宽度 如 scanf 3d 若输入为 1234 12345 则系统会将1234赋给变量a 将12345的前3位的值123赋给变量b 输出结果为 a 1234 b 123 2 5标准输入 输出函数简介 2 l和h 字母 L l 和 H h 分别表示输入数据类型的长短 L l 可表示长整型 双精度浮点型 H h 可表示短整型数 如 scanf 10ld hd lf 若输入为 112233 则结果为 x 11 y 33 z 0 z保持原来的值不变 22被跳过 没有赋给任何变量 2 5标准输入 输出函数简介 2 普通字符 普通字符包括空白字符 转义字符和可见字符 注意 如果有普通字符 则输入时需要原样输入 特别提示 在输入格式的修饰符中 不建议使用普通字符 普通字符的类型 1 空白字符 空格符 制表符或换行符都是空白字符 但它们的ASCII值是不一样的 空白字符的作用 对输入的数据起分离作用 2 5标准输入 输出函数简介 若输入的数据中含有字符型的数据时 需要作一些技术处理 否则有可能出错 例如 inta charch scanf d c 若输入为 64 q 则结果为 ch a 64 注 结果并不是ch q a 64思考 怎样改进 可使得结果为 ch q a 64 2 5标准输入 输出函数简介 注意 2 转义字符 n t 转义字符属空白字符 对输入的数据不产生影响 3 可见字符 可见字符是指ASCII码中所有通过键盘输入的可见字符 如数字 字母 其他符号等 注意 若输入格式中含有可见字符 则实际输入要 原样输入 假如有 inta b charch scanf d d c 若输入为 12 34 q 则结果为 a 12 b 34 ch q思考 若输入为 12 34 q 则结果会怎样 2 5标准输入 输出函数简介 1 要注意数值型数据和字符型数据的取值特点 若要同时输入这两种类型的数据 可采取先输入字符型数据 后输入数值型数据 以减少错误的发生 2 建议在scanf 语句中不要加入可见字符 避免错误的发生 2 5标准输入 输出函数简介 特别提醒 2 5 3字符输出函数C语言专

温馨提示

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

评论

0/150

提交评论